2016-09-08 12 views
0

I zwei Datenrahmen in pandas haben eine mit vier timesseries mit zweiten von zweiten Daten, wie die folgendenPandas Zeitreihe mit überlagerten Linien

timestamp   ID  value1 value2 value3 value4 
2016/01/01T01:01:01 1234  100 50  50 60 
2016/01/01T01:01:02 1234  101 48  48 52 
2016/01/01T01:01:02 1234  101 48  48 52 
.... 

und eine zweite mit Durchschnittswerten von ausgewählten Intervallen

ID start_time end_time avg_value1 avg_value2 avg_value3 avg_value4 
1234 01:01:01  01:01:15  100.1 50.2  49   55 
... 

I Ich möchte diese beiden als Zeitreihen darstellen, die einander überlagert sind, wobei die Mittelwerte beginnend mit start_time bis end_time als flache Linien erscheinen. Wie würde ich das in der neuesten Version von Pandas machen?

+0

Beginnen Sie hier: http://pandas.pydata.org/pandas-docs/stable/visualization.html – Boud

Antwort

0

Der einfachste Weg besteht darin, alle Daten in einen einzigen DataFrame zu übertragen und die integrierte Methode .plot() zu verwenden.

Angenommen, Ihre ursprünglichen Datenrahmen genannt wird df die den Code unten sollte Ihr Problem lösen (Sie müssen möglicherweise die Spalte „ID“ abzustreifen out):

means = df.groupby(pd.TimeGrouper('15s')).mean() 
means.columns = ['avg_'+col for col in df.columns] 
merged_df = pd.concat([df, means], axis=1).fillna(method='ffill') 
merged_df.plot() 

einige Intraday-1s Kerze Bestandsdaten verwenden, erhalten Sie so etwas wie dieses:

enter image description here

Wenn Sie möchten, um Ihre Diagramme anpassen ich fürchte, Sie werden ein paar Stunden/Tage des Studiums die Grundlagen der matplotlib zu verbringen.

Verwandte Themen