2017-02-27 3 views
0

Mein Datenfeld unten ist für einen bestimmten Wert in der Spalte "IdBox" = 4. Es hilft mir, ein Diagramm der Daten nur für "IdBox" = 4 zu machen. Ich kann keine Möglichkeit finden, eine Funktion zu haben, diese schneller zu plotten, wenn sich der IdBox-Wert ändert. Mein IdBox-Wert liegt zwischen 4 und 9, also 6 Graphen.Plot Python von Dataframe

chaudiere4 = yy[(yy.NameDeviceType== "Chaudière_logement") & (yy.IdBox == 4.0)] 

In [898]: chaudiere4  
Out[898]: 
UnitDeviceType NameDeviceType IdBox IdDeviceValue    ValueDeviceValue weekday hour ONOFF 
DateDeviceValue        
2015-11-27 17:54:00 On/Off Chaudière_logement 4.0 536448.0 On 4.0 17.0 1 
2015-11-27 17:54:00 On/Off Chaudière_logement 4.0 536449.0 Off 4.0 17.0 0 
2015-11-27 17:54:00 On/Off Chaudière_logement 4.0 536450.0 On 4.0 17.0 1 
2015-11-27 17:54:00 On/Off Chaudière_logement 4.0 536451.0 Off 4.0 17.0 0 
2015-11-27 18:09:00 On/Off Chaudière_logement 4.0 536453.0 On 4.0 18.0 1 

Ich habe eine Spalte namens ONOFF erstellt und gruppiert nach Mittelwert, um die Handlung zu tun.

chaudiere4 = chaudiere4['ONOFF'].groupby(chaudiere4['hour']).mean() 

chaudiere4.plot(kind='bar') 
plt.title("Chaudiere ON/OFF") 
plt.xlabel('hour') 
plt.legend('ONOFF') 
plt.axis([0, 24, 0, 1]) 
plt.show() 

Gibt es eine Möglichkeit, dies mit einer Funktion schnell zu tun, anstatt die Datenrahmen der Änderung für Idbox = 5 und chaudiere6 für Idbox = 6 bis chaudiere5?

+0

Sie ein Diagramm zeichnen für jede Chaudière? – Dadep

+0

die Tat, ich bin für einen schnellen Weg, um es zu tun, anstatt diesem ganzen Code 6mal des Wiederholens – cloclo

+0

@cloclo, ist [die] (http://stackoverflow.com/questions/42493407/plot-python-from-dataframe# comment72126558_42493491) was willst du? – MaxU

Antwort

0

IIUC:

yy[(yy.NameDeviceType== "Chaudière_logement") & (yy.IdBox == 4.0)] \ 
    .groupby('hour')['ONOFF'].mean() \ 
    .plot.bar() 

Sie können eine kleine Funktion für das Erstellen:

def my_plot(df, IdBox=0, title='Chaudiere ON/OFF'): 
    df[(df.NameDeviceType== "Chaudière_logement") & (df.IdBox == IdBox)] \ 
     .groupby('hour')['ONOFF'].mean() \ 
     .plot.bar(title=title) 
    plt.axis([0, 24, 0, 1]) 
    plt.show() 

jetzt können Sie es so nennen:

my_plot(df, 4.0) 
+0

Ich denke, was er will ist, diesen Teil zu ändern '(yy.IdBox == 4.0)', um Werte 4, 5 und 6 zu haben und ein Diagramm für jeden zu schaffen. Dies kann mit einer einfachen For-Schleife erreicht werden. –

+0

warum IDBox ist y_plot (df, IdBox = 0) in der ersten Zeile und (df.IdBox == 4,0)] in der zweiten Zeile? Das Diagramm funktioniert, aber ich muss die IdBox jedes Mal ändern. – cloclo

+0

werde ich hinzufügen, irgendwo so etwas wie für x in df.Idbox ... – cloclo