说明:代码运行环境为 Win10+Python3+jupyter notebook
饼形图一般用于描述分类型数据的相对频数或百分数频数分布,呈现部分与总体的关系。
方法1:利用pandas中的Series.plot()或DataFrame.plot.pie()方法
方法2:利用matplotlib包中的调用axes.pie()方法
%matplotlib notebook
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns
tips = pd.read_csv('examples/tips.csv')
tips的表结构如下图所示:
对数据做初步处理:
# 以tips中的day列作为依据,对tips做分组处理
grouped = tips.groupby(tips['day'])
# 对分组数据进行统计求和
grouped_sum = grouped.sum()
grouped_sum的表结构表结构如下图所示:
Sereis.plot()示例:
fig,axes = plt.subplots()
grouped_sum['total_bill'].plot(kind='pie',ax=axes,autopct='%.2f%%')
# autopct参数的作用是指定饼形图中数据标签的显示方式
# '%.2f%%'表示数据标签的格式是保留两位小数的百分数
axes.set_aspect('equal') # 设置饼图的纵横比相等
axes.set_title('Sum of total_bill grouped by day')
fig.savefig('p1.png')
上述代码绘制的图形为:
Series.plot()的用法具体参考:
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.plot.html?highlight=series%20plot#pandas.Series.plot
DataFrame.plot.pie()示例:
fig,axes = plt.subplots()
grouped_sum.plot.pie(y='tip',ax=axes,autopct='%.2f%%',legend=False,
labeldistance=0.8)
# autopct参数的作用是指定饼形图中数据标签的显示方式
# '%.2f%%'表示数据标签的格式是保留两位小数的百分数
# labeldistance参数指定了每个扇形对应的标签与圆心的距离
axes.set_aspect('equal') # 设置饼图的纵横比相等
axes.set_title('Sum of tip grouped by day')
fig.savefig('p2.png')
上述代码绘制的图形为:
DataFrame.plot.pie()的用法具体参考:
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.pie.html?highlight=dataframe%20pie#pandas.DataFrame.plot.pie
axes.pie()示例:
fig,axes = plt.subplots()
axes.pie(grouped_sum['total_bill'],explode=[0.1,0,0,0],autopct='%.2f%%',
labels=['Fri','Sat','Sun','Thur'],startangle=90)
# explode参数指定了每个扇形与圆心偏移的距离,一般用于突出显示某个扇形
# labels参数指定了每个扇形对应的标签
# startangle=90表示饼图的起始绘制角度是偏离x轴90度,并按逆时针绘制
axes.set_aspect('equal')
axes.set_title('Sum of total_bill grouped by day ')
fig.savefig('p3.png')
上述代码绘制的图形为:
axes.pie()的用法具体参考:
https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.pie.html?highlight=axes%20pie#matplotlib.axes.Axes.pie
其他参考资料:
《Python for Data Analysis》第二版
https://pandas.pydata.org/pandas-docs/stable/visualization.html?highlight=visualization#visualization-pie
https://www.cnblogs.com/fat39/p/7159881.html
https://docs.python.org/3/library/string.html#grammar-token-conversion
PS:本文为博主原创文章,转载请注明出处。