news 2026/4/18 11:30:56

Python实战拒绝加班!5分钟搞定Excel数据合并与可视化分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python实战拒绝加班!5分钟搞定Excel数据合并与可视化分析

摘要:还在手动复制粘贴合并几十个Excel表格?还在为每天重复的日报、周报头秃?本文将带你通过一个真实的Python实战案例,利用PandasMatplotlib库,实现多文件自动读取、数据清洗、合并汇总以及生成可视化报表。让代码帮你工作,按时下班!


🔍 实战背景

作为一名“打工人”,我们经常会遇到这样的场景:

  1. 每个月都要从各个部门收集销售数据(例如sales_jan.xlsx,sales_feb.xlsx...)。

  2. 需要手动将这些表格合并到一个总表中。

  3. 根据总表数据,计算每个产品的销售总额。

  4. 画出柱状图,贴到PPT里汇报。

如果只有两三个文件还好,但如果有几十个文件,或者每天都要做一次,手动处理不仅效率低,还容易出错。今天,我们就用不到50行Python代码彻底解决这个问题。


🛠️ 环境准备

在开始之前,请确保你的Python环境中安装了以下核心库。如果没有安装,请在终端(Terminal/CMD)执行以下命令:

pip install pandas matplotlib openpyxl
  • Pandas: 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, index=False) 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_index=True) print(f"📊 合并完成!总数据行数: {len(merged_df)}") # 3. 数据分析:按产品汇总销售额 # group by '产品名称', sum '销售额' summary = merged_df.groupby('产品名称')['销售额'].sum().sort_values(ascending=False) 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, color='skyblue', edgecolor='blue') # 添加标题和标签 plt.title('第一季度各产品销售总额统计', fontsize=16) plt.xlabel('产品名称', fontsize=12) plt.ylabel('销售额 (元)', fontsize=12) # 在柱状图上方添加具体数值标签 for bar in bars: height = bar.get_height() plt.text(bar.get_x() + bar.get_width() / 2, height, f'{int(height)}', ha='center', va='bottom') plt.grid(axis='y', linestyle='--', alpha=0.7) # 保存图片 plt.savefig('销售分析报表.png') print("📈 图表已保存为 '销售分析报表.png'") # 显示图表 plt.show() # 调用绘图函数 if summary_data is not None: visualize_data(summary_data)

🚀 进阶技巧:如何让代码更强?

虽然上面的代码已经能解决大问题,但在实际工作中,你还可以尝试以下优化:

  1. 异常处理:如果在读取Excel时遇到格式错误的文件,使用try-except跳过,防止程序崩溃(代码中已包含基础演示)。

  2. 自动发送邮件:结合 Python 的smtplib库,生成报表后直接自动发送邮件给老板。

  3. 定时任务:如果是每天固定的日报,可以使用 Windows 的“任务计划程序”或 Linux 的Crontab,让脚本每天早上9点自动运行。


📝 总结

通过这个案例,我们不仅复习了 Pandas 的读取 (read_excel)、合并 (concat) 和分组聚合 (groupby) 操作,还实践了 Matplotlib 的绘图功能。

**Python 的魅力在于:一次编写,无限次复用。**哪怕你今天只节省了10分钟,一年下来也是几十个小时的自由时间!

如果你对代码有任何疑问,或者想了解如何将结果导出为精美的 HTML 报表,欢迎在评论区留言交流!👇

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 7:57:58

鼠标性能优化终极指南:3步完成专业级测试

鼠标性能优化终极指南:3步完成专业级测试 【免费下载链接】MouseTester 项目地址: https://gitcode.com/gh_mirrors/mo/MouseTester 还在为游戏中的鼠标飘移而烦恼?或者在工作中感觉鼠标响应不够灵敏?MouseTester作为一款专业的鼠标性…

作者头像 李华
网站建设 2026/4/18 5:44:35

Windows虚拟显示器实战指南:3步打造高效多屏工作空间

Windows虚拟显示器实战指南:3步打造高效多屏工作空间 【免费下载链接】virtual-display-rs A Windows virtual display driver to add multiple virtual monitors to your PC! For Win10. Works with VR, obs, streaming software, etc 项目地址: https://gitcode…

作者头像 李华
网站建设 2026/4/18 5:43:27

AMD Ryzen性能释放终极方案:SMUDebugTool深度调优实战

AMD Ryzen性能释放终极方案:SMUDebugTool深度调优实战 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

作者头像 李华
网站建设 2026/4/17 18:20:38

SMUDebugTool终极指南:优化AMD锐龙处理器性能的5大技巧

还在为你的AMD锐龙处理器无法发挥全部潜力而烦恼吗?SMUDebugTool作为一款专业的硬件调试工具,让普通用户也能轻松掌握处理器深度调校技巧。这款工具专为锐龙平台设计,提供实时监控、精准调节和智能配置等核心功能,帮助您充分挖掘硬…

作者头像 李华
网站建设 2026/4/18 5:26:16

艾尔登法环帧率解锁工具:3个常见问题快速排查指南

艾尔登法环帧率解锁工具:3个常见问题快速排查指南 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh_mirrors/el/EldenRi…

作者头像 李华