python办公自动化--数据可视化(pandas+matplotlib)--生成条形图和饼状图
前言
前几天我们学习了pandas读取数据,还学习了如何用patplotlib绘制柱状图和折线图。
今天我们继续学习,如何绘制条形图和饼状图。
一、课程回顾-pandas读取数据
1.示例数据文件
这里我们用到的依旧是d盘底下的这个excel工作簿,这个工作簿里面有四个工作表,如下:
我们今天用到的是第三个表和第四个表里面的数据,数据如下:
数据表:各个产品销量
数据表:各大区总利润
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)
接下来我们读取“各月销售额”这个表格的数据
profit_continent=pd.read_excel(file_name,sheet_name="各大区总利润")
print("读取各大区总利润")
print(profit_continent)
接下来我们读取“各大区总利润”这个表格的数据
可以看到,我们通过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()
运行代码后我们可以得到条形图如下:
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()
运行后结果如下:
当然,上述图形并不好看,因为matplotlib在最开始的时候只是为了满足工业作图的要求,能做出来就行了,要什么自行车。
但是随着互联网的发展,这种图已经满足不了我们的需求了。
有兴趣的同学可以自行去了解一下如何优化这些图形。
当然,如果有兴趣,后续我们可以讲一讲seaborn等第三库,那才是真正精彩的世界。
总结
今天我们复习了前一天学习的pandas读取excel表格的数据,同时学习了如何用matplotlib库将读取的数据生成条形图和饼状图。
后面有时间我们再更新学习其它图知识的文章。
有兴趣的朋友可以点个关注和订阅哟!!!!