当前位置: 首页 > news >正文

Python 与 Excel 图表自动化:让数据“会说话”

在数据驱动的时代,数据分析师、财务专家、销售经理们都离不开Excel——这个简单而强大的工具。而Excel图表是展现数据故事的不二之选。然而,手动创建图表不仅耗时,还容易出错。如何让这繁琐的工作变得简单?答案就是:Python。

图片

通过Python,我们可以实现Excel数据处理和图表的自动生成,让复杂变得简单,让重复变得高效。

Python,作为数据科学界的瑞士军刀,通过诸如pandasopenpyxl这样的库,可以轻松实现Excel数据处理和图表自动生成。

  • • pandas:数据处理神器,能够快速读取、清洗、转换Excel数据。数据分析师们离不开它。

  • • openpyxl:用于读写Excel文件的库,支持图表生成和复杂数据操作。它是将Python与Excel无缝连接的桥梁。

以下是一个基于具体Excel数据的完整Python脚本示例。假设你有一个名为sample_data.xlsx的Excel文件,文件中包含以下数据:

MonthSalesProfitMarket Share
Jan2005020%
Feb2506025%
Mar3008030%
Apr2807027%
May3209035%

Excel文件准备

请确保你的Excel文件(sample_data.xlsx)包含以上数据结构,且位于Python脚本同一目录下。

代码实现

下面是一个基于该数据生成各种图表的Python脚本。该脚本读取Excel文件、处理数据,并自动在Excel中生成柱状图、饼图、折线图、面积图、散点图、雷达图以及组合图。

图片

Python代码示例

import pandas as pd
from openpyxl import Workbook, load_workbook
from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl.chart import (Reference,BarChart,PieChart,LineChart,AreaChart,ScatterChart,RadarChart,Series
)# 1. 读取Excel数据
file_path = 'sample_data.xlsx'
df = pd.read_excel(file_path)# 2. 创建Excel工作簿并写入数据
wb = Workbook()
ws = wb.active# 将DataFrame数据写入工作表
for r in dataframe_to_rows(df, index=False, header=True):ws.append(r)# 3. 生成柱状图(Sales数据)
bar_chart = BarChart()
data = Reference(ws, min_col=2, min_row=2, max_row=len(df) + 1)  # Sales列数据
categories = Reference(ws, min_col=1, min_row=2, max_row=len(df) + 1)  # Month列作为类别
bar_chart.add_data(data, titles_from_data=True)
bar_chart.set_categories(categories)
ws.add_chart(bar_chart, "E2")  # 插入图表到E2单元格# 4. 生成饼图(Market Share数据)
pie_chart = PieChart()
labels = Reference(ws, min_col=1, min_row=2, max_row=len(df) + 1)  # Month列作为标签
data = Reference(ws, min_col=4, min_row=1, max_row=len(df) + 1)  # Market Share列数据
pie_chart.add_data(data, titles_from_data=True)
pie_chart.set_categories(labels)
ws.add_chart(pie_chart, "J2")  # 插入图表到J2单元格# 5. 生成折线图(Profit数据)
line_chart = LineChart()
data = Reference(ws, min_col=3, min_row=2, max_row=len(df) + 1)  # Profit列数据
line_chart.add_data(data, titles_from_data=True)
line_chart.set_categories(categories)
ws.add_chart(line_chart, "M2")  # 插入图表到M2单元格# 6. 生成面积图(Sales数据)
area_chart = AreaChart()
area_chart.add_data(data, titles_from_data=True)
area_chart.set_categories(categories)
ws.add_chart(area_chart, "R2")  # 插入图表到R2单元格# 7. 生成散点图(Sales vs. Profit)
scatter_chart = ScatterChart()
xvalues = Reference(ws, min_col=2, min_row=2, max_row=len(df) + 1)  # Sales列数据
yvalues = Reference(ws, min_col=3, min_row=2, max_row=len(df) + 1)  # Profit列数据
series = Series(yvalues, xvalues, title_from_data=True)
scatter_chart.series.append(series)
ws.add_chart(scatter_chart, "V2")  # 插入图表到V2单元格# 8. 生成雷达图(Market Share数据)
radar_chart = RadarChart()
data_radar = Reference(ws, min_col=4, min_row=2, max_row=len(df) + 1)  # Market Share列数据
radar_chart.add_data(data_radar, titles_from_data=True)
radar_chart.set_categories(labels)
ws.add_chart(radar_chart, "Z2")  # 插入图表到Z2单元格# 9. 生成组合图(Sales和Profit)
combo_chart = BarChart()
data_sales = Reference(ws, min_col=2, min_row=2, max_row=len(df) + 1)
combo_chart.add_data(data_sales, titles_from_data=True)
combo_chart.set_categories(categories)line_chart2 = LineChart()
data_profit = Reference(ws, min_col=3, min_row=2, max_row=len(df) + 1)
line_chart2.add_data(data_profit, titles_from_data=True)
line_chart2.set_categories(categories)combo_chart += line_chart2
ws.add_chart(combo_chart, "AE2")  # 插入组合图表到AE2单元格# 10. 保存Excel文件
output_file_path = 'sample_data_with_charts.xlsx'
wb.save(output_file_path)
print(f"Excel文件已保存为 {output_file_path},图表生成完毕!")

代码解释

  1. 1. 读取Excel数据:使用pandas读取Excel文件的数据。

  2. 2. 创建Excel工作簿并写入数据:使用openpyxl创建新的Excel工作簿,并将pandas DataFrame的数据写入工作表中。

  3. 3. 生成各种图表

    • • 柱状图:显示每个月的销售数据。

    • • 饼图:显示每个月的市场份额数据。

    • • 折线图:显示每个月的利润变化趋势。

    • • 面积图:显示每个月的销售额变化。

    • • 散点图:显示销售额与利润的关系。

    • • 雷达图:显示市场份额数据的分布。

    • • 组合图:结合柱状图(销售额)和折线图(利润)显示销售和利润的对比。

  4. 4. 保存Excel文件:将包含所有图表的Excel文件保存到本地。

通过以上代码,你可以根据具体的Excel数据自动生成各种类型的图表,并将这些图表插入到Excel文件中。这不仅可以节省大量时间,还可以避免手动操作的繁琐和错误。你可以根据需要调整代码,生成其他类型的图表或更复杂的数据分析和可视化。

如果分享你的信息,对你有用!别忘了三连击哦——点赞、收藏、关注!

喜欢学习Pyhon的朋友们, 可以【点击这里】免费领取一份全套的Python资料包!

包括:Python激活码+安装包、Python
web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

① Python所有方向的学习路线图,清楚各个方向要学什么东西

② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析

③ 100多个Python实战案例,学习不再是只会理论

④ 华为出品独家Python漫画教程,手机也能学习

⑤ 历年互联网企业Python面试真题,复习时非常方便

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 使用Qdrant + CNCLIP + Gradio 实现图文检索
  • SprinBoot+Vue图书馆预约与占座微信小程序的设计与实现
  • CISAW认证培训的方向包括多少种?
  • GNN会议期刊汇总(人工智能、机器学习、深度学习、数据挖掘)
  • 基于STM32的猫狗宠物喂养系统设计(微信小程序)(215)
  • 电脑图片只显示图标不显示图片,但是可以打开看,就是不能预览
  • 【课程学习】信号检测与估计
  • Kafka3.x 使用 KRaft 模式部署 不依赖 ZooKeeper
  • PL/SQL程序中调用Java代码
  • 【自动驾驶】决策规划算法 | 数学基础(二)凸优化与非凸优化
  • ubuntu20.04(wsl2)测试 arcface 人脸识别(计算特征向量)
  • 无人机 PX4 飞控 | ROS应用层开发:offboard 模式切换详细总结
  • 强连通分量专题总结
  • 电脑知识:快速轻松地恢复丢失的数据的五大数据恢复软件
  • ChatGPT3.5/4.0新手使用手册,国内中文版使用教程
  • 〔开发系列〕一次关于小程序开发的深度总结
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • exif信息对照
  • httpie使用详解
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • IP路由与转发
  • js数组之filter
  • Netty源码解析1-Buffer
  • PHP那些事儿
  • python 学习笔记 - Queue Pipes,进程间通讯
  • ReactNativeweexDeviceOne对比
  • Redis学习笔记 - pipline(流水线、管道)
  • 将 Measurements 和 Units 应用到物理学
  • 前端知识点整理(待续)
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 设计模式走一遍---观察者模式
  • 使用API自动生成工具优化前端工作流
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 用Canvas画一棵二叉树
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 正则学习笔记
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • ​马来语翻译中文去哪比较好?
  • ​字​节​一​面​
  • # Java NIO(一)FileChannel
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (rabbitmq的高级特性)消息可靠性
  • (SpringBoot)第七章:SpringBoot日志文件
  • (分布式缓存)Redis持久化
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (四)汇编语言——简单程序
  • (一)基于IDEA的JAVA基础1
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET 回调、接口回调、 委托
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件