Python EXCEL 半自动化切分数据集

Excel VBA与微信自动化:从数据整理到消息发送的实用方案 办公自动化是提升工作效率的关键技术,其核心在于通过脚本或程序替代重复性人工操作。在数据处理领域,Excel VBA作为经典的自动化工具,能够高效处理表格数据,但受限于其运行环境,无法直接操控第三方应用如微信。UI自动化技术通过模拟用户操作,为跨应用协作提供了可能,但面临界面变化和稳定性挑战。结合VBA的数据处理优势与外部脚本的界面操控能力,可以构建半自动或全自动流程,在客户通知、订单跟进等场景中显著减少人工干预。本文聚焦于如何利用VBA准备消息内容,并通过剪贴板或调用Python脚本等热词技术,实现Exce 阅读详情

核心逻辑

整个过程可以分为四个阶段:数据提取与转化 -> 向量化拼接 -> 去重与ID生成 -> 映射表输出。


详细步骤思路

1. 数据提取与类型同化 (Data Preparation)

为了利用 Numpy 的字符串操作,首先需要将 DataFrame 的数据剥离出来。

  • 操作思路:不要在 DataFrame 层面操作。直接读取两列目标数据,将其转换为 Numpy 数组(Array)。
  • 关键点:确保两列数据都被强制转换为 String (字符串) 类型。Numpy 处理字符串拼接时,如果混有数字类型会报错或产生非预期结果。
2. 向量化逐行拼接 (Vectorized String Concatenation)

这是提速的核心。不要使用 Python 的 for 循环或 Pandas 的 map/apply。

  • 操作思路:
  1. 使用 Numpy 的字符模块 np.char。
  2. 调用 np.char.add(数组1, 数组2) 进行拼接。
  3. 安全建议:为了防止数据歧义(例如:“A”+“BC” 和 “AB”+“C” 拼接后都是 “ABC”),建议在拼接时中间插入一个特殊分隔符(如下划线 _ 或竖线 |)。
  4. 即:np.char.add(数组1, 分隔符) -> 得到中间结果 -> 再与 数组2 拼接。
3. 高效去重与索引生成 (Deduplication & Indexing)

拼接后的数组包含所有行的数据,现在需要提取唯一值(Unique)作为你的“切分索引”。

  • 操作思路:
  1. 使用 np.unique() 函数作用于拼接后的数组。
  2. 该函数会返回一个排好序的、无重复的唯一组合数组。
  3. 生成新列(重命名 ID):你可以直接利用 np.unique 返回的数组下标作为 ID,或者根据业务逻辑为每一个 Unique Key 生成一个 UUID 或哈希值。这将作为你“组合重命名”的新列。
4. 还原原始值与构建输出 (Mapping & Export)

你不仅需要拼接后的 Key,还需要它对应的原始两列值,以便生成 CSV。

  • 操作思路:
  1. 逆向拆分(可选但慢):如果刚才用了分隔符,可以拆分字符串。
  2. 更优方案(推荐):在第3步去重时,不要只保存拼接结果。
  • 可以将原始两列数据合并成一个二维数组 Data_2D。
  • 使用 np.unique(Data_2D, axis=0) 对二维数组直接去重(这就一次性拿到了唯一的 [列1, 列2] 组合)。
  • 然后再对这个去重后的二维数组进行拼接生成 Key。这样就保留了原始两列数据,无需后续拆分,速度最快且逻辑最稳。
5. 输出 CSV (Export)
  • 操作思路:
  1. 构造一个新的 DataFrame(或结构化数组)。
  2. 包含三列:原始列A、原始列B、拼接后的唯一Key/新ID。
  3. 保存为 CSV。

代码设计亮点

  1. 极速拼接:利用 np.char.add 进行向量化字符串拼接,避免了 Python层面的循环。
  2. 零开销回溯:利用 np.unique 的 return_index 参数直接获取原始数据的行号,完全省去了“拆分字符串还原原始值”的步骤,这是比常规逻辑快 2-3 倍的关键。
  3. 内存安全:全程操作 Numpy 视图或通过索引切片,减少了数据的深拷贝。
  4. 工程化封装:包含类型检查、异常处理和清晰的输入输出定义。
import pandas as pd
import numpy as np
import os

def generate_deduped_mapping(df: pd.DataFrame, 
                             col1: str, 
                             col2: str, 
                             output_csv: str = 'mapping_result.csv',
                             sep: str = '_') -> pd.DataFrame:
    """
    使用 Numpy 加速对 DataFrame 两列进行组合、去重,并生成映射表。
    
    核心逻辑:
    1. 提取两列数据转换为 Numpy 数组。
    2. 向量化拼接字符串生成唯一 Key。
    3. 利用 np.unique 获取唯一值及其在原始数据中的首个索引。
    4. 根据索引直接“回捞”原始两列的值,避免字符串拆分带来的性能损耗。
    
    Args:
        df (pd.DataFrame): 原始大数据集
        col1 (str): 第一列列名
        col2 (str): 第二列列名
        output_csv (str): 输出 CSV 的路径
        sep (str): 拼接时的分隔符,确保不与数据内容冲突
        
    Returns:
        pd.DataFrame: 包含去重组合及新ID的 DataFrame
    """
    
    print(f"[-] 开始处理,数据总行数: {len(df)}")
    
    # 1. 提取数据并强制转换为 String 类型的 Numpy 数组
    # astype(str) 确保数据类型统一,避免拼接报错
    arr1 = df[col1].astype(str).to_numpy()
    arr2 = df[col2].astype(str).to_numpy()
    
    # 2. 向量化拼接 (Vectorized Concatenation)
    # 逻辑:arr1 + sep + arr2
    # np.char.add 比 Python 循环快几个数量级
    print("[-] 正在进行向量化拼接...")
    combined_arr = np.char.add(np.char.add(arr1, sep), arr2)
    
    # 3. 高效去重并获取索引 (The Magic Step)
    # return_index=True 返回唯一值在原始数组中第一次出现的下标
    print("[-] 正在计算唯一组合 (Numpy Unique)...")
    unique_keys, distinct_indices = np.unique(combined_arr, return_index=True)
    
    print(f"[-] 去重完成。原始组合数: {len(df)}, 唯一组合数: {len(unique_keys)}")
    
    # 4. 利用索引“回捞”原始值 (Direct Retrieval)
    # 直接利用索引切片,速度极快,且保证了数据与 Key 的绝对对应
    unique_col1_vals = arr1[distinct_indices]
    unique_col2_vals = arr2[distinct_indices]
    
    # 5. 生成新的组合 ID (New Group ID)
    # 默认生成类似 'GROUP_001' 的 ID,后续你可以在 CSV 中手动修改以合并组
    # 使用 vectorization 生成 ID
    ids = np.arange(len(unique_keys))
    new_group_ids = np.char.add('GROUP_', ids.astype(str))
    
    # 6. 构建结果 DataFrame
    result_df = pd.DataFrame({
        'Combine_Key': unique_keys,        # 拼接后的唯一 Key (作为索引切分用)
        'Original_Col1': unique_col1_vals, # 原始列1
        'Original_Col2': unique_col2_vals, # 原始列2
        'New_Group_ID': new_group_ids      # 新列:组合重命名 (默认唯一,待人工合并)
    })
    
    # 7. 输出结果
    result_df.to_csv(output_csv, index=False, encoding='utf-8-sig')
    print(f"[+] 结果已保存至: {output_csv}")
    
    return result_df

# --- 使用示例 ---
if __name__ == "__main__":
    # 模拟一个大数据集
    data = {
        'Category': ['A', 'A', 'B', 'A', 'C', 'B'],
        'SubCategory': ['101', '101', '202', '102', '303', '202'],
        'Value': [1, 2, 3, 4, 5, 6]
    }
    df_big = pd.DataFrame(data)

    # 调用函数
    mapping_df = generate_deduped_mapping(
        df=df_big, 
        col1='Category', 
        col2='SubCategory',
        output_csv='group_mapping.csv'
    )
    
    # 打印预览
    # print(mapping_df)

关键技术点解释

  1. 为什么不先拼接再拆分?
  • 低效做法:拼接 -> 去重 -> 拆分字符串。拆分字符串是一个极慢的操作,且如果数据中包含分隔符(例如数据里本身就有下划线),拆分逻辑会出错。
  • 高效做法(本代码):拼接 -> 去重并拿到索引(indices) -> 用索引去原数组取值。代码中 distinct_indices 变量存储了每个唯一组合第一次出现的行号。比如组合 “A_101” 第一次出现在第0行,我们就直接取第0行的 arr1[0] 和 arr2[0]。这是数学上的精确映射,完全不需要触碰字符串拆分。
  1. output_csv 的作用
  • 生成的 CSV 包含 New_Group_ID 列。
  • 后续工作流:你打开这个 CSV,如果发现 GROUP_5 和 GROUP_8 其实是同一类业务逻辑,你可以手动将它们的 ID 都改为 Merged_Group_A。
  • 最后你再写一个脚本读取这个 CSV,把它作为一个配置表(Config Map),去切分原始的大数据集。
CANdelaStudio实战:如何用Excel批量编辑DTC(附19服务配置技巧) 本文详细介绍了如何使用CANdelaStudio结合Excel批量编辑DTC(诊断故障码)的高效方法,包括模板设计、批量导入导出技巧及19服务的深度配置。通过实战案例和进阶技巧,帮助汽车电子工程师提升工作效率,确保DTC管理的准确性和一致性。 阅读详情

相关推荐

半自动excel数据汇总

用半自动化汇总每日需要做的excel,输入文件地址及日期,得到汇总的数据 ''' 半自动化设置采购模板 df = 要设置的文件路径 date = 设置文件的日期及文件名内容 ''' import pandas as pd import os import time start = time.time() def CaiGou(df1,df2,df3,date): data = pd.read_excel(df1,sheet_name='商品库存上下限查询_明细',engine='openpyxl

weixin_51119842的博客 268

利用Python半自动化生成Nessus报告

0x01 前言   Nessus是一个功能强大而又易于使用的远程安全扫描器,Nessus对个人用户是免费的,只需要在官方网站上填邮箱,立马就能收到注册号了,对应商业用户是收费的。当然,个人用户是有16个IP限制,通过企业邮箱可以体验免费7天的Nessus专业版,IP无限制。   Nessus激活码获取地址:https://www.tenable.com/products/nessus...

645

【HDLBits实战】从真值表到最优电路:SOP与POS形式在ECE241考题中的精妙应用

本文以HDLBits平台上的ECE241考题为例,详细讲解了如何从真值表出发,利用卡诺图化简技术,推导出最优的积之和(SOP)与和之积(POS)逻辑表达式。文章重点剖析了如何处理“无关项”以简化电路,并通过Verilog代码实现对比,阐述了SOP与POS形式在数字电路设计中的精妙应用与实战价值。

z2a3b4c5d的博客 217

教务成绩核查-半自动化解决方案

教务成绩核查的半自动化解决方案,两excel文件之间的比对,没什么技术含量,但有用

soul_mingling的博客 1221

西门子触摸屏教程wincc flexible2008 sp5 Smart V3 V4中文版软件

西门子触摸屏教程wincc flexible2008 sp5 Smart V3 V4中文版软件

liang007dudu的博客 1万+

从零到一:EHB-电机复合制动系统的Simulink仿真实战指南

本文详细介绍了EHB-电机复合制动系统在纯电动汽车中的Simulink仿真实战指南。通过系统概述、建模核心模块解析、控制策略开发及典型问题排查,帮助读者掌握从零到一的开发流程。重点讲解了液压子系统建模、电机再生制动模型及整车动力学集成,为开发者提供了一套完整的解决方案。

hh234的博客 1009

python excel转json文件

试图用python使这个步骤半自动化,第一次发文,感谢支持和指导.

Ethan_Shen_0207的博客 3979

Qt入门教程【环境搭建篇】Qt6+Mingw+QMake+QtCreator

Qt Windows平台安装

小鱼酱的博客 2万+

关于Python Fault 管理半自动化心得[一]

最近从码农变成了苦逼的 FC ,所谓的FC是Fault Coordinator的简称,是负责协调处理Fault相关的角色。FC的所负责的杂事特别多,很多情况是完全重复的机械化劳动。     在做FC的一个职责是为每个Fault添加不同分支的改动表格给开发人员,这样保证所有Fault影响到的分支都有相关改动。     在公司龟速的网络下,每个分支的创建是相当的折磨人,而且在Fault特别多的情况

氺在飛天 805

【数字IC基础】DFT(Design For Test)可测性设计

【数字IC基础】DFT(Design For Test)可测性设计

努力,加油每一天鸭~ 3467

2025华为OD机试真题目录汇总 B+C+D+E卷(570道)(Python语言)

本文是华为OD机试真题(Python 语言)专栏的目录贴(持续更新中…)华为OD是Outsourcing Dispacth模式,是华为和外企德科联合招聘的简称。目前华为大多数是OD招聘。OD模式也是华为提出的一种新的用工形式,每年都会从OD项目挑优秀员工转为正编。所有OD和正式员工一样对待,没有差别,部门平时开会、评审等活动都是一起参加的,是同薪同酬,都是由华为的HR直接定的薪资,看的是我们技术能力。华为是大企业,能到华为上班也是有能力的,每个部门都有好多职位,是金子,在哪都会发光。

KJ.JK 18万+

python文献整理_文献半自动化处理方法-python按年份整理

在处理文献做review时想要搞清楚互相之间的参考关系,并且按照年份整理,并在不同引用文章中,可以有效去重,这里有一种傻瓜方法,使用excel+python程序比较清晰地列出来一个领域的文献。步骤:复制参考文献为一个txt文档,并把这个文献命名为一个标号;按每行读取获取每行中的年份数字(正则化取数字,转化为int最大的);获取每行的的前缀id写入新的行 = 年份+标号+前缀id+文献引用格式imp...

weixin_39519798的博客 768

YOLO26改进策略【卷积层】| SPD-Conv 针对小目标和低分辨率图像的检测任务

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。

Limiiiing的博客 361

Python常用模块12-python的xlsxwriter模块(操作excel)

文章目录一.xlsxwriter模块1.1 xlsxwriter模块介绍1.2 xlsxwriter 实例1.2.1 创建一个简单的xlsx文件1.2.2 将指定格式的数据录入xlsx文件1.2.3 写入不同的类型的数据到xlsx1.2.4 将数据库查询出来的数据录入xlsx文件二.openpyxl模块读取excel文件参考: 一.xlsxwriter模块 1.1 xlsxwriter模块介绍 在实际生产中,经常会用到excel来处理数据,虽然excel有强大的公式,但是很多工作也只能半自动化,配合pyth

只是甲的博客 1万+

五、MT8168 音频驱动之SPEAKER

本章主要讲解MT8168平台的内部SPEAKER驱动配置。分为HP接法和LINE OUT接法。2.1.3 audio_custom_exp.h设置。2.1.4 mixer_paths.xml设置。2.2.3 mixer_paths.xml设置。2.1.2 ProjectConfig 设置。2.2.2 ProjectConfig 设置。2.2.1 deconfig设置。2.1.1 DTS设置。......

Joon2020的博客 1664

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【python+stata+Excel】如何构建面板数据?

本文旨在面向经管专业的初学者、低年级本科生或研究生,介绍面板数据的概念、面板数据的存储与展示逻辑、Stata中常用数据格式,以及如何通过自动化或半自动化的方法构建平衡面板数据。作为基础向的科普文章,除了介绍面板数据和小技巧外,我还希望借此帮助读者培养自己对数据结构的感觉。做到知其然,知其所以然。

QilinCheung的博客 9821

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

用python写个半自动化数据工具,2-3天活 10分钟干完

用python写个半自动化数据工具,2-3天活 10分钟干完。

weixin_45488495的博客 639

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

基于Python的HTTP接口自动化测试框架实现

6、首次执行测试采用半自动化的方式,即人工检查输出的XML文件是否正确,一旦正确将封存XML文件,为后续回归测试的预期结果,如果发现错误手工修正为预期文件。(注意不是每次测试都人工检查该文件,只首次测试的时候才检查)2、采用Excel表格管理测试数据,包括用例的管理、测试数据录入、测试结果显示等等,这个需要封装一个Excel的类即可。5、设置2个检查点,XML文件中的返回值字段(通过解析XML得到);3、调用http接口采用Python封装好的API即可。4、测试需要的http组装字符转处理即可。

2301_80119299的博客 1010

半自动化的目标责任成本造假思路与一个成功的解法,还有一些优化方案。

这里还是的说明xlwings这个库的厉害的地方,在于它能实时的与excel做交互,而且编程的过程很自由,你可以用excel本身的公式和python代码的优势联合进行编程,这就给你的解题带来了极高的宽容度,最开始我在使用pandas以及numpy的时候发现倒来倒去,虽然他们的计算效率很高,但实际上我们编制的表格不需要那么彻底的计算效率,我们只需要联动excel自有的功能,比如公式,比如VBA,然后在加上python左右一种锦上添花的作用。很显然,0.21%是不合规的,所以我们需要进行分配。

SoIKnow的博客 501

Word转Excel实战:从基础分列到Python自动化解析

数据转换是数据处理流程中的基础环节,其核心原理是将非结构化或半结构化的信息,按照预定义的规则重组为结构化的二维数据模型。这项技术的价值在于打通不同软件间的数据壁垒,实现信息的高效流转与复用,广泛应用于办公自动化、数据清洗和报表生成等场景。本文聚焦于解决一个具体的高频痛点:如何将Word文档中的文本内容,无论是规整的表格、分隔文本,还是复杂的键值对段落,通过Office原生功能、VBA宏或Python脚本等技术,准确、高效地迁移至Excel。文中深入探讨了利用Python的`python-docx`和`pan

weixin_30919571的博客 517

Excel空白行高效处理:从手工到Python自动化方案

数据清洗是数据分析的关键预处理步骤,其中Excel空白行处理直接影响数据透视表、VLOOKUP等核心功能的准确性。通过定位空值、条件筛选等基础操作可以解决简单场景,而VBA宏和Python脚本则能实现自动化批处理。pandas库凭借其向量化计算优势,在万级行数据处理中比openpyxl快3倍,成为工程实践的首选。针对企业级应用,结合Spire.XLS插件可提升处理效率并确保数据安全。本文详解不同规模数据的解决方案,帮助用户根据场景选择最优方法,避免因空白行导致的分析误差。

weixin_34319817的博客 353

从Excel公式到Python脚本:用AI助手实现办公自动化流程设计

在数据处理领域,Excel公式和VBA宏是传统自动化方案,但存在学习门槛高、维护困难等局限。其核心原理是通过预设规则对结构化数据进行转换与分析,技术价值在于提升重复性工作的准确性与效率。随着AI代码生成工具的发展,自然语言指令可直接转化为可执行代码,大幅降低了自动化门槛。在办公场景中,数据清洗、多表合并、复杂统计等高频需求,可通过Python的pandas库实现更灵活的解决方案。本文以Excel数据清洗为例,展示如何将模糊业务需求转化为包含数据去重、条件筛选、分类统计的完整处理流程,并生成可复用的Pytho

weixin_30825199的博客 339

使用Reqable和Python自动化获取招聘数据

HTTP抓包工具如Reqable和Python自动化脚本结合,为数据采集提供了一种高效且低风险的解决方案。通过模拟用户操作如鼠标滚动,可以触发页面加载并捕获API响应,有效规避传统爬虫的反爬机制。这种方法特别适合需要快速获取招聘数据的场景,如市场调研或竞品分析。技术实现上,结合pyautogui控制鼠标滚动,配合Reqable捕获数据,再通过Python进行清洗和分析,不仅提升了效率,还降低了被封禁的风险。这种半自动化方案在数据采集领域展现了其独特的价值,尤其适用于对爬虫技术不熟悉的开发者。

weixin_30675247的博客 450

Python http接口自动化测试框架实现方法

本文实例讲述了Python http接口自动化测试框架实现方法

软件测试小dao 736

python 接口自动化测试框架 2020_基于Python的HTTP接口自动化测试框架实现

一、测试需求描述对服务后台一系列的http接口功能测试。输入:根据接口描述构造不同的参数输入值输出:XML文件二、实现方法1、选用Python脚本来驱动测试2、采用Excel表格管理测试数据,包括用例的管理、测试数据录入、测试结果显示等等,这个需要封装一个Excel的类即可。3、调用http接口采用Python封装好的API即可4、测试需要的http组装字符转处理即可5、设置2个检查点,XML文件...

weixin_39569076的博客 79
上一篇: Python EXCEL 自动化比较文件
下一篇: EXCEL 自动化链接更新工具设计方案
偷心伊普西隆
博客等级 码龄7年 511粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值