2016-05-01 6 views
2

Ich habe eine Funktion geschrieben, um die Verteilung von Werten für Variablen in einem Kreisdiagramm darzustellen, wie unten gezeigt. Pie chart I need to getWertwerte für Kreisdiagramm können nicht geplottet werden

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

Leider meine Funktion berechnet nicht, weil Datenrahmen kein Attribut value_counts() hat, und value_counts ist der einzige Weg, ich weiß, wie die Verteilung in einem Kreisdiagramm aufgetragen zu bekommen. Hier ist eine Probe der Variablen aufgetragen ist:

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 

Antwort

1

Während value_counts ein Series-Methode ist, ist es leicht an die Serie innerhalb von Datenrahmen angewendet DataFrame.apply verwenden. In Ihrem Fall. zum Beispiel

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

(unter der Annahme, pandas als pd importiert wurde).

Ein vollständiges Beispiel:

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