pandas 无法绘制饼图的值计数

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/36963502/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 01:09:02  来源:igfitidea点击:

Can't plot value counts for pie chart

pythonpandasdataframepie-chartsubplot

提问by squidvision

I wrote a function to plot the distribution of values for variables in a pie chart, as shown below. Pie chart I need to get

我编写了一个函数来绘制饼图中变量的值分布,如下所示。 我需要得到饼图

def draw_piecharts(df, variables, n_rows, n_cols):
     df[variables].value_counts.plot(kind='pie', layout=(n_rows,n_cols), subplots=True)
     plt.show()
def main():
    util.draw_piecharts(df, [ 'TARGET', 'BanruptcyInd'], 1,2)
if __name__ == "__main__":
    main()

Unfortunately my function doesn't compute because dataframes have no attribute value_counts(), and value_counts is the only way I know how to get the distribution plotted in a pie chart. Here's a sample of the variables being plotted:

不幸的是,我的函数没有计算,因为数据框没有属性value_counts(),而 value_counts 是我知道如何在饼图中绘制分布的唯一方法。以下是绘制的变量示例:

0     0
1     0
2     0
3     0
4     0
5     0
6     0
7     0
8     0
9     0
10    0
11    0
12    1
13    0
14    0
15    0
16    0
17    1
18    0
19    0
20    0
21    1
22    0
23    0
24    1
25    0
26    1
27    0
28    0
29    0
Name: TARGET, dtype: int64
0     0
1     0
2     0
3     0
4     0
5     0
6     0
7     0
8     0
9     0
10    0
11    0
12    0
13    0
14    0
15    0
16    0
17    0
18    0
19    0
20    0
21    0
22    0
23    0
24    0
25    0
26    0
27    0
28    0
29    0

回答by cge

While value_countsis a Series method, it's easily applied to the Series inside DataFrames by using DataFrame.apply. In your case. for example,

虽然value_counts是一个 Series 方法,但它很容易通过使用DataFrame.apply. 在你的情况下。例如,

df[variables].apply(pd.value_counts).plot(kind='pie', layout=(n_rows,n_cols), subplots=True)

(assuming pandashas been imported as pd).

(假设pandas已导入为pd)。

For a complete example:

一个完整的例子:

import pandas as pd
a = pd.DataFrame({'a': [1,0,0,0,1,1,0,0,1,0,1,1,1],'b': [1,0,0,0,1,1,0,0,1,0,0,0,0]})
a.apply(pd.value_counts).plot.pie(subplots=True)