Python对于Excel的一些基本绘制图标操作,让你日常工作更加轻松
off999 2024-10-02 18:43 17 浏览 0 评论
前言
在Python中,我们可以利用第三方库来方便地操作Excel文件。这里使用python-excel.org中提供的openpyxl库,用于读写Excel 2007及以上版本的Excel文件。可以让我们日常工作中对于Excel方面的处理更加的方便
安装
使用pip安装工具来安装openpyxl,安装需要打开系统命令行(win +R)输入CMD
pip install openpyxl
即可安装。
初识操作代码
下面的代码用于创建Excel工作簿并在工作表中写入数据:
运行代码实现效果:
垂直、水平和堆积条形图
注意,下列设置影响不同的图表类型:
通过设置type为col或bar在垂直和水平条形图之间切换
当使用堆积图时,overlap需要被设置成100
如果条形是水平的,那么x和y轴相反
下面的代码用于创建不同型式的条形图:
from openpyxl import Workbook
from openpyxl.chart import BarChart, Series, Reference
wb= Workbook(write_only=True)
ws= wb.create_sheet
rows= [
('Number','Batch 1', 'Batch2'),
(2, 10, 30),
(3, 40, 60),
(4, 50, 70),
(5, 20, 10),
(6, 10, 40),
(7, 50, 30),
]
for row in rows:
ws.append(row)
chart1= BarChart
chart1.type= "col"
chart1.style= 10
chart1.title= "Bar Chart"
chart1.y_axis.title= 'Test number'
chart1.x_axis.title= 'Sample length (mm)'
data= Reference(ws, min_col=2, min_row=1, max_row=7, max_col=3)
cats= Reference(ws, min_col=1, min_row=2, max_row=7)
chart1.add_data(data,titles_from_data=True)
chart1.set_categories(cats)
chart1.shape= 4
ws.add_chart(chart1,"A10")
from copy import deepcopy
chart2= deepcopy(chart1)
chart2.style= 11
chart2.type= "bar"
chart2.title= "Horizontal Bar Chart"
ws.add_chart(chart2,"G10")
chart3= deepcopy(chart1)
chart3.type= "col"
chart3.style= 12
chart3.grouping= "stacked"
chart3.overlap= 100
chart3.title= 'Stacked Chart'
ws.add_chart(chart3,"A27")
chart4= deepcopy(chart1)
chart4.type= "bar"
chart4.style= 13
chart4.grouping= "percentStacked"
chart4.overlap= 100
chart4.title= 'Percent Stacked Chart'
ws.add_chart(chart4,"G27")
wb.save("bar.xlsx")
运行效果:
三维条形图
也可以创建三维条形图,代码如下:
from openpyxl import Workbook
from openpyxl.chart import (
Reference,
Series,
BarChart3D,
)
wb= Workbook
ws= wb.active
rows= [
(None, 2013, 2014),
("Apples",5, 4),
("Oranges",6, 2),
("Pears",8, 3)
]
for row in rows:
ws.append(row)
data= Reference(ws, min_col=2, min_row=1, max_col=3, max_row=4)
titles= Reference(ws, min_col=1, min_row=2, max_row=4)
chart= BarChart3D
chart.title= "3D Bar Chart"
chart.add_data(data=data,titles_from_data=True)
chart.set_categories(titles)
ws.add_chart(chart,"A6")
wb.save("bard.xlsx")
效果图:
股价图
不同形式股价图的特定格式选项:
高-低-收盘形式股价图实际上是一个不带线条的折线图,其标记设置为XYZ,并将hiLoLines设置为True。
开盘-高-低-收盘形式股价图就像一个带有标记的高-低-收盘股价图,每个数据点设置为XYZ和upDownLines。
可以通过组合股价图和条形图来添加表示成交量的条形。
基本的代码如下:
from datetime import date
from openpyxl import Workbook
from openpyxl.chart import (
BarChart,
StockChart,
Reference,
Series,
)
from openpyxl.chart.axis import DateAxis,ChartLines
from openpyxl.chart.updown_bars import UpDownBars
wb= Workbook
ws= wb.active
rows= [
['日期','成交量','开盘','高','低','收盘'],
['2018-11-10',20000,26.20,27.20,23.49,25.45,],
['2018-11-11',10000,25.45,25.03,19.55,23.05,],
['2018-11-12',15000,23.05,24.46,20.03,22.42,],
['2018-11-13',2000,22.42,23.97,20.07,21.90,],
['2018-11-14',12000,21.9,23.65,19.50,21.51,],
]
for row in rows:
ws.append(row)
# 高-低-收盘
c1= StockChart
labels= Reference(ws, min_col=1, min_row=2, max_row=6)
data= Reference(ws, min_col=4, max_col=6, min_row=1, max_row=6)
c1.add_data(data,titles_from_data=True)
c1.set_categories(labels)
for s in c1.series:
s.graphicalProperties.line.noFill= True
# 标记收盘
s.marker.symbol= "dot"
s.marker.size= 5
c1.title= "高-低-收盘"
c1.hiLowLines= ChartLines
from openpyxl.chart.data_source import NumData, NumVal
pts= [NumVal(idx=i) for i in range(len(data)- 1)]
cache= NumData(pt=pts)
c1.series[-1].val.numRef.numCache=cache
ws.add_chart(c1, "A10")
# 开盘-高-低-收盘
c2= StockChart
data= Reference(ws, min_col=3, max_col=6, min_row=1, max_row=6)
c2.add_data(data,titles_from_data=True)
c2.set_categories(labels)
for s in c2.series:
s.graphicalProperties.line.noFill= True
c2.hiLowLines= ChartLines
c2.upDownBars= UpDownBars
c2.title= "开盘-高-低-收盘"
c2.series[-1].val.numRef.numCache= cache
ws.add_chart(c2,"G10")
# 创建条形图代表成交量
bar= BarChart
data= Reference(ws, min_col=2, min_row=1, max_row=6)
bar.add_data(data,titles_from_data=True)
bar.set_categories(labels)
from copy import deepcopy
# 成交量-高-低-收盘价
b1= deepcopy(bar)
c3= deepcopy(c1)
c3.y_axis.majorGridlines=None
c3.y_axis.title= "价格"
b1.y_axis.axId= 20
b1.z_axis= c3.y_axis
b1.y_axis.crosses= "max"
b1+= c3
c3.title= "高低收盘成交量"
ws.add_chart(b1,"A27")
# 成交量-开盘-高-低-收盘
b2= deepcopy(bar)
c4= deepcopy(c2)
c4.y_axis.majorGridlines= None
c4.y_axis.title= "价格"
b2.y_axis.axId= 20
b2.z_axis= c4.y_axis
b2.y_axis.crosses= "max"
b2+= c4
ws.add_chart(b2,"G27")
wb.save("stock.xlsx")
实现效果图:
气泡图
气泡图与散点图相似,但使用第三维来决定气泡的大小,可以包括多个系列。
下面的代码创建气泡图:
from openpyxl import Workbook
from openpyxl.chart import Series, Reference, BubbleChart
wb= Workbook
ws= wb.active
rows= [
("Numberof Products", "Sales in USD","Market share"),
(14, 12200, 15),
(20, 60000, 33),
(18, 24400, 10),
(22, 32000, 42),
(),
(12, 8200, 18),
(15, 50000, 30),
(19, 22400, 15),
(25, 25000, 50),
]
for row in rows:
ws.append(row)
chart= BubbleChart
chart.style= 18 #使用预设的样式
# 添加第一个数据系列
xvalues= Reference(ws, min_col=1, min_row=2, max_row=5)
yvalues= Reference(ws, min_col=2, min_row=2, max_row=5)
size= Reference(ws, min_col=3, min_row=2, max_row=5)
series= Series(values=yvalues, xvalues=xvalues, zvalues=size, title="2013")
chart.series.append(series)
# 添加第二个数据系列
xvalues= Reference(ws, min_col=1, min_row=7, max_row=10)
yvalues= Reference(ws, min_col=2, min_row=7, max_row=10)
size= Reference(ws, min_col=3, min_row=7, max_row=10)
series= Series(values=yvalues, xvalues=xvalues, zvalues=size, title="2014")
chart.series.append(series)
# 在以单元格A12开始的单元格中放置图表
ws.add_chart(chart,"A12")
wb.save("bubble.xlsx")
效果图:
以上就是Python关于Excel的一些基本操作,当然了,Python对于Excel方面的操作肯定不止于此。未完待续.................
*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。
相关推荐
- 面试官:来,讲一下枚举类型在开发时中实际应用场景!
-
一.基本介绍枚举是JDK1.5新增的数据类型,使用枚举我们可以很好的描述一些特定的业务场景,比如一年中的春、夏、秋、冬,还有每周的周一到周天,还有各种颜色,以及可以用它来描述一些状态信息,比如错...
- 一日一技:11个基本Python技巧和窍门
-
1.两个数字的交换.x,y=10,20print(x,y)x,y=y,xprint(x,y)输出:102020102.Python字符串取反a="Ge...
- Python Enum 技巧,让代码更简洁、更安全、更易维护
-
如果你是一名Python开发人员,你很可能使用过enum.Enum来创建可读性和可维护性代码。今天发现一个强大的技巧,可以让Enum的境界更进一层,这个技巧不仅能提高可读性,还能以最小的代价增...
- Python元组编程指导教程(python元组的概念)
-
1.元组基础概念1.1什么是元组元组(Tuple)是Python中一种不可变的序列类型,用于存储多个有序的元素。元组与列表(list)类似,但元组一旦创建就不能修改(不可变),这使得元组在某些场景...
- 你可能不知道的实用 Python 功能(python有哪些用)
-
1.超越文件处理的内容管理器大多数开发人员都熟悉使用with语句进行文件操作:withopen('file.txt','r')asfile:co...
- Python 2至3.13新特性总结(python 3.10新特性)
-
以下是Python2到Python3.13的主要新特性总结,按版本分类整理:Python2到Python3的重大变化Python3是一个不向后兼容的版本,主要改进包括:pri...
- Python中for循环访问索引值的方法
-
技术背景在Python编程中,我们经常需要在循环中访问元素的索引值。例如,在处理列表、元组等可迭代对象时,除了要获取元素本身,还需要知道元素的位置。Python提供了多种方式来实现这一需求,下面将详细...
- Python enumerate核心应用解析:索引遍历的高效实践方案
-
喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。根据GitHub代码分析统计,使用enumerate替代range(len())写法可减少38%的索引错误概率。本文通过12个生产...
- Python入门到脱坑经典案例—列表去重
-
列表去重是Python编程中常见的操作,下面我将介绍多种实现列表去重的方法,从基础到进阶,帮助初学者全面掌握这一技能。方法一:使用集合(set)去重(最简单)pythondefremove_dupl...
- Python枚举类工程实践:常量管理的标准化解决方案
-
本文通过7个生产案例,系统解析枚举类在工程实践中的应用,覆盖状态管理、配置选项、错误代码等场景,适用于Web服务开发、自动化测试及系统集成领域。一、基础概念与语法演进1.1传统常量与枚举类对比#传...
- 让Python枚举更强大!教你玩转Enum扩展
-
为什么你需要关注Enum?在日常开发中,你是否经常遇到这样的代码?ifstatus==1:print("开始处理")elifstatus==2:pri...
- Python枚举(Enum)技巧,你值得了解
-
枚举(Enum)提供了更清晰、结构化的方式来定义常量。通过为枚举添加行为、自动分配值和存储额外数据,可以提升代码的可读性、可维护性,并与数据库结合使用时,使用字符串代替数字能简化调试和查询。Pytho...
- 78行Python代码帮你复现微信撤回消息!
-
来源:悟空智能科技本文约700字,建议阅读5分钟。本文基于python的微信开源库itchat,教你如何收集私聊撤回的信息。[导读]Python曾经对我说:"时日不多,赶紧用Python"。于是看...
- 登录人人都是产品经理即可获得以下权益
-
文章介绍如何利用Cursor自动开发Playwright网页自动化脚本,实现从选题、写文、生图的全流程自动化,并将其打包成API供工作流调用,提高工作效率。虽然我前面文章介绍了很多AI工作流,但它们...
- Python常用小知识-第二弹(python常用方法总结)
-
一、Python中使用JsonPath提取字典中的值JsonPath是解析Json字符串用的,如果有一个多层嵌套的复杂字典,想要根据key和下标来批量提取value,这是比较困难的,使用jsonpat...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python自定义函数 (53)
- python进度条 (67)
- python吧 (67)
- python字典遍历 (54)
- python的for循环 (65)
- python格式化字符串 (61)
- python串口编程 (60)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python人脸识别 (54)
- python多态 (60)
- python命令行参数 (53)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)