2017-03-13 5 views
0

Ich habe ein Datenrahmen df unten: Zeigt die Anzahl der Kilometer pro Tag pro Personentyp nach Art des Autos.Plot Datenrahmen basierend auf Bedingungen

People  Car   dmy   value(km) 
A   Renault 14-05-2016  500 
B   Peugeot 14-05-2016  1000 
A   Citroen 14-05-2016  400 
A   Renault 15-05-2016  24 
B   Peugeot 15-05-2016  247 
A   Renault 15-05-2016  369 
A   Citroen 23-05-2016  692 
A   Citroen 28-05-2016  284 

Ich habe 20k Linien mehr als 1 Jahr

ich von der dmy Spalte gruppieren möchte den Mittelwert des bekommen ‚Wert (km)‘ Spalte pro Tag

Dies ist, was ich getan haben:

Ich erstelle zuerst einen neuen Datenrahmen gegeben 2 Bedingungen: Mein Diagramm zeigt nur den Mittelwert von km pro Tag für 1 Art von Auto und 1 Kategorie von Menschen.

yy = (df["Car"] == 'Renault') & (df["People"] == 'A') 

Dann erstelle ich einen Datenrahmen die group.by

zz = yy.groupby('dmy')['value(km)'].mean() 

durchzuführen und die dmy Spalte als Index gesetzt

zz = zz.set_index ('DMY')

Dann plotte ich diesen neuen zz Datenrahmen:

plt.plot(zz.index, zz["value"].values, linestyle='-', color='b', label="Renault") 
plt.gcf().autofmt_xdate() 
plt.legend() 
plt.show() 

Keine Plots erscheinen jedoch. Danke für Hilfe!

Antwort

0

groupby gibt eine DataFrameGroupBy und keine Dataframe zurück.

Ich würde zuerst die notwendigen Spalten auswählen und dann aggregate rufen und schließlich plot:

import numpy as np 
zz = yy[['value(km)', 'dmy']].groupby('dmy').aggregate(np.mean) 
zz.plot() 
Verwandte Themen