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面试真题,复习时非常方便

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1523655.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全服务基础Windows--第8节-DHCP部署与安全

DHCP协议理解 定义:DHCP:Dynamic Host Configuration Protocol,动态主机配置协议,是⼀个应⽤在局域⽹中的⽹络协议,它使⽤UDP协议⼯作。 67(DHCP服务器)和68(DHCP客户端&#xff0…

如何在 Cursor IDE 中使用驭码CodeRider 进行 AI 编程?

驭码CodeRider 是极狐GitLab 公司自研发布的 AIGC 产品,可以用来进行 AI 编程和 DevOps 流程处理。本文分享如何在 Cursor 中使用驭码CodeRider。 Cursor 是近期比较火爆的一款 AI 代码编辑器,通过将 AI 能力引入软件研发来提升软件研发效率。而驭码Cod…

三级_网络技术_53_应用题

一、 请根据下图所示网络结构回答下列问题。 1.设备1应选用__________网络设备。 2.若对整个网络实施保护,防火墙应加在图中位置1~3的__________位置上。 3.如果采用了入侵检测设备对进出网络的流量进行检测,并且探测器是在交换机1上通过端口镜像方式…

CISAW认证涉及10个技术方向,到底哪个更适合您?

对于渴望在信息安全领域提升自己技能的你,CISAW(信息安全保障人员)认证无疑是一个理想的选择。 这项认证不仅适用于网络信息安全岗位的专业人员,还为那些寻求深化专业知识、提高职业竞争力的人士提供了宝贵的学习机会。 CISAW认…

【Linux】消息队列信号量

目录 消息队列 原理 接口 指令 信号量 概念 对于信号量理论的理解 信号量的操作 信号量的指令 消息队列 原理 消息队列提供了一个从一个进程向另外一个进程发送一个数据块的方法,每个数据块都有一个类型。对消息队列的的管理也是先描述,再组织…

开源网安引领AIGC+开发安全,智能防护铸就软件安全新高度

近日,国内网络安全领域知名媒体数说安全正式发布了《2024年中国网络安全市场100强》和《2024年中国网络安全十大创新方向》。开源网安凭借在市场表现力、资源支持力以及产品在AI方向的创新力上的优秀表现成功入选百强榜单,并被评为“AIGC开发安全”典型厂…

go发邮件的功能如何使用?新手必备的指南?

Go发邮件怎么实现发信功能?使用go发邮件的注意事项? 在这个数字化时代,电子邮件已成为我们日常沟通的重要工具。对于新手来说,掌握如何使用go发邮件功能是至关重要的。AokSend将详细介绍go发邮件的使用方法,帮助你快速…

分布式服务调用RPC框架复习

目录 1、Dubbo概念与架构 1.1 Dubbo简介 1.2 注册与发现流程图 1.3 Dubbo架构图 2、Dubbo调用流程 3、关于Dubbo 服务治理 3.1 Dubbo通信协议 3.2 序列化方式 3.3 负载均衡算法 4、Dubbo与Spring Cloud关系 4.1 相似之处 4.2 差异之处 5、Dubbo 与 gRPC 关系 6、…

【C/C++】web服务器项目开发总结【请求 | 响应 | CGI】

博客主页:花果山~程序猿-CSDN博客 文章分栏:Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,背景 二&…

使用 Milvus 和 Streamlit 搭建多模态产品推荐系统

我们可以使用 Milvus 搭建多模态 RAG 应用,用于产品推荐系统。用户只需简单上传一张图片并输入文字描述,Google 的 MagicLens 多模态 Embedding 模型就会将图像和文本编码成一个多模态向量。然后,使用这个向量从 Milvus 向量数据库中找到最相…

C++设计模式——Template Method模板方法模式

一,模板方法模式的定义 模板方法模式是一种行为型设计模式,它先定义了一个算法的大致框架,然后将算法的具体实现步骤分解到多个子类中。 模板方法模式为算法设计了一个抽象的模板,算法的具体代码细节由子类来实现,从…

【Linux】进程状态(RSDT 阻塞 僵尸 孤儿)

目录 进程状态 进程状态的查看 R和S 运行状态 T/t 暂停状态 kill命令 D (disk sleep)状态、 Z 状态(僵尸状态) 孤儿状态 运行状态 阻塞状态 进程状态 一个进程通常有三种状态 ◉ 就绪状态(Ready&#xff0…

如何验证谷歌seo服务商的实力真假?

要验证谷歌SEO服务商的实力真假,可以通过几种简单有效的方法。 你可以要求对方通过视频会议或上门服务,展示谷歌官方后台的真实数据。 通过Google Search Console的实时数据,你可以直接看到他们为客户提供的服务效果,这样的数据是…

【加密社】如何根据.dat文件恢复密钥

加密社 看了这篇指南,你将了解助记词和密钥地址(qianbao)背后的基本原理。 以及,如何找回你的大饼密钥。 Not your key, not your coin 如果你不掌握自己加密货币钱包的私钥,那么你实际上并不能完全控制你的资产 在当今…

【STM32开发笔记】STM32H7S78-DK上的CoreMark移植和优化--兼记STM32上的printf重定向实现及常见问题解决

【STM32开发笔记】STM32H7S78-DK上的CoreMark移植和优化--兼记STM32上的printf重定向实现及常见问题解决 一、CoreMark简介二、创建CubeMX项目2.1 选择MCU2.2 配置CPU时钟2.3 配置串口功能2.4 配置LED引脚2.5 生成CMake项目 三、基础功能支持3.1 支持记录耗时3.2 支持printf输出…

基于FPGA的OV5640摄像头图像采集

1.OV5640简介 OV5640是OV(OmniVision)公司推出的一款CMOS图像传感器,实际感光阵列为:2592 x 1944(即500w像素),该传感器内部集成了图像出炉的电路,包括自动曝光控制(AEC…

内网渗透-域环境搭建

构建内网环境 在学习内网渗透测试时,需要构建一个内网环境并搭建攻击主机,通过具体操作理解漏洞的工作原理,从而采取相应的防范措施。 一个完整的内网环境,需要各种应用程序、操作系统和网络设备,可能比较复杂。我们只需要搭建其中的核心部分,也就是Linux服务器和 Windows服务…

复变函数在大模型中的应用

1. 导入 说来惭愧,我研究生时的研究方向是复分析,但毕业近十年来几乎没用到它。 我还记得实习时做自我介绍时,我说我的研究方向是复分析。面试官不太了解,我便解释说,这是关于对 -1 开平方得到的虚数 i 的研究。 在…

【iOS】——分类拓展关联对象

分类 OC的动态特征允许使用类别为现有的类添加新方法并且不需要创建子类,不需要访问原有类的源代码。通过使用类别即可动态为现有的类添加新方法,而且可以将类定义模块化分布到多个相关文件。 分类是 Objective-C 中的一种语言特性,它允许你…

缓解webclient频繁报‘Connection prematurely closed BEFORE response’的问题

现象: 我在Java代码中使用org.springframework.web.reactive.function.client.WebClient进行网络请求,一开始会有比较多的偶发报错:Connection prematurely closed BEFORE response,网络连接莫名其妙就断了。 处理: …