我想使用python中的数据框列创建饼图

时间:2019-01-26 14:32:57

标签: python

我想使用数据框的单个列创建一个饼图,说我的列名是“得分”。我在此列中存储了得分,如下所示:

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))

使用上面的代码,我得到了饼图,但是我不知道如何使用百分比。

my pie chart look like this for now

1 个答案:

答案 0 :(得分:0)

正确的第一步是将数据帧切成bin。之后,可以将value_countsnormalize=True一起使用,以获取bins列中值的相对频率。这样一来,您便可以查看在bin中定义的范围内的数据百分比。

就绘制饼图而言,我不确定我是否理解正确,但是似乎您想在饼图的每个切片中显示正确的图例值和百分比值。

pandas.DataFrame.plot是查看可以传递给plot方法的所有参数的好地方。您可以指定要使用的xy列,默认情况下,数据框索引用作饼图中的图例。

要显示每个切片的百分比值,也可以使用autopct参数。如本answer中所述,您还可以在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%%')

Plot of Pie Chart