第 4 讲:AI 处理 Excel 数据 - 让 AI 帮你搞定脏数据

大家好,我是正在实战各种 AI 项目的程序员晚枫。

😫 场景导入:你被Excel折磨过吗?

场景1:周一早上的噩梦

1
2
3
4
5
6
7
8
9
10
11
12
老板:小王,把上周各区域的销售数据汇总一下,9点开会要用
你:[内心崩溃]

实际情况:
- 华东数据在张三发的邮件附件里
- 华北数据在李四的企业微信文件里
- 华南数据在共享文件夹的某个Excel里
- 数据格式还不统一:有的用"万元",有的用"元"
- 有的用"2026.4.1",有的用"2026/4/1"
- 有的部门名称是"销售部",有的是"销售一部"

结果:花了2小时还没搞定,差点耽误开会...

场景2:月度报表的地狱

1
2
3
4
5
6
7
8
月底了,要汇总30个部门的数据:
- 5个部门的Excel版本不对(打不开)
- 8个部门的表格格式不统一
- 12个部门有数据缺失
- 3个部门重复提交了
- 2个部门还没交

手动处理?一个下午就没了。

如果你也经历过这些,这一讲就是为你准备的。

用AI处理Excel数据,让原本2小时的工作,变成5分钟搞定。


📊 一、常见的脏数据问题

问题1:格式不统一

表现: 同一种数据,多种格式

1
2
3
4
5
6
❌ 原始数据:
姓名 | 销售额 | 日期
张三 | 10000 | 2026.4.1
李四 | 20,000元 | 2026/4/2
王五 | 30000.00 | 2026年4月3日
赵六 | 4万 | 4月4日

问题:

  • 销售额有数字、有金额格式、有中文数字
  • 日期格式五花八门
  • 无法直接计算和排序

✅ 清洗后:

1
2
3
4
5
姓名      | 销售额    | 日期
张三 | 10000 | 2026-04-01
李四 | 20000 | 2026-04-02
王五 | 30000 | 2026-04-03
赵六 | 40000 | 2026-04-04

问题2:缺失值

表现: 数据不完整

1
2
3
4
5
6
❌ 原始数据:
订单号 | 客户名 | 金额 | 状态
001 | 张三 | 1000 | 已付款
002 | 李四 | | 待付款
003 | | 3000 | 已付款
004 | 王五 | 4000 |

问题:

  • 金额缺失,影响统计
  • 客户名缺失,无法追溯
  • 状态缺失,不知道订单情况

✅ 清洗后:

1
2
3
4
5
订单号    | 客户名   | 金额     | 状态
001 | 张三 | 1000 | 已付款
002 | 李四 | 0 | 待付款
003 | 未知 | 3000 | 已付款
004 | 王五 | 4000 | 待确认

问题3:重复数据

表现: 同一数据出现多次

1
2
3
4
5
6
7
❌ 原始数据:
姓名 | 部门 | 销售额
张三 | 销售部 | 10000
张三 | 销售部 | 10000
李四 | 市场部 | 20000
王五 | 销售部 | 15000
李四 | 市场部 | 20000

问题:

  • 统计结果翻倍
  • 分析结论错误

✅ 清洗后:

1
2
3
4
姓名      | 部门     | 销售额
张三 | 销售部 | 10000
李四 | 市场部 | 20000
王五 | 销售部 | 15000

问题4:异常值

表现: 明显不合理的数据

1
2
3
4
5
❌ 原始数据:
姓名 | 年龄 | 工资
张三 | 25 | 8000
李四 | 200 | 9000 ← 年龄异常
王五 | 30 | 500000 ← 工资异常

问题:

  • 影响统计结果
  • 可能是输入错误

问题5:数据类型错误

表现: 数字存成文本,日期存成字符串

1
2
3
4
5
6
7
❌ 原始数据:
日期(文本)| 金额(文本)
2026-04-01 | "10000"
2026-04-02 | "20000"

❌ 无法计算:
=SUM(B:B) → 结果为0,因为是文本

✅ 清洗后:

1
2
3
4
5
6
日期(日期型)| 金额(数字)
2026-04-01 | 10000
2026-04-02 | 20000

✅ 可以计算:
=SUM(B:B) → 结果为30000

🤖 二、用 AI 清洗数据

方法1:ChatExcel(零代码方案)

网址: chatexcel.com

优势: 完全用自然语言操作,零基础也能用

操作步骤:

1
2
3
4
步骤1:打开chatexcel.com
步骤2:上传Excel文件
步骤3:输入指令
步骤4:下载清洗后的文件

实际操作示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
场景:清洗销售数据

原始指令:
"帮我清洗这个表格:删除重复行,把空值填充为0,
统一日期格式为YYYY-MM-DD,把金额列的'元'和逗号去掉"

ChatExcel执行:
[3秒后]
✅ 删除了5行重复数据
✅ 填充了3个空值为0
✅ 统一了日期格式
✅ 清理了金额格式
[显示预览]

确认无误后,点击下载

更多指令示例:

1
2
3
4
5
6
指令1:删除所有空行
指令2:把"销售额"列的异常值(<0或>100万)标红
指令3:把"手机号"列统一格式为138-xxxx-xxxx
指令4:提取"地址"列的省市区信息到新列
指令5:把"姓名"列的空格去掉
指令6:按"部门"分组,计算每个部门的总销售额

性能对比:

操作手动操作ChatExcel效率提升
删除重复行(100行)5分钟5秒60倍
格式统一10分钟10秒60倍
缺失值填充3分钟3秒60倍
整体清洗(小数据)30分钟1分钟30倍

方法2:Claude/ChatGPT(交互式方案)

优势: 更灵活,可以处理复杂逻辑

操作步骤:

1
2
3
4
步骤1:复制数据到AI对话框
步骤2:输入清洗指令
步骤3:AI返回清洗后的数据
步骤4:复制回Excel

提示词模板:

1
2
3
4
5
6
7
8
9
10
11
12
13
你是一名数据清洗专家。
我有以下数据需要清洗:

数据格式:[CSV/Markdown表格]
数据内容:
[粘贴数据]

清洗要求:
1. [要求1]
2. [要求2]
3. [要求3]

输出格式:[CSV/Markdown表格]

实际示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
你是一名数据清洗专家。
我有以下CSV数据需要清洗:

姓名,销售额,日期
张三,10000元,2026.4.1
李四,20000,2026/4/2
王五,30000.00,2026年4月3日
,40000,4月4日
赵六,,2026-04-05

清洗要求:
1. 删除"销售额"列的"元"字和符号
2. 统一日期格式为YYYY-MM-DD
3. 姓名为空的行删除
4. 销售额为空的填充为0

输出格式:CSV格式

AI返回:

1
2
3
4
5
姓名,销售额,日期
张三,10000,2026-04-01
李四,20000,2026-04-02
王五,30000,2026-04-03
赵六,0,2026-04-05

方法3:Python + AI(批量处理方案)

优势: 可以批量处理大量文件,适合程序员

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 安装依赖:pip install pandas openpyxl python-office

import pandas as pd
import office

# 1. 读取Excel文件
df = pd.read_excel('销售数据.xlsx')

# 2. 基础清洗
# 删除重复行
df = df.drop_duplicates()

# 删除空行
df = df.dropna(how='all')

# 填充缺失值
df['销售额'] = df['销售额'].fillna(0)

# 去除字符串空格
df['姓名'] = df['姓名'].str.strip()

# 3. 格式统一
# 统一日期格式
df['日期'] = pd.to_datetime(df['日期'], errors='coerce')

# 去除金额中的符号
df['销售额'] = df['销售额'].astype(str).str.replace('元', '')
df['销售额'] = df['销售额'].str.replace(',', '')
df['销售额'] = pd.to_numeric(df['销售额'], errors='coerce')

# 4. 异常值处理
# 标记异常值
df.loc[df['销售额'] < 0, '备注'] = '金额异常'
df.loc[df['销售额'] > 1000000, '备注'] = '金额过大'

# 5. 保存清洗后的文件
df.to_excel('销售数据_已清洗.xlsx', index=False)

print('数据清洗完成!')
print(f'原始行数:{len(pd.read_excel("销售数据.xlsx"))}')
print(f'清洗后行数:{len(df)}')

批量处理多个文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import pandas as pd
import os
import office

def clean_excel_file(input_path, output_path):
"""清洗单个Excel文件"""
df = pd.read_excel(input_path)

# 删除重复行
df = df.drop_duplicates()

# 删除全空行
df = df.dropna(how='all')

# 填充缺失值
df = df.fillna(0)

# 保存
df.to_excel(output_path, index=False)

return len(df)

# 批量处理文件夹中的所有Excel
input_dir = './原始数据/'
output_dir = './清洗后数据/'

# 创建输出目录
os.makedirs(output_dir, exist_ok=True)

# 处理每个文件
for filename in os.listdir(input_dir):
if filename.endswith('.xlsx') or filename.endswith('.xls'):
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, filename)

rows = clean_excel_file(input_path, output_path)
print(f'处理完成:{filename}{rows}行数据')

print('\n全部处理完成!')

用python-office一键合并清洗:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import office

# 1. 合并所有Excel文件
office.excel.merge2excel(
dir_path='./各部门数据/',
output_file='总数据.xlsx'
)

# 2. 清洗合并后的数据
import pandas as pd
df = pd.read_excel('总数据.xlsx')
df = df.drop_duplicates()
df.to_excel('总数据_已清洗.xlsx', index=False)

print('合并并清洗完成!')

📐 三、AI 生成 Excel 公式

1. VLOOKUP 查询公式

场景: 从另一个表查询数据

提示词:

1
2
3
4
5
6
7
8
9
10
11
12
你是一名Excel专家。
帮我写一个VLOOKUP公式。

需求:
- 表1(销售明细表):A列是产品编号,B列是产品名称,C列是销售额
- 表2(价格表):A列是产品编号,B列是单价
- 我需要在表1的D列查询每个产品的单价

要求:
1. 给出完整公式
2. 解释每个参数
3. 处理查不到的情况

AI返回:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
✅ 完整公式(在表1的D2单元格输入):

=IFERROR(VLOOKUP(A2, 价格表!A:B, 2, FALSE), "未找到")

📝 参数解释:

- A2:要查找的产品编号
- 价格表!A:B:查找范围(价格表的A列到B列)
- 2:返回第2列(单价)
- FALSE:精确匹配
- IFERROR:如果查不到,显示"未找到"而不是报错

💡 使用示例:

表1(销售明细):
产品编号 | 产品名称 | 销售额 | 单价(公式)
P001 | 产品A | 1000 | =IFERROR(VLOOKUP(A2, 价格表!A:B, 2, FALSE), "未找到")
P002 | 产品B | 2000 | ...

价格表:
产品编号 | 单价
P001 | 50
P002 | 100

结果:
产品编号 | 产品名称 | 销售额 | 单价
P001 | 产品A | 1000 | 50
P002 | 产品B | 2000 | 100
P003 | 产品C | 3000 | 未找到

2. SUMIF 条件求和

场景: 按条件求和

提示词:

1
2
3
4
5
6
7
8
9
10
11
12
13
你是一名Excel专家。
帮我写一个SUMIF公式。

需求:
- A列是部门名称(销售部、市场部、技术部...)
- B列是员工姓名
- C列是销售额
- 需要计算每个部门的总销售额

要求:
1. 在E列列出部门名称
2. 在F列用SUMIF计算各部门总销售额
3. 提供完整公式和解释

AI返回:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
✅ 设置步骤:

步骤1:在E列列出部门名称(去重后的)
E2: 销售部
E3: 市场部
E4: 技术部

步骤2:在F列输入公式
F2: =SUMIF(A:A, E2, C:C)

📝 参数解释:

- A:A:条件范围(部门列)
- E2:条件(要统计的部门)
- C:C:求和范围(销售额列)

💡 完整示例:

原始数据:
A列(部门) | B列(姓名) | C列(销售额)
销售部 | 张三 | 10000
市场部 | 李四 | 20000
销售部 | 王五 | 15000
技术部 | 赵六 | 8000
市场部 | 孙七 | 12000

统计结果:
E列(部门) | F列(总销售额)
销售部 | 25000 ← 公式:=SUMIF(A:A, E2, C:C)
市场部 | 32000 ← 公式:=SUMIF(A:A, E3, C:C)
技术部 | 8000 ← 公式:=SUMIF(A:A, E4, C:C)

3. COUNTIF 条件计数

场景: 按条件计数

提示词:

1
2
3
4
5
6
7
8
9
10
11
12
你是一名Excel专家。
帮我写COUNTIF公式统计员工人数。

需求:
- A列是部门
- B列是员工姓名
- C列是状态(在职/离职)

需要统计:
1. 每个部门的在职人数
2. 每个部门的离职人数
3. 总人数

AI返回:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
✅ 公式汇总:

1. 在职人数:=COUNTIFS(A:A, "销售部", C:C, "在职")
2. 离职人数:=COUNTIFS(A:A, "销售部", C:C, "离职")
3. 总人数:=COUNTIF(A:A, "销售部")

📝 COUNTIFS用于多条件计数:
- 条件1:A列等于"销售部"
- 条件2:C列等于"在职"

💡 实际应用:

设置统计表:
E列(部门) | F列(在职) | G列(离职) | H列(总计)
销售部 | =COUNTIFS(A:A,E2,C:C,"在职") | =COUNTIFS(A:A,E2,C:C,"离职") | =COUNTIF(A:A,E2)
市场部 | ... | ... | ...

4. IF 条件判断

场景: 多条件判断

提示词:

1
2
3
4
5
6
7
8
9
10
11
12
13
你是一名Excel专家。
帮我写一个多条件IF公式计算绩效等级。

规则:
- 销售额≥10万 且 客户满意度≥90:优秀
- 销售额≥5万 且 客户满意度≥80:良好
- 销售额≥3万 且 客户满意度≥70:合格
- 其他:不合格

数据:
- B列:销售额
- C列:客户满意度
- D列:绩效等级(需要计算)

AI返回:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
✅ 完整公式:

=IF(AND(B2>=100000, C2>=90), "优秀",
IF(AND(B2>=50000, C2>=80), "良好",
IF(AND(B2>=30000, C2>=70), "合格", "不合格")))

📝 公式逻辑:

这是嵌套IF + AND函数:
第1层:如果销售额≥10万 且 满意度≥90 → "优秀"
第2层:否则如果销售额≥5万 且 满意度≥80 → "良好"
第3层:否则如果销售额≥3万 且 满意度≥70 → "合格"
第4层:否则 → "不合格"

💡 测试案例:

员工 | 销售额 | 满意度 | 绩效等级
张三 | 120000 | 95 | 优秀
李四 | 60000 | 85 | 良好
王五 | 40000 | 75 | 合格
赵六 | 20000 | 60 | 不合格

5. 日期处理公式

场景: 提取日期信息

提示词:

1
2
3
4
5
6
7
8
9
10
11
你是一名Excel专家。
帮我写公式提取日期信息。

需求:
- A列是日期(如:2026-04-08)
- 需要:
1. B列:提取年份(2026)
2. C列:提取月份(4)
3. D列:提取日(8)
4. E列:计算是第几季度(Q2)
5. F列:计算是星期几(周三)

AI返回:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
✅ 公式汇总:

B列(年份):=YEAR(A2)
C列(月份):=MONTH(A2)
D列(日):=DAY(A2)
E列(季度):="Q" & ROUNDUP(MONTH(A2)/3, 0)
F列(星期):=TEXT(A2, "aaaa")

📝 公式解释:

- YEAR(A2):提取年份
- MONTH(A2):提取月份
- DAY(A2):提取日
- ROUNDUP(MONTH(A2)/3, 0):计算季度
1-3月 → 1, 4-6月 → 2, 7-9月 → 3, 10-12月 → 4
- TEXT(A2, "aaaa"):返回星期几的中文

💡 效果展示:

日期 | 年份 | 月份 | 日 | 季度 | 星期
2026-04-08 | 2026 | 4 | 8 | Q2 | 周三
2026-12-25 | 2026 | 12 | 25 | Q4 | 周五

6. 文本处理公式

场景: 提取和拼接文本

提示词:

1
2
3
4
5
6
7
8
9
10
11
你是一名Excel专家。
帮我写公式处理文本。

需求:
- A列是完整姓名(如:"张三")
- B列是手机号(如:"13812345678")
- 需要:
1. C列:提取姓(张)
2. D列:提取名(三)
3. E列:格式化手机号(138-1234-5678)
4. F列:生成称呼(张先生/张女士,假设都是男士)

AI返回:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
✅ 公式汇总:

C列(姓):=LEFT(A2, 1)
D列(名):=RIGHT(A2, LEN(A2)-1)
E列(格式化手机号):=LEFT(B2,3)&"-"&MID(B2,4,4)&"-"&RIGHT(B2,4)
F列(称呼):=LEFT(A2,1)&"先生"

📝 公式解释:

- LEFT(A2, 1):从左边取1个字符(姓)
- RIGHT(A2, LEN(A2)-1):从右边取(长度-1)个字符(名)
- 手机号格式化:
LEFT(B2,3):前3位
MID(B2,4,4):从第4位开始取4位
RIGHT(B2,4):后4位
用"-"连接

💡 效果展示:

姓名 | 手机号 | 姓 | 名 | 格式化手机号 | 称呼
张三 | 13812345678 | 张 | 三 | 138-1234-5678 | 张先生
李四 | 13987654321 | 李 | 四 | 139-8765-4321 | 李先生

🎯 四、实战案例:完整的数据清洗流程

案例:清洗销售数据

场景: 收到一份有各种问题的销售数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 步骤1:读取数据
import pandas as pd

df = pd.read_excel('销售数据_原始.xlsx')
print(f'原始数据:{len(df)}行')
print(df.head(10))

# 发现的问题:
# 1. 销售额列有"元"、逗号、中文数字
# 2. 日期格式不统一
# 3. 有重复行
# 4. 有缺失值
# 5. 客户名有空格

# 步骤2:删除重复行
df = df.drop_duplicates()
print(f'删除重复后:{len(df)}行')

# 步骤3:处理缺失值
# 删除完全空的行
df = df.dropna(how='all')
# 关键字段为空的删除
df = df.dropna(subset=['订单号', '客户名'])
# 销售额为空的填充为0
df['销售额'] = df['销售额'].fillna(0)

# 步骤4:清洗销售额列
# 去除"元"、"万"等文字
df['销售额'] = df['销售额'].astype(str).str.replace('元', '')
df['销售额'] = df['销售额'].str.replace('万', '0000')
df['销售额'] = df['销售额'].str.replace(',', '')
# 转换为数字
df['销售额'] = pd.to_numeric(df['销售额'], errors='coerce')

# 步骤5:统一日期格式
df['日期'] = pd.to_datetime(df['日期'], errors='coerce')
df['日期'] = df['日期'].dt.strftime('%Y-%m-%d')

# 步骤6:清洗客户名
df['客户名'] = df['客户名'].str.strip()
df['客户名'] = df['客户名'].str.replace(' ', '')

# 步骤7:异常值处理
# 销售额<0的标为异常
df.loc[df['销售额'] < 0, '备注'] = '销售额异常'
# 销售额>100万的标为异常
df.loc[df['销售额'] > 1000000, '备注'] = '销售额过大'

# 步骤8:保存清洗后的数据
df.to_excel('销售数据_已清洗.xlsx', index=False)
print(f'清洗完成:{len(df)}行')

清洗前后对比:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
清洗前:
订单号 | 客户名 | 销售额 | 日期
001 | 张 三 | 10000元 | 2026.4.1
002 | 李四 | 20000 | 2026/4/2
001 | 张 三 | 10000元 | 2026.4.1 ← 重复
003 | 王五 | | 2026-04-03
004 | 赵六 | 3万 | 4月4日
005 | 孙七 | -5000 | 2026-04-05

清洗后:
订单号 | 客户名 | 销售额 | 日期 | 备注
001 | 张三 | 10000 | 2026-04-01 |
002 | 李四 | 20000 | 2026-04-02 |
003 | 王五 | 0 | 2026-04-03 |
004 | 赵六 | 30000 | 2026-04-04 |
005 | 孙七 | -5000 | 2026-04-05 | 销售额异常

📊 五、性能对比:手动 vs AI

操作手动操作AI工具Python脚本最佳方案
删除重复行(100行)5分钟5秒1秒AI/Python
格式统一10分钟10秒2秒Python
缺失值填充5分钟5秒1秒AI/Python
批量处理(100个文件)5小时不支持30秒Python
复杂逻辑清洗30分钟5分钟3分钟Python
一次性小数据清洗15分钟1分钟5分钟AI
定期批量清洗每次半天不支持10秒Python定时任务

⚠️ 六、避坑指南

坑1:过度依赖AI,不验证结果

表现: AI清洗完直接用,结果发现重要数据被删了

解决:

  1. 清洗前备份原始数据
  2. 清洗后抽样检查
  3. 对比清洗前后的行数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 正确做法:备份+验证
import pandas as pd

# 备份原始数据
df_original = pd.read_excel('数据.xlsx')
df_original.to_excel('数据_备份.xlsx', index=False)

# 清洗
df = df_original.drop_duplicates()

# 验证
print(f'原始行数:{len(df_original)}')
print(f'清洗后行数:{len(df)}')
print(f'删除了{len(df_original)-len(df)}行')

# 抽样检查
print(df.sample(5))

坑2:不处理异常值

表现: 清洗完数据,统计结果还是不对

原因: 异常值没处理

解决:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 检查异常值
print(df['销售额'].describe())

# 查看异常值
print(df[df['销售额'] < 0]) # 负数
print(df[df['销售额'] > 1000000]) # 过大

# 处理异常值
# 方案1:删除
df = df[df['销售额'] > 0]

# 方案2:标记
df.loc[df['销售额'] < 0, '备注'] = '异常'

# 方案3:修正(需要人工判断)
# df.loc[df['销售额'] < 0, '销售额'] = abs(df.loc[df['销售额'] < 0, '销售额'])

坑3:格式统一不彻底

表现: 清洗后还是有格式问题

原因: 没考虑到所有情况

解决:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 错误做法:只处理一种格式
df['日期'] = df['日期'].str.replace('.', '-')

# 正确做法:考虑所有情况
import pandas as pd

def clean_date(date_str):
"""处理各种日期格式"""
try:
# 尝试自动解析
return pd.to_datetime(date_str).strftime('%Y-%m-%d')
except:
return None

df['日期'] = df['日期'].apply(clean_date)

# 处理不了的标记出来
print('无法解析的日期:')
print(df[df['日期'].isna()])

坑4:数据类型转换错误

表现: 数字列变成文本,无法计算

解决:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 错误做法:直接转换
df['销售额'] = df['销售额'].astype(float) # 如果有非数字会报错

# 正确做法:容错转换
df['销售额'] = pd.to_numeric(df['销售额'], errors='coerce')
# errors='coerce':无法转换的变成NaN

# 检查转换失败的
print('转换失败:')
print(df[df['销售额'].isna()])

# 处理NaN
df['销售额'] = df['销售额'].fillna(0)

💡 七、本讲作业

作业1:清洗实战

准备一份有问题的Excel数据(或使用课程提供的数据),完成以下清洗:

  1. 删除重复行
  2. 删除空行
  3. 填充缺失值
  4. 统一日期格式
  5. 统一金额格式
  6. 标记异常值

作业2:公式生成

用AI生成以下公式:

  1. VLOOKUP公式:从另一个表查询数据
  2. SUMIF公式:按条件求和
  3. COUNTIF公式:按条件计数
  4. IF嵌套公式:多条件判断
  5. 日期处理公式:提取年月日

作业3:自动化脚本

编写Python脚本,实现批量清洗多个Excel文件。


🎯 本讲总结

核心要点

  1. 常见脏数据:格式不统一、缺失值、重复、异常、类型错误
  2. 清洗工具:ChatExcel(零代码)、AI对话(交互式)、Python(批量)
  3. AI生成公式:VLOOKUP、SUMIF、COUNTIF、IF、日期、文本
  4. 避坑要点:备份验证、处理异常、彻底统一、容错转换

实用清单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
✅ 清洗流程:
1. 备份原始数据
2. 删除重复行
3. 处理缺失值
4. 统一格式
5. 处理异常值
6. 验证结果

✅ 公式速查:
- 查询:VLOOKUP
- 求和:SUMIF/SUMIFS
- 计数:COUNTIF/COUNTIFS
- 判断:IF/IFS
- 日期:YEAR/MONTH/DAY
- 文本:LEFT/RIGHT/MID/LEN

🔗 课程导航

上一讲:AI 提示词入门 | 下一讲:AI 生成数据报表


💬 加入学习交流群

👉 点击加入交流群


💬 联系我

平台账号/链接
微信扫码加好友
微博@程序员晚枫
知乎@程序员晚枫
抖音@程序员晚枫
小红书@程序员晚枫
B 站Python 自动化办公社区

主营业务:AI 编程培训、企业内训、技术咨询


科技不高冷,AI很好用。

下一讲,我们学习如何用AI生成数据报表!

🎓 AI 编程实战课程

想系统学习 AI 编程?程序员晚枫的 AI 编程实战课 帮你从零上手!