2016-10-16 3 views
0

Ich hoffe, ich kann dies richtig erklären, wie ich Pandas neu bin. Ich habe den folgenden Datenrahmen in Pandas.Plot jedes einzelne Element einer Spalte in einem Datenrahmen mit teilweise überlappenden y-Werte

import numpy as np 
plant1 = {'Date' : pd.date_range('1/1/2011', periods=10, freq='D'), 
    'Plant' : pd.Series(["Plant1"]*10), 
    'Output' : pd.Series(abs(np.random.randn(10)))} 

plant2 = {'Date' : pd.date_range('1/3/2011', periods=10, freq='D'), 
    'Plant' : pd.Series(["Plant2"]*10), 
    'Output' : pd.Series(abs(np.random.randn(10)))} 

plant3 = {'Date' : pd.date_range('1/5/2011', periods=10, freq='D'), 
    'Plant' : pd.Series(["Plant3"]*10), 
    'Output' : pd.Series(abs(np.random.randn(10)))}  



df_plant_1 = pd.DataFrame(plant1) 
df_plant_2 = pd.DataFrame(plant2) 
df_plant_3 = pd.DataFrame(plant3) 

sample = pd.concat([df_plant_1,df_plant_2,df_plant_3]) 

My Ausgang sollte mit jeder einzelnen Anlage und dem entsprechenden y-Wert (Ausgang) und x-Wert (Date) ein Bereich Stück sein. Beachten Sie, dass sich "Termine" nur teilweise überschneiden.

Ich bin auf der Suche nach einer Möglichkeit, meine Daten sinnvoll zu organisieren. Die erste Herausforderung besteht darin, die Daten für doppelte "Date" -Werte zusammenzuführen. Der nächste Schritt wäre, die resultierenden Löcher in der Reihe mit .fillna() zu füllen. Der letzte Schritt wäre, für jeden einzelnen "Pflanzen" -Wert zu plotten.

Allerdings stecke ich schon beim ersten Schritt fest. Ich bin mir der .merge-Funktion bewusst, weiß aber nicht, wie ich sie auf diesen Fall anwenden soll.

Vielen Dank für Ihre Zeit und Rücksicht.

Antwort

0

Ein Benutzer im Chat hat mich auf die Pivot-Funktion aufmerksam gemacht.

test = pd.pivot_table(sample, index='Date', columns='Plant', values='Output') 
test = test.fillna(method='pad')        
test = test.fillna(method='bfill')   

plt.figure(); test.plot(kind='area') 

enter image description here

Verwandte Themen