百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python对于Excel的一些基本绘制图标操作,让你日常工作更加轻松

off999 2024-10-02 18:43 21 浏览 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方面的操作肯定不止于此。未完待续.................

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

相关推荐

第九章:Python文件操作与输入输出

9.1文件的基本操作9.1.1打开文件理论知识:在Python中,使用open()函数来打开文件。open()函数接受两个主要参数:文件名和打开模式。打开模式决定了文件如何被使用,常见的模式有:&...

Python的文件处理

一、文件处理的流程1.打开文件,得到文件句柄并赋值给一个变量2.通过句柄对文件进行操作3.关闭文件示例:d=open('abc')data1=d.read()pri...

Python处理文本的25个经典操作

Python处理文本的优势主要体现在其简洁性、功能强大和灵活性。具体来说,Python提供了丰富的库和工具,使得对文件的读写、处理变得轻而易举。简洁的文件操作接口Python通过内置的open()函数...

Python学不会来打我(84)python复制文件操作总结

上一篇文章我们分享了python读写文件的操作,主要用到了open()、read()、write()等方法。这一次是在文件读写的基础之上,我们分享文件的复制。#python##python自学##...

python 文件操作

1.检查目录/文件使用exists()方法来检查是否存在特定路径。如果存在,返回True;如果不存在,则返回False。此功能在os和pathlib模块中均可用,各自的用法如下。#os模块中e...

《文件操作(读写文件)》

一、文件操作基础1.open()函数核心语法file=open("filename.txt",mode="r",encoding="utf-8"...

栋察宇宙(二十一):Python 文件操作全解析

分享乐趣,传播快乐,增长见识,留下美好。亲爱的您,这里是LearingYard学苑!今天小编为大家带来“Python文件操作全解析”欢迎您的访问!Sharethefun,spreadthe...

值得学习练手的70个Python项目(附代码),太实用了

Python丰富的开发生态是它的一大优势,各种第三方库、框架和代码,都是前人造好的“轮子”,能够完成很多操作,让你的开发事半功倍。下面就给大家介绍70个通过Python构建的项目,以此来学习Pytho...

python图形化编程:猜数字的游戏

importrandomnum=random.randint(1,500)running=Truetimes=0##总的次数fromtkinterimport*##导入所有tki...

一文讲清Python Flask的Web编程知识

刚入坑Python做Web开发的新手,还在被配置臃肿、启动繁琐折磨?Flask这轻量级框架最近又火出圈,凭5行代码启动Web服务的极致简洁,让90后程序员小张直呼真香——毕竟他刚用这招把部署时间从半小...

用python 编写一个hello,world

第一种:交互式运行一个hello,world程序:这是写python的第一步,也是学习各类语言的第一步,就是用这种语言写一个hello,world程序.第一步,打开命令行窗口,输入python,第二步...

python编程:如何使用python代码绘制出哪些常见的机器学习图像?

专栏推荐绘图的变量单变量查看单变量最方便的无疑是displot()函数,默认绘制一个直方图,并你核密度估计(KDE)sns.set(color_codes=True)np.random.seed(su...

如何编写快速且更惯用的 Python 代码

Python因其可读性而受到称赞。这使它成为一种很好的第一语言,也是脚本和原型设计的流行选择。在这篇文章中,我们将研究一些可以使您的Python代码更具可读性和惯用性的技术。我不仅仅是pyt...

Python函数式编程的详细分析(代码示例)

本篇文章给大家带来的内容是关于Python函数式编程的详细分析(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。FunctionalProgramming,函数式编程。Py...

编程小白学做题:Python 的经典编程题及详解,附代码和注释(七)

适合Python3+的6道编程练习题(附详解)1.检查字符串是否以指定子串开头题目描述:判断字符串是否以给定子串开头(如"helloworld"以"hello&...

取消回复欢迎 发表评论: