[英]I want to create a pie chart using a dataframe column in python
我想使用数据框的单个列创建一个饼图,说我的列名是“ Score”。 我在此列中存储了分数,如下所示:
Score
.92
.81
.21
.46
.72
.11
.89
现在,我想创建一个百分比范围的饼图。 说0-0.4为30%,0.4-0.7为35%,0.7+为35%。 我正在使用以下代码
df1['bins'] = pd.cut(df1['Score'],bins=[0,0.5,1], labels=["0-50%","50-100%"])
df1 = df.groupby(['Score', 'bins']).size().unstack(fill_value=0)
df1.plot.pie(subplots=True,figsize=(8, 3))
通过上面的代码,我得到了饼图,但是我不知道如何使用百分比来做到这一点。
正确的第一步是将数据帧切成垃圾箱。 之后,您可以将value_counts与normalize=True
,以获取bins
列中值的相对频率。 这样一来,您便可以查看bin中定义的范围内的数据百分比。
在绘制饼图方面,我不确定我是否理解正确,但是似乎您想在饼图的每个切片中显示正确的图例值和百分比值。
pandas.DataFrame.plot是查看可以传递到plot方法中的所有参数的好地方。 您可以指定要使用的x
和y
列,并且默认情况下,数据框索引用作饼图中的图例。
要显示每个切片的百分比值,也可以使用autopct
参数。 如本答案所述 ,您还可以在plot方法中使用所有正常的matplotlib plt.pie()
标志。
综合所有内容,这是结果代码和结果图表:
df = pd.DataFrame({'Score': [0.92,0.81,0.21,0.46,0.72,0.11,0.89]})
df['bins'] = pd.cut(df['Score'], bins=[0,0.4,0.7,1], labels=['0-0.4','0.4-0.7','0.7-1'], right=True)
bin_percent = pd.DataFrame(df['bins'].value_counts(normalize=True) * 100)
plot = bin_percent.plot.pie(y='bins', figsize=(5, 5), autopct='%1.1f%%')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.