ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

Python自动化Excel数据清洗与汇总实战

Python自动化Excel数据清洗与汇总实战 1. 项目概述每次月底盘点水果库存时你是不是也对着几十张Excel表格发愁从不同门店收集来的销售数据格式五花八门手动复制粘贴不仅容易出错还特别耗时。去年夏天我在连锁水果店做系统升级时就遇到过这个痛点 - 当时财务部的同事每周要花6个小时做数据汇总还经常因为漏统计被老板批评。这个Python脚本就是为了解决这个具体场景设计的。它能够自动识别不同格式的Excel文件提取其中的水果品类和对应数量最终生成一份标准化的汇总报表。最棒的是整个过程完全不需要打开Excel后台自动运行3分钟就能完成原本需要半天的工作量。2. 核心功能解析2.1 多格式文件兼容传统VBA脚本最大的问题就是遇到格式变化的文件就会报错。我们的解决方案是采用智能识别策略首先尝试用pandas直接读取兼容xls/xlsx如果失败转为使用openpyxl逐行扫描通过关键词匹配定位数据区域比如搜索苹果、香蕉等水果名称def detect_data_sheet(file_path): try: df pd.read_excel(file_path) if 品类 in df.columns and 数量 in df.columns: return df except: wb openpyxl.load_workbook(file_path) for sheet in wb: for row in sheet.iter_rows(): for cell in row: if isinstance(cell.value, str) and any(fruit in cell.value for fruit in FRUIT_LIST): return parse_custom_format(sheet)2.2 智能数据清洗不同门店的数据往往存在各种问题单位不统一有的用斤有的用kg名称不规范红富士 vs 富士苹果空白或错误数据我们建立了标准化处理流程单位统一转换为千克水果名称映射到标准品类异常值自动标记待核查提示建议在config.py中维护一个水果名称映射表后续新增品类只需修改这个文件3. 完整实现步骤3.1 环境准备推荐使用Python 3.8版本主要依赖库pandas 1.3openpyxl 3.0xlrd 2.0用于兼容老版xls格式安装命令pip install pandas openpyxl xlrd --upgrade3.2 核心代码解析主程序逻辑分为四个模块文件遍历模块def scan_folder(folder_path): valid_files [] for file in os.listdir(folder_path): if file.endswith((.xls, .xlsx)): valid_files.append(os.path.join(folder_path, file)) return valid_files数据提取模块def extract_fruit_data(file): # 实现上文提到的智能识别逻辑 ...数据聚合模块def aggregate_data(data_list): total_df pd.concat(data_list) summary total_df.groupby(标准品类)[数量].sum() return summary.sort_values(ascendingFalse)结果输出模块def save_report(result_df, output_path): with pd.ExcelWriter(output_path) as writer: result_df.to_excel(writer, sheet_name汇总) # 自动添加数据透视表 ...3.3 使用示例将脚本保存为fruit_summary.py后python fruit_summary.py -i ./input_files -o ./output/report.xlsx参数说明-i 指定输入文件夹路径-o 指定输出文件路径4. 实战技巧与避坑指南4.1 性能优化处理大量文件时需要注意使用glob替代os.listdir提高文件搜索效率对于超大型Excel50MB改用chunksize分块读取启用多线程处理建议用concurrent.futuresfrom concurrent.futures import ThreadPoolExecutor def batch_process(files): with ThreadPoolExecutor(max_workers4) as executor: results list(executor.map(process_single_file, files)) return results4.2 常见问题排查编码问题遇到中文乱码时在read_excel中添加encodinggbk参数特殊字符处理可以使用errorsignore选项格式异常合并单元格会导致pandas读取错位需要先预处理遇到加密文件时提示用户手动处理内存不足对于超多文件100个建议分批处理使用del及时释放不再使用的DataFrame5. 扩展应用场景这个脚本经过简单修改还可以用于连锁餐厅的食材库存统计超市日用品销售分析电商平台商品数据汇总进阶改进方向增加自动邮件发送功能集成到钉钉/企业微信机器人开发可视化看板我在实际使用中发现最耗时的其实不是编码过程而是前期与各部门确认数据标准的时间。建议在正式使用前先拿3-5个典型文件做充分测试确保识别规则覆盖所有特殊情况。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表