当前位置: 代码网 > it编程>前端脚本>Python > Python批量处理Excel读写和数据清洗的完整教程

Python批量处理Excel读写和数据清洗的完整教程

2026年09月01日 Python 我要评论
如果你还在用 vba 复制粘贴、写长串宏代码,那么这篇文章会让你打开新世界的大门。python + pandas​ 不仅能完成 vba 能做的一切,还能轻松应对几十万行数据、批量处理上百个文件,而且代

如果你还在用 vba 复制粘贴、写长串宏代码,那么这篇文章会让你打开新世界的大门。python + pandas​ 不仅能完成 vba 能做的一切,还能轻松应对几十万行数据、批量处理上百个文件,而且代码可读性更强、维护成本更低。

一、为什么要用 python 替代 vba?

对比项vbapython
学习曲线陡峭,语法老旧平缓,语法直观
大数据支持易卡死轻松百万行
批量处理繁琐一行循环搞定
生态工具office 内pandas / numpy / matplotlib
可维护性强,版本管理友好

一句话总结:vba 适合“点一点”,python 适合“批量化、工程化”。

二、环境准备

1. 安装 python

推荐 anaconda(自带 pandas):

conda install pandas openpyxl xlsxwriter

或 pip:

pip install pandas openpyxl xlsxwriter

2. 核心库说明

  • pandas:数据处理核心
  • openpyxl:读写 .xlsx
  • xlsxwriter:高性能写 excel(支持图表)

三、基础操作:读 & 写 excel

1. 读取 excel

import pandas as pd

df = pd.read_excel("data.xlsx", sheet_name="sheet1")
print(df.head())

支持:

  • sheet_name=0(第一个表)
  • usecols="a:c"(指定列)
  • skiprows=2(跳过前几行)

2. 写入 excel

df.to_excel("output.xlsx", index=false)

不写索引:index=false

指定工作表名:sheet_name="结果"

四、批量读写:真正解放双手

场景:合并一个文件夹下所有 excel

import os
import pandas as pd

folder_path = "./excels/"
all_dfs = []

for file in os.listdir(folder_path):
    if file.endswith(".xlsx"):
        df = pd.read_excel(os.path.join(folder_path, file))
        df["来源文件"] = file   # 标记来源
        all_dfs.append(df)

result = pd.concat(all_dfs, ignore_index=true)
result.to_excel("合并结果.xlsx", index=false)

vba 要几十行,python 10 行搞定

五、数据清洗实战(高频场景)

1. 删除空行

df.dropna(how="all", inplace=true)

2. 填充缺失值

df["销售额"].fillna(0, inplace=true)
df["城市"].fillna("未知", inplace=true)

3. 去重

df.drop_duplicates(subset="订单号", keep="first", inplace=true)

4. 类型转换(常见坑)

df["日期"] = pd.to_datetime(df["日期"])
df["金额"] = df["金额"].astype(float)

excel 里看着是数字,python 里可能是字符串!

5. 字符串清洗

df["姓名"] = df["姓名"].str.strip()          # 去空格
df["手机号"] = df["手机号"].str.replace("-", "")
df = df[df["城市"].str.contains("北京|上海")]

6. 条件筛选

# 单条件
high_sales = df[df["销售额"] > 10000]

# 多条件
vip_beijing = df[(df["会员"] == "是") & (df["城市"] == "北京")]

六、新增列 / 计算字段(告别公式)

1. 简单计算

df["利润"] = df["销售额"] - df["成本"]

2. if 逻辑(比 excel 公式清爽)

df["等级"] = df["销售额"].apply(
    lambda x: "高" if x > 10000 else ("中" if x > 5000 else "低")
)

3. 分组统计(透 视表替代)

summary = df.groupby("城市")["销售额"].agg(
    总销售额="sum",
    平均销售额="mean",
    订单数="count"
).reset_index()

 等价于 excel 数据透 视表,但更快、可复用

七、excel 美化 & 高级输出

1. 多 sheet 输出

with pd.excelwriter("报表.xlsx", engine="xlsxwriter") as writer:
    df.to_excel(writer, sheet_name="原始数据", index=false)
    summary.to_excel(writer, sheet_name="汇总", index=false)

2. 自动调整列宽 + 冻结首行

workbook = writer.book
worksheet = writer.sheets["汇总"]

worksheet.freeze_panes(1, 0)  # 冻结首行

for i, col in enumerate(summary.columns):
    width = max(summary[col].astype(str).map(len).max(), len(col)) + 2
    worksheet.set_column(i, i, width)

3. 添加图表(vba 最痛苦的部分)

chart = workbook.add_chart({"type": "column"})

chart.add_series({
    "categories": "=汇总!$a$2:$a$10",
    "values": "=汇总!$b$2:$b$10",
    "name": "销售额"
})

worksheet.insert_chart("e2", chart)

八、定时自动运行(进阶)

windows 任务计划 / linux crontab

python excel_auto.py

结合:

  • 每天自动拉取数据库 → 清洗 → 发邮件
  • 财务日报 / 运营周报全自动生成

九、常见错误 & 避坑指南

问题解决方案
excel 被占用无法保存关闭 excel 再运行
日期变成数字pd.to_datetime()
科学计数法写入时设置格式
中文乱码使用 utf-8
内存爆炸使用 chunksize 分批读

十、学习路径建议

掌握 pandas 基础(读、写、筛选)

熟练数据清洗(dropna / fillna / groupby

学会批量处理文件

尝试自动化脚本 + 定时任务

进阶:sql + python + bi 工具

十一、总结

vba 是“办公技巧”,python 是“生产力工具”。

  • 批量处理不再靠复制粘贴
  • 数据清洗逻辑清晰、可复用
  • 报表自动生成,零人工干预
  • 代码一次写好,终身受用

当你第一次用 python 把 100 个 excel 合并成一张表,你会明白:

不是 excel 不行,而是你该换工具了。

只要告诉我你最常用的 excel 场景即可。

以上就是python批量处理excel读写和数据清洗的完整教程的详细内容,更多关于python处理excel的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com