2017-08-07 2 views

Antwort

1

Ich glaube, Sie brauchen set_index aus Spalte Timestamp, wählen Sie Spalte Price und Grundstück:

#convert column to floats 
df['Price'] = df['Price'].astype(float) 
df.set_index('Timestamp')['Price'].plot() 

#if some non numeric data, convert them to NaNs 
df['Price'] = pd.to_numeric(df['Price'], errors='coerce') 
df.set_index('Timestamp')['Price'].plot() 

Und erhalten NaNs, wenn die Verwendung DataFrame Konstruktor, da die Daten nicht ausgerichtet - Werte des Index von df sind nicht dasselbe wie Timestamp Spalte.

+0

Ich denke, es ändert sich zum ersten DataFrame. Ich brauche keine Änderungen am ersten Datenrahmen. Aber löschen Sie diesen Code nicht, er kann für andere hilfreich sein –

+0

Wenn keine Ausgabe zugewiesen wird, gibt es keine Änderung. – jezrael

+0

Leere 'DataFrame': keine numerischen Daten zum Plotten Ich erhalte diese Art von Fehler –

0

Sie können dies tun, indem Sie .values ​​hinzufügen, Und wie wäre es mit dem Erstellen einer Serie?

#df1 = pd.DataFrame(df.Price.values, df.Timestamp) 
serie = pd.Series(df.Price.values, df.Timestamp) 

Sah es wurde hier beantwortet: pandas.Series() Creation using DataFrame Columns returns NaN Data entries

Voll Beispiel:

import pandas as pd 
import numpy as np 
import datetime 
import matplotlib.pyplot as plt 

df = pd.DataFrame(columns=["Price","Timestamp","Random"]) 
df.Price = np.random.randint(100, size = 10) 
df.Timestamp = [datetime.datetime(2000,1,1) + \ 
      datetime.timedelta(days=int(i)) for i in np.random.randint(100, size = 10)] 
df.Random = np.random.randint(10, size= 10) 

serie = pd.Series(df.Price.values, df.Timestamp) 

serie.plot() 
plt.show() 

enter image description here


Differenz

print("{}\n{}".format(type(df.Price), type(df.Price.values))) 
<class 'pandas.core.series.Series'> # does not work 
<class 'numpy.ndarray'> # works