导航 网站 分析,wordpress托管 根目录,广州越秀区美食攻略,着力加强网站内容建设摘要#xff1a;还在手动复制粘贴合并几十个Excel表格#xff1f;还在为每天重复的日报、周报头秃#xff1f;本文将带你通过一个真实的Python实战案例#xff0c;利用 Pandas 和 Matplotlib 库#xff0c;实现多文件自动读取、数据清洗、合并汇总以及生成可视化报表。让代…摘要还在手动复制粘贴合并几十个Excel表格还在为每天重复的日报、周报头秃本文将带你通过一个真实的Python实战案例利用Pandas和Matplotlib库实现多文件自动读取、数据清洗、合并汇总以及生成可视化报表。让代码帮你工作按时下班 实战背景作为一名“打工人”我们经常会遇到这样的场景每个月都要从各个部门收集销售数据例如sales_jan.xlsx,sales_feb.xlsx...。需要手动将这些表格合并到一个总表中。根据总表数据计算每个产品的销售总额。画出柱状图贴到PPT里汇报。如果只有两三个文件还好但如果有几十个文件或者每天都要做一次手动处理不仅效率低还容易出错。今天我们就用不到50行Python代码彻底解决这个问题。️ 环境准备在开始之前请确保你的Python环境中安装了以下核心库。如果没有安装请在终端Terminal/CMD执行以下命令pip install pandas matplotlib openpyxlPandas: Python数据分析的神器处理表格数据的首选。Matplotlib: 最经典的绘图库用于生成可视化图表。Openpyxl: Pandas读取/写入Excel文件即需要依赖的引擎。 代码实战步骤我们将整个流程分为三个模块数据构造模拟环境、数据合并与清洗、数据可视化。1. 模拟数据如果你已有数据可跳过为了演示方便我们先写一段脚本在当前目录下生成3个模拟的月度销售Excel文件。import pandas as pd import random # 创建模拟数据的函数 def create_dummy_data(): products [键盘, 鼠标, 显示器, 显卡, 硬盘] months [1月, 2月, 3月] for month in months: data { 产品名称: [random.choice(products) for _ in range(20)], 销售数量: [random.randint(1, 10) for _ in range(20)], 单价: [random.randint(100, 3000) for _ in range(20)], 月份: [month] * 20 } df pd.DataFrame(data) # 计算销售额 df[销售额] df[销售数量] * df[单价] # 保存为Excel file_name f销售数据_{month}.xlsx df.to_excel(file_name, indexFalse) print(f✅ 已生成模拟文件: {file_name}) if __name__ __main__: create_dummy_data()2. 核心逻辑批量合并与分析这是本文的重头戏。我们将使用glob模块查找文件用pandas进行合并。import pandas as pd import glob import os import matplotlib.pyplot as plt # 设置matplotlib支持中文显示根据系统不同可能需要调整字体 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负号 def process_sales_data(): # 1. 获取所有销售数据文件 # 假设文件都以 销售数据_ 开头 file_list glob.glob(销售数据_*.xlsx) if not file_list: print(❌ 未找到相关Excel文件请检查路径。) return print(f 发现 {len(file_list)} 个文件准备合并...) # 2. 循环读取并合并 all_data [] for file in file_list: try: df pd.read_excel(file) all_data.append(df) except Exception as e: print(f⚠️ 读取 {file} 失败: {e}) # 使用 concat 合并所有 DataFrame merged_df pd.concat(all_data, ignore_indexTrue) print(f 合并完成总数据行数: {len(merged_df)}) # 3. 数据分析按产品汇总销售额 # group by 产品名称, sum 销售额 summary merged_df.groupby(产品名称)[销售额].sum().sort_values(ascendingFalse) print(\n--- 销售排行榜 (Top 5) ---) print(summary.head()) return summary, merged_df # 执行处理 summary_data, raw_data process_sales_data()3. 数据可视化一键生成报表图有了处理好的summary_data我们可以直接画图并保存。def visualize_data(data): # 创建画布 plt.figure(figsize(10, 6)) # 绘制柱状图 # data.index 是产品名称, data.values 是销售总额 bars plt.bar(data.index, data.values, colorskyblue, edgecolorblue) # 添加标题和标签 plt.title(第一季度各产品销售总额统计, fontsize16) plt.xlabel(产品名称, fontsize12) plt.ylabel(销售额 (元), fontsize12) # 在柱状图上方添加具体数值标签 for bar in bars: height bar.get_height() plt.text(bar.get_x() bar.get_width() / 2, height, f{int(height)}, hacenter, vabottom) plt.grid(axisy, linestyle--, alpha0.7) # 保存图片 plt.savefig(销售分析报表.png) print( 图表已保存为 销售分析报表.png) # 显示图表 plt.show() # 调用绘图函数 if summary_data is not None: visualize_data(summary_data) 进阶技巧如何让代码更强虽然上面的代码已经能解决大问题但在实际工作中你还可以尝试以下优化异常处理如果在读取Excel时遇到格式错误的文件使用try-except跳过防止程序崩溃代码中已包含基础演示。自动发送邮件结合 Python 的smtplib库生成报表后直接自动发送邮件给老板。定时任务如果是每天固定的日报可以使用 Windows 的“任务计划程序”或 Linux 的Crontab让脚本每天早上9点自动运行。 总结通过这个案例我们不仅复习了 Pandas 的读取 (read_excel)、合并 (concat) 和分组聚合 (groupby) 操作还实践了 Matplotlib 的绘图功能。**Python 的魅力在于一次编写无限次复用。**哪怕你今天只节省了10分钟一年下来也是几十个小时的自由时间如果你对代码有任何疑问或者想了解如何将结果导出为精美的 HTML 报表欢迎在评论区留言交流