Python 如何利用pandas和matplotlib绘制饼图
作者:qwerrt9
这篇文章主要介绍了Python 如何利用pandas和matplotlib绘制饼图,代码使用了Pandas和Matplotlib库来绘制店铺销售数量占比的饼图,需要的朋友可以参考下
这段代码使用了Pandas和Matplotlib库来绘制店铺销售数量占比的饼图。通过读取Excel文件中的数据,对店铺名称进行聚合并按销售数量降序排列,然后使用Matplotlib绘制饼图展示销售数量占比情况。
导入必要的库
import pandas as pd import matplotlib.pyplot as plt
在这个步骤中,我们导入了两个必要的库:pandas
用于数据处理,matplotlib.pyplot
用于绘图。
设置中文字体
plt.rcParams['font.family'] = ['SimHei']
这段代码指定中文字体为黑体,以支持中文字符集。
读取数据
data = pd.read_excel('C:\\Users\Admin\\Desktop\\数据核对\\新建 XLSX 工作表.xlsx')
这段代码从指定路径的Excel文件中读取数据,并将数据存储在data
变量中。
聚合数据
aggregated_data = data.groupby('店铺名称')['销售数量'].sum()
这段代码根据店铺名称对销售数量进行聚合,并将结果存储在aggregated_data
变量中。
排序数据
aggregated_data = aggregated_data.sort_values(ascending=False)
这段代码对聚合后的数据按销售数量进行降序排序。
绘制饼图
plt.pie(aggregated_data, labels=aggregated_data.index, autopct='%.2f%%', startangle=90, wedgeprops={'linewidth': 1, 'edgecolor': 'white'}, pctdistance=0.85)
这段代码使用plt.pie
函数绘制饼图。传入的参数包括聚合后的销售数量数据和店铺名称,以及一些设置如起始角度、扇形边框样式和百分比标签等。
设置图表标题和图例
plt.title('店铺销售数量占比') plt.legend(loc='best')
这段代码使用plt.title
函数设置图表标题,并使用plt.legend
函数添加图例。
隐藏饼图中间的白色圆圈
plt.gca().set_aspect('equal') plt.tight_layout()
这段代码使用plt.gca().set_aspect('equal')
将饼图设置为正圆形,并使用plt.tight_layout
自动调整图表布局。
显示图表
plt.show()
这段代码显示绘制好的图表。
完整代码如下:
import pandas as pd import matplotlib.pyplot as plt plt.rcParams['font.family'] = ['SimHei'] # 指定中文字体为黑体 # 从Excel文件中读取数据 data = pd.read_excel('C:\\Users\Admin\\Desktop\\数据核对\\新建 XLSX 工作表.xlsx') # 根据店铺名称聚合销售数量 aggregated_data = data.groupby('店铺名称')['销售数量'].sum() # 按销售数量降序排列 aggregated_data = aggregated_data.sort_values(ascending=False) # 绘制饼图 plt.pie(aggregated_data, labels=aggregated_data.index, autopct='%.2f%%', startangle=90, wedgeprops={'linewidth': 1, 'edgecolor': 'white'},pctdistance=0.85) # 设置起始角度和扇形边框样式 # 设置图表标题和图例 plt.title('店铺销售数量占比') plt.legend(loc='best') # 隐藏饼图中间的白色圆圈 plt.gca().set_aspect('equal') # 使饼图为正圆形 plt.tight_layout() # 自动调整图表布局 # 显示图表 plt.show()
到此这篇关于Python 利用pandas和matplotlib绘制饼图的文章就介绍到这了,更多相关Python pandas和matplotlib绘制饼图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!