本文章东拼西凑,借鉴了多位大佬,终于实现自己想要的功能。
以下是要读取的Excel原表格,共700条,这里是一部分。
我们要做一个购买商品类别的饼图,于是只需要提取“购买商品”这一列,并统计各个类别商品数量保存到新列"count"中
像这样,然后根据这些数值绘制饼图。
先要读取表格
df = pd.read_excel('.\ipad.xlsx') # 读取excel表格,里面是路径,此文件已放在同目录下
然后,用groupby对购买商品进行分组,对用户ID统计数量,reset_index将数据生成到count中
new = df.groupby(["购买商品"])['用户ID'].count().reset_index(name="count")
将提取出来的数据保存到new里,print 一下就会出现以下数据,正是我们想要的。
现在开始根据数据绘制饼状图!
# 给pie传参
plt.pie(
new['count'], # 以count为数据
labels=new['购买商品'], # 以购买商品为标签
autopct='%3.1f%%' # 显示3位整数一位小数
)
plt.title('购买商品类型饼状图') # 标题
plt.show() #显示
完整如下:
其中rcParamas函数是一定要加的,不然无法显示汉字和符号。
import pandas as pd # 用于读取数据
import matplotlib.pyplot as plt # 绘图库
# 用于正常显示中文,不加的话会出现乱码
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams["font.family"] = 'Arial Unicode MS'
# 用于正常显示符号
plt.rcParams['axes.unicode_minus'] = False
df = pd.read_excel('.\ipad.xlsx') # 读取excel表格,里面是路径,此文件已放在同目录下
new = df.groupby(["购买商品"])['用户ID'].count().reset_index(name="count")
# 给pie传参
plt.pie(
new['count'], # 以count为数据
labels=new['购买商品'], # 以购买商品为标签
autopct='%3.1f%%' # 显示3位整数一位小数
)
plt.title('购买商品类型饼状图') # 标题
plt.show() #显
生成图
如果还是出现乱码,并且发生报错显示 sans-serif或者Arial Unicode MS not found 问题,说明没有下载对应的字体包,大家可以搜教程下载一下。
以下仅供参考!
sans-serif not found解决:http://t.csdn.cn/vtpTX
Arial Unicode MS notfound解决:https://www.cnblogs.com/houdada-cn/p/15845574.html