乐于分享
好东西不私藏

Day1:Excel批量清洗

Day1:Excel批量清洗

Day1:用AI + Python批量清洗Excel数据,10分钟搞定一天的活


一、先问你一个问题


你有没有经历过这种场景——

周一早上,邮箱里躺着 8 个同事发来的 Excel 表格。

每个人的格式都不一样:有的用"姓名",有的用"名字";有的日期写"2024/3/1",有的写"2024-03-01";有的有空行,有的有重复数据……

你打开第一个表,开始复制粘贴。

两小时后,终于做好了一个看起来像样的汇总表。

然后你发现:有一列数据格式还是不对,整列需要重新处理。

这不是个例。

这是职场里每天都在发生的事。

今天,我们来一次性解决它。

二、为什么这类工作最适合脚本处理?


Excel 数据清洗有一个很明显的特点:重复且有规律。

  • 合并多个表格 → 每次操作都一样
  • 删除空行 → 判断条件固定
  • 统一列名 → 映射关系固定
  • 格式标准化 → 转换规则固定
 只要是有规律的操作,就适合用脚本来做。 

脚本不会累,不会出错,不会忘记某一步,而且可以无限次重复使用。

你今天花 30 分钟写好一个脚本,以后每次只需要 5 秒。

三、今天要解决的核心场景


场景描述:

你有多个部门发来的 Excel 销售表格(或报名表、考勤表、数据表等),格式不完全统一,需要:

  1. 把多个文件合并成一个表
  2. 统一列名(比如把"名字"统一成"姓名")
  3. 删除空行和重复数据
  4. 把结果导出成一个新的 Excel 文件
预期效果:   原来需要 1-2 小时手动操作,脚本跑完只需要 5 秒钟。 

四、环境准备


在开始之前,确保你安装了以下两个库:

pip install pandas openpyxl 

如果你用的是 Anaconda,这两个库一般已经默认安装好了,可以直接跳过这步。

验证安装:
import pandas as pd import openpyxl print("安装成功!") 

五、最小可用版本:直接能跑的代码


下面是今天的核心脚本。

你只需要把第 5 行的文件夹路径改成你自己存放 Excel 文件的路径,就可以直接运行。

import pandas as pd import os from pathlib import Path 

=============================================

配置区:只需要改这里

=============================================

 INPUT_FOLDER = "C:/Users/你的名字/Desktop/销售数据"   # Excel 文件所在文件夹 OUTPUT_FILE  = "C:/Users/你的名字/Desktop/汇总结果.xlsx"  # 输出文件路径 

列名统一映射(把左边的列名改成右边的标准列名)

 COLUMN_MAP = {     "名字": "姓名",     "部门名称": "部门",     "销售": "销售额",     "日期": "统计日期", } 

=============================================

def load_all_excel(folder):    """读取文件夹里所有 Excel 文件"""    all_dfs = []    folder_path = Path(folder)    for file in folder_path.glob("*.xlsx"):        print(f"正在读取:{file.name}")        try:            df = pd.read_excel(file)            df["来源文件"] = file.name  # 记录数据来自哪个文件            all_dfs.append(df)        except Exception as e:            print(f"  ⚠️ 读取失败:{e}")    if not all_dfs:        print("⚠️ 没有找到任何 Excel 文件,请检查文件夹路径")        return None    # 合并所有表格    combined = pd.concat(all_dfs, ignore_index=True)    print(f"\n✅ 共读取 {len(all_dfs)} 个文件,合并后共 {len(combined)} 行数据")    return combined

def clean_data(df):    """清洗数据"""    original_count = len(df)    # 1. 统一列名    df = df.rename(columns=COLUMN_MAP)    print(f"\n已统一列名:{list(COLUMN_MAP.keys())} → {list(COLUMN_MAP.values())}")    # 2. 删除全空行    df = df.dropna(how="all")    # 3. 删除重复行(保留第一条)    df = df.drop_duplicates()    # 4. 去掉字符串列的前后空格    for col in df.select_dtypes(include="object").columns:        df[col] = df[col].str.strip()    removed = original_count - len(df)    print(f"已清洗:删除 {removed} 条重复/空数据,剩余 {len(df)} 条")    return df

def save_result(df, output_path):    """保存结果"""    df.to_excel(output_path, index=False)    print(f"\n✅ 结果已保存到:{output_path}")    print(f"   共 {len(df)} 条数据,{len(df.columns)} 个字段")

if __name__ == "__main__":    print("=" * 50)    print("Excel 批量合并 & 清洗工具")    print("=" * 50)    # 第一步:读取所有文件    df = load_all_excel(INPUT_FOLDER)    if df is None:        exit()    # 第二步:清洗数据    df = clean_data(df)    # 第三步:保存结果    save_result(df, OUTPUT_FILE)    print("\n🎉 处理完成!")

六、怎么使用 AI 帮你改造脚本?


上面的脚本是一个通用版本。  但你的实际数据结构可能不一样。

这时候,你不需要自己改代码——让 AI 帮你改。

把下面这段提示词复制给 AI(Cursor、Windsurf、ChatGPT 都可以):


AI 提示词模板:
我有多个 Excel 文件,每个文件里有以下列: [在这里列出你的列名,比如:姓名、工号、部门、销售额、日期] 我需要把这些文件合并成一个表,然后:
  1. 把"日期"列统一成 YYYY-MM-DD 格式
  2. 把"销售额"列里的空值填充为 0
  3. 按"日期"列从新到旧排序
  4. 删除"姓名"为空的行
请帮我修改这段 Python 脚本,实现以上功能。[把上面的脚本粘贴在这里]

告诉 AI 你的具体需求,它会帮你生成完整的修改版本。

你不需要理解每一行代码,只需要确认脚本能跑通、结果是对的。


七、进阶:加几行代码,让脚本更好用


进阶 1:自动处理日期格式不统一的问题

在 clean_data 函数里加这段

 if "统计日期" in df.columns:     df["统计日期"] = pd.to_datetime(df["统计日期"], errors="coerce")     df["统计日期"] = df["统计日期"].dt.strftime("%Y-%m-%d")     print("日期列已统一格式") 

进阶 2:自动生成清洗报告

在 save_result 之后加这段

 print("\n=== 数据概览 ===") print(f"行数:{len(df)}") print(f"列数:{len(df.columns)}") print(f"列名:{list(df.columns)}") print(f"\n空值统计:") print(df.isnull().sum()) 

进阶 3:支持读取 .xls 旧格式文件

pip install xlrd 

把 glob("*.xlsx") 改成下面这行,同时支持 xlsx 和 xls

 for file in list(folder_path.glob(".xlsx")) + list(folder_path.glob(".xls")): 

八、实际运行效果


运行脚本后,终端会显示类似下面的输出:

================================================== Excel 批量合并 & 清洗工具 ================================================== 正在读取:销售数据_北京.xlsx 正在读取:销售数据_上海.xlsx 正在读取:销售数据_深圳.xlsx 正在读取:销售数据_杭州.xlsx 

 共读取 4 个文件,合并后共 1240 行数据

已统一列名:['名字', '部门名称'] → ['姓名', '部门']已清洗:删除 47 条重复/空数据,剩余 1193 条

✅ 结果已保存到:C:/Users/.../汇总结果.xlsx   共 1193 条数据,7 个字段

🎉 处理完成!

打开输出的 Excel 文件,你会看到:

  • 所有数据整齐排在一个表里
  • 列名统一
  • 空行和重复数据已清除
  • 多了一列"来源文件",方便你追溯数据来源
 --- 

九、常见问题


Q:运行报错 ModuleNotFoundError: No module named 'pandas'

A:说明 pandas 没装。在终端运行 pip install pandas openpyxl,然后重新运行脚本。

Q:运行报错 FileNotFoundError

A:检查 INPUT_FOLDER 路径是否正确。Windows 路径注意用正斜杠 / 或双反斜杠 \\

Q:某些列名明明一样,却没有被合并

A:可能有看不见的空格。在 COLUMN_MAP 里把原始列名加上 strip 处理:

df.columns = df.columns.str.strip() 
Q:Excel 文件里有多个 Sheet,怎么处理?

A:在 pd.read_excel(file) 里加参数:

df = pd.read_excel(file, sheet_name=0)  # 读第 1 个 Sheet 

或者

 df = pd.read_excel(file, sheet_name="汇总")  # 读名为"汇总"的 Sheet 

十、今天的收获总结


你今天学到了:

✅ 用 pandas 读取和合并多个 Excel 文件  ✅ 统一列名、删除空行和重复数据  ✅ 用 AI 提示词快速改造脚本适应你的数据结构  ✅ 生成带数据来源标注的汇总文件

这个脚本可以直接用在你的工作里。

下次你面对一堆格式不一的 Excel 表,记得打开它。


十一、下一篇预告


Day 2:Word 批量排版与文档生成
 >  
从 Excel 名单批量生成个性化 Word 文档——
通知、证明信、报价单、邀请函,不再需要一遍遍改名字和日期。

💡 关注公众号"量子位开发手记",下一篇文章第一时间推送。
—— 量子位开发手记 · AI办公自动化系列 Day1 ——