2016-08-02 13 views
0

Ich möchte ein Streudiagramm, wo X-Achse ist ein datetime, y-Achse ist ein int. Und ich habe nur wenige Datenpunkte, die diskret und nicht kontinuierlich sind, also möchte ich keine Datenpunkte verbinden.Python Pandas Plot Streudatum Fehler

Meine Datenrahmen ist:

df = pd.DataFrame({'datetime':[dt.datetime(2016,1,1,0,0,0), dt.datetime(2016,1,4,0,0,0), 
    dt.datetime(2016,1,9,0,0,0)], 'value':[10, 7, 8]}) 

Wenn ich "normal" Plot verwenden, als ich eine "Linie" -Figur bekam:

df.plot(x='datetime', y='value') 

Aber wie kann ich plotten nur die Punkte? Dies gibt Fehler:

df.plot.scatter(x='datetime', y='value') 
KeyError: 'datetime' 

Natürlich habe ich einige Betrüger nutzen das Ergebnis, das ich will, zum Beispiel zu bekommen:

df.plot(x='datetime', y='value', marker='o', linewidth=0) 

Aber ich verstehe nicht, warum die scatter Version funktioniert nicht ..

Vielen Dank für Ihre Hilfe!

Antwort

1

Streudiagramm kann mithilfe der DataFrame.plot.scatter() -Methode gezeichnet werden. Das Streudiagramm erfordert numerische Spalten für x- und y-Achse. Diese können durch x und y Schlüsselwörter jeweils angegeben werden.

alternativer Ansatz:

In [71]: df['day'] = df['datetime'].dt.day 

In [72]: df.plot.scatter(x='day', y='value') 
Out[72]: <matplotlib.axes._subplots.AxesSubplot at 0x25440a1bc88> 

Image

+1

Thank you! Es ist also kein Fehler, es ist ein Feature. Nett ;-) – ragesz