2017-03-05 6 views
2

Ich hatte einen Datenrahmen und ich filterte die Spalten um x zu bekommen und tat y = vl.groupby(['Model Year','Manufacturer']).size(), um den Wert y zu erhalten. Jetzt, wenn ich versuche, es zu plotten, habe ich einen Fehler bekommen. Das ist das erste Mal, dass ich versuche, etwas zu verpassen. Kannst du mir bitte Helfen.Wie würde ich ein Balkendiagramm mit diesen Daten plotten

#ax = plt.subplot(111) 
#ax.bar(x, y,width=0.1,color='b',align='center') 

#plt.show() 

x: array(['1991', '1992', '1993', '1994'], dtype=object) 

y: 1991  Chevrolet    1 
      Ford     1 
1992  Chevrolet    2 
      Dodge     2 
      Ford     1 
1993  Chevrolet    3 
      Dodge     2 
      Ford     2 
1994  Dodge     3 
      Ford     2 
dtype: int64 

Was ich versuche zu plotten ist Jahr vs Anzahl der Autos von Hersteller.

Antwort

2

Ich glaube, Sie unstack für Spalten mit letzten Level von MultiIndex erstellen und dann DataFrame.plot.bar hinzufügen müssen:

print (y.unstack(fill_value=0)) 
     Chevrolet Dodge Ford 
1991   1  0  1 
1992   2  2  1 
1993   3  2  2 
1994   0  3  2 

y = vl.groupby(['Model Year','Manufacturer']).size() 
y.unstack(fill_value=0).plot.bar(width=0.1, align='center') 

plt.show() 

graph1

Eine andere mögliche Lösung mit crosstab:

pd.crosstab(vl['Model Year'], vl['Manufacturer']).plot.bar(width=0.1, align='center') 
plt.show() 
Verwandte Themen