python 按条件选择行和列数据_【Python报表自动化4】把数据按省份拆分还要逐个作图该怎么办?...

点击蓝字关注我们

    近期码农身边的几个同事对前面出的Python报表自动化的帖子都表示很实用,同事一度登上粉丝阅读榜的No1。不过最近很不好意思,两周都没更新文章了,给各位粉丝大人道个歉。主要是最近工作太忙,而且最近没想到什么实用内容分享给大家。

    后来码农想到了去年年底的一件事情,背景是需要把一张工作表的数据按照省份拆分成不同的sheet,而且还要针对每个省份的数据做图。码农就想到这个案例很适合拿来作为今天分享的主题。

案例数据

    今天的案例数据是一份近2年全国各省市的社会零售消费品增速的数据。具体如下

1f8d913f23a5aa404641fe704a3f38e3.png

    我们任务是需要把每个省的数据拆分到一个单独的sheet里,并且在Sheel里做图展示数据。

    今天要用到的Python里的一个非常好用的模块——openpyxl,它是专门用来处理模块是一个读写Excel 2010文档的Python库。它可以通过Python代码来实现Excel的各种操作,包括数据的读写,Excel的格式修改,包括写入Excel的公式,还有作图功能,今天就给大家具体介绍下。

导入数据

    导入数据还是使用第一篇帖子分享的read_excel的方法来导入我们的原始数据,代码如下:

import openpyxl

左右滑动查看完整代码

打开一个Excel文件

     接下来,我们就在原始的数据表里进行数据的拆分和画图,首先是用openpyxl打开原始数据表。

#打开工作簿,将工作簿存入对象wb

    选择一个省市的数据,这里先以“北京市”为例,后面我们将整个功能封装为一个函数:

'北京市'

    下一步需要先生成一个新的Sheet并且按照省市名称命名,这里用到create_sheet这个函数:

ws=wb.create_sheet(prov)

    然后我们把data这个数据写入到新的Sheet里,这里我们需要用到一个循环,用openpyxl写入数据的方法就是按照excel的单元格来操作,所以我们需要按照单元格做遍历,ws.cell(row,column)表示sheet里的单元格,row是行,column是列,都是从1开始计数的,不是0哦。

for i 

Excel作图指令

    接下来是最重要的画图部分了,这里展示画折线图和柱状图。

from openpyxl.chart import LineChart,BarChart,Reference
#绘图的数据所在区域
dat=Reference(ws,min_col=2,min_row=2,max_row=2,max_col=ws.max_column)
#绘图数据的类别
cat=Reference(ws,min_col=2,min_row=1,max_row=1,max_col=ws.max_column)
#实例化折线图
chart1 = LineChart() 
#折线图的样式
chart1.style = 2 
#图表名称 
chart1.title = prov 
#纵轴名称
chart1.y_axis.title = '社会零售消费品增速' 
#横轴名称
chart1.x_axis.title = '季度'
#不展示图例 
chart1.legend=None  
#添加作图的数据,默认作图的数据是按列的,这里的数据是按行的,所以需要True
chart1.add_data(dat,from_rows=True) 
#指定绘图数据的类别
chart1.set_categories(cat)
#在A4格作图
ws.add_chart(chart1,'A4')

#柱状图
chart2=BarChart()
chart2.style=4
chart2.title=prov
chart2.y_axis.title = '社会零售消费品增速'
chart2.x_axis.title = '季度'
chart2.legend=None
chart2.add_data(dat,from_rows=True)
chart2.set_categories(cat)
ws.add_chart(chart2,'J4')

左右滑动查看完整代码

     这样就完成数据的拆分和作图了,最后我们将这个Excel另存一下:

r'E:\python_study\社会零售消费品增速_拆分.xlsx')

    我们看下效果图。

c452364fbf64419c61a82595ae34b5f9.png

    最后我们只需要将上面从新建Sheet到画图这部分的代码定义为一个函数,然后执行一遍循环就可以完成这个任务了。

def new_sheet(prov):

左右滑动查看完整代码

    这样我们就可以很方便的实现每个省的数据图表了。

75a640b239fdc788aa338382cbabbbb2.png

    好了,诸位表哥表姐,今天你们学会了?如果还是不懂,可以私信码农哦。

    欢迎大家关注码农的公众号哦~~~~拜了个拜

ed7827b95ba877649e6af1294efc0552.png

如果你对报表自动化感兴趣,欢迎点击阅读前面的系列哦~~~

【Python报表自动化1】这是一篇可以让你从8点下班变成5点下班的武功秘籍

【Python报表自动化2】这是一篇可以让你从8点下班变成5点下班的武功秘籍

【Python报表自动化3】如何把vlookup函数用到666

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值