)
今天给大家分享一个Python实战小案例——Excel数据批量处理适合Python新手入门也能解决日常工作中重复的Excel操作提升效率。日常工作中我们经常会遇到这样的场景需要批量读取多个Excel文件、合并数据、筛选关键字、批量生成报表手动操作不仅耗时还容易出错。而用Python只需几行代码就能自动化完成这些操作今天就带大家从零实现全程保姆级教程跟着做就能学会一、前言为什么用Python处理Excel很多小伙伴可能会问Excel本身就有筛选、合并功能为什么还要用Python其实原因很简单高效性批量处理几十、上百个Excel文件手动需要几小时Python只需几分钟甚至几秒可复用性写好的代码下次遇到相同场景直接运行即可无需重复操作灵活性可以根据自己的需求自定义筛选、计算、生成格式Excel自带功能难以实现入门友好本次案例用到的库pandas、openpyxl语法简单新手也能快速上手。本次案例目标批量读取指定文件夹下所有Excel文件合并数据筛选出符合条件的内容生成新的Excel报表并添加简单的数据统计平均值、最大值。二、环境准备新手必看在开始之前我们需要先安装两个核心库直接在终端执行以下命令即可复制粘贴就能运行无需复杂配置。# 安装pandas用于数据处理 pip install pandas # 安装openpyxl用于读取和写入Excel文件 pip install openpyxl注意如果安装失败可尝试更换镜像源比如阿里云镜像命令为pip install pandas -i https://mirrors.aliyun.com/pypi/simple/三、实战步骤全程代码解释我们分4个步骤完成每一步都有完整代码和详细解释新手可以逐行复制运行理解每一行代码的作用。步骤1导入所需库首先导入pandas和os库os库用于获取文件夹下的Excel文件Python自带无需额外安装。import pandas as pd import os步骤2批量读取指定文件夹下的Excel文件先定义Excel文件所在的文件夹路径建议将所有Excel文件放在同一个文件夹路径尽量简单避免中文空格然后遍历文件夹读取所有后缀为.xlsx的文件合并成一个DataFrame可以理解为一个超级Excel表格。# 1. 定义Excel文件所在文件夹路径替换成你自己的路径 file_path D:/Excel数据 # 示例路径注意斜杠是/不是\ # 2. 初始化一个空的DataFrame用于存储所有合并后的数据 all_data pd.DataFrame() # 3. 遍历文件夹下所有文件读取Excel for file in os.listdir(file_path): # 判断文件是否是Excel文件后缀为.xlsx if file.endswith(.xlsx): # 拼接完整的文件路径 full_file_path os.path.join(file_path, file) # 读取Excel文件默认读取第一个工作表 df pd.read_excel(full_file_path, engineopenpyxl) # 给当前数据添加一列“文件名”方便后续追溯数据来源 df[文件名] file # 将当前文件的数据添加到all_data中 all_data pd.concat([all_data, df], ignore_indexTrue)步骤3数据筛选与处理假设我们的Excel数据包含“姓名、年龄、成绩、部门”这几列我们需要筛选出“成绩≥80分”且“部门为技术部”的数据同时计算成绩的平均值、最大值添加到数据中。# 1. 数据筛选成绩≥80分 且 部门为技术部 filtered_data all_data[(all_data[成绩] 80) (all_data[部门] 技术部)] # 2. 数据统计计算筛选后成绩的平均值和最大值 avg_score filtered_data[成绩].mean() max_score filtered_data[成绩].max() # 3. 将统计结果添加到筛选后的数据末尾作为一行 stats_row pd.DataFrame({ 姓名: [统计结果], 年龄: [], 成绩: [f平均值{avg_score:.2f}最大值{max_score}], 部门: [], 文件名: [] }) filtered_data pd.concat([filtered_data, stats_row], ignore_indexTrue)注意请根据自己的Excel列名修改代码中的“成绩”“部门”等字段否则会报错如果需要其他筛选条件可修改括号内的逻辑比如成绩60、年龄30等。步骤4生成新的Excel报表将筛选和处理后的数据写入新的Excel文件保存到指定路径完成批量处理。# 定义新Excel文件的保存路径和名称 output_path D:/Excel数据/筛选后的数据.xlsx # 写入Excel文件indexFalse表示不保存行索引避免生成多余的列 filtered_data.to_excel(output_path, indexFalse, engineopenpyxl) print(f处理完成筛选后共{len(filtered_data)-1}条数据不含统计行文件已保存至{output_path})四、完整源码可直接复制运行将以下代码复制到Python编辑器PyCharm、VS Code、IDLE均可替换自己的文件路径即可直接运行。import pandas as pd import os # -------------------------- 配置参数替换成自己的路径和条件-------------------------- file_path D:/Excel数据 # Excel文件所在文件夹路径 filter_condition1 all_data[成绩] 80 # 筛选条件1成绩≥80分 filter_condition2 all_data[部门] 技术部 # 筛选条件2部门为技术部 output_path D:/Excel数据/筛选后的数据.xlsx # 输出文件路径 # ----------------------------------------------------------------------------------- # 批量读取Excel文件 all_data pd.DataFrame() for file in os.listdir(file_path): if file.endswith(.xlsx): full_file_path os.path.join(file_path, file) df pd.read_excel(full_file_path, engineopenpyxl) df[文件名] file all_data pd.concat([all_data, df], ignore_indexTrue) # 数据筛选与统计 filtered_data all_data[filter_condition1 filter_condition2] if len(filtered_data) 0: avg_score filtered_data[成绩].mean() max_score filtered_data[成绩].max() stats_row pd.DataFrame({ 姓名: [统计结果], 年龄: [], 成绩: [f平均值{avg_score:.2f}最大值{max_score}], 部门: [], 文件名: [] }) filtered_data pd.concat([filtered_data, stats_row], ignore_indexTrue) # 生成输出文件 filtered_data.to_excel(output_path, indexFalse, engineopenpyxl) print(f处理完成筛选后共{len(filtered_data)-1}条数据不含统计行文件已保存至{output_path})五、常见问题与避坑技巧新手必看问题1运行报错“FileNotFoundError: [Errno 2] No such file or directory”原因文件路径错误解决方案检查file_path是否正确确保文件夹存在路径中的斜杠用“/”不要用“\”Windows系统默认是“\”需要改成“/”或“\\”避免路径中包含中文、空格比如不要用“D:/我的Excel数据”可改成“D:/ExcelData”。问题2报错“ModuleNotFoundError: No module named pandas”原因没有安装pandas库解决方案重新执行安装命令pip install pandas如果安装失败更换镜像源。问题3读取Excel时某些列的数据读取异常比如日期变成数字解决方案在pd.read_excel()中添加参数parse_dates[日期列名]示例df pd.read_excel(full_file_path, engineopenpyxl, parse_dates[日期])六、扩展思路进阶学习学会这个基础案例后我们可以扩展更多功能满足更复杂的需求批量修改Excel格式比如设置字体、颜色、边框可使用openpyxl库的高级功能批量导出Excel数据到CSV、MySQL数据库添加异常处理比如跳过损坏的Excel文件、处理缺失值让代码更健壮将代码打包成exe文件发给不懂Python的同事双击即可运行。七、总结本次案例用Python实现了Excel数据的批量读取、合并、筛选和导出全程代码简单易懂新手也能快速上手。其实Python处理Excel的核心就是“自动化”把重复的手动操作交给代码节省时间去做更有价值的事情。如果觉得这个案例对你有帮助欢迎点赞、收藏、关注后续会分享更多Python实战案例比如爬虫、数据分析、自动化办公。如果运行过程中遇到问题欢迎在评论区留言我会一一回复