目录

python办公自动化-数据可视化pandasmatplotlib-生成条形图和饼状图

python办公自动化–数据可视化(pandas+matplotlib)–生成条形图和饼状图

前言

前几天我们学习了pandas读取数据,还学习了如何用patplotlib绘制柱状图和折线图。

今天我们继续学习,如何绘制条形图和饼状图。

一、课程回顾-pandas读取数据

1.示例数据文件

https://i-blog.csdnimg.cn/direct/9d7c1b1caa984578a33cd0e9275d96d6.png#pic_center

这里我们用到的依旧是d盘底下的这个excel工作簿,这个工作簿里面有四个工作表,如下:

https://i-blog.csdnimg.cn/direct/7fb9fbc43b6f414fa9050c3bea1d64b4.png#pic_center

我们今天用到的是第三个表和第四个表里面的数据,数据如下:

数据表:各个产品销量

https://i-blog.csdnimg.cn/direct/e68e22ae67f949ad9fa15385729ff5f2.png#pic_center

数据表:各大区总利润

https://i-blog.csdnimg.cn/direct/8d3600924c574cf5b48f03156429f82f.png#pic_center

2.pandas读取数据

import pandas as pd

file_name=r"D:\数据可视化示例Excel文件.xlsx"

首先我们导入pandas库,同时将我们的示例文件的路径用file_name来表示

nums_products=pd.read_excel(file_name,sheet_name="各个产品销量")
print("读取各个产品销量")
print(nums_products)

接下来我们读取“各月销售额”这个表格的数据

https://i-blog.csdnimg.cn/direct/926a030ad56c4301bf733bd7e12af3d0.png#pic_center

profit_continent=pd.read_excel(file_name,sheet_name="各大区总利润")
print("读取各大区总利润")
print(profit_continent)

接下来我们读取“各大区总利润”这个表格的数据

https://i-blog.csdnimg.cn/direct/c7b52728898643c59585b96051370ae7.png#pic_center

可以看到,我们通过pandas库成功地读取到了数据可视化示例Excel文件.xlsx这个工作簿里面,名为“各个产品销量”的工作表的数据。

二、matplotlib绘制条形图和饼状图

1.绘制折线图

plt.barh(nums_products.产品,height=0.5,width=nums_products.销量,align="center",label="销量")

plt.title("各种产品销量条形图",loc="center")

for a,b in zip(nums_products.产品,nums_products.销量):
    plt.text(b,a,b,ha="center",va="center",fontsize=15,color="red")

plt.ylabel("产品名称")
plt.xlabel("二月份销量")

plt.grid(False)

plt.legend()

plt.show()

这里我还是简单说一下各行代码的含义,因为上一篇文章讲的很详细,所以就不多说

第一行表示这是条形图,并设置图形的各个参数

第二行设置标题

第三四行设置数据标签

第五六行设置横纵坐标的意义

第七行表示不要网格线,可以删掉,因为默认就是不要网格线

第八行表示增加图例

第九行表示展示生成的条形图

最后我们将代码进行整合

import matplotlib.pyplot as plt
import pandas as pd

file_name=r"D:\数据可视化示例Excel文件.xlsx"

nums_products=pd.read_excel(file_name,sheet_name="各个产品销量")
print("读取各个产品销量")
print(nums_products)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.barh(nums_products.产品,height=0.5,width=nums_products.销量,align="center",label="销量")

plt.title("各种产品销量条形图",loc="center")

for a,b in zip(nums_products.产品,nums_products.销量):
    plt.text(b,a,b,ha="center",va="center",fontsize=15,color="red")

plt.ylabel("产品名称")
plt.xlabel("二月份销量")

plt.grid(False)

plt.legend()

plt.show()

运行代码后我们可以得到条形图如下:

https://i-blog.csdnimg.cn/direct/9c1a9fbf29404926bc6060734e562a25.png#pic_center

2.绘制饼状图

import matplotlib.pyplot as plt
import pandas as pd

file_name=r"D:\数据可视化示例Excel文件.xlsx"

profit_continent=pd.read_excel(file_name,sheet_name="各大区总利润")
print("读取各大区总利润")
print(profit_continent)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.pie(profit_continent.利润,labels=profit_continent.大区,autopct="%.0f%%",shadow=True,radius=1.0)
plt.title("各大洲利润饼状图",loc="center",fontdict={"size":"15","color":"red","weight":"bold"})
plt.show()

运行后结果如下:

https://i-blog.csdnimg.cn/direct/c41c129355cc40b896cbb54d3060608d.png#pic_center

当然,上述图形并不好看,因为matplotlib在最开始的时候只是为了满足工业作图的要求,能做出来就行了,要什么自行车。

但是随着互联网的发展,这种图已经满足不了我们的需求了。

有兴趣的同学可以自行去了解一下如何优化这些图形。

当然,如果有兴趣,后续我们可以讲一讲seaborn等第三库,那才是真正精彩的世界。

总结

今天我们复习了前一天学习的pandas读取excel表格的数据,同时学习了如何用matplotlib库将读取的数据生成条形图和饼状图。

后面有时间我们再更新学习其它图知识的文章。

有兴趣的朋友可以点个关注和订阅哟!!!!