2015-05-09 90 views
2

我有一個逗號分隔的文件,我正在用Pandas通過Python讀取。這裏是一個子集:用python編寫熊貓數據框日期和繪圖

Location Time     Value1 Value2 
CCNY  2013-01-01 00:00:00 59  12.71  
CCNY  2013-01-01 01:00:00 96  10.6 
CCNY  2013-01-01 02:00:00 105 11.94  
CCNY  2013-01-01 03:00:00 81  11.73  
CCNY  2013-01-01 04:00:00 60  13.05  
CCNY  2013-01-01 05:00:00 51  13.25 
... 
CCNY  2013-31-01 06:00:00 28  13.03  

我需要繪製值1(X軸)與值2(Y軸),但我需要做的每一天。因此,對於包含1月份整個月份的文件的這部分,將會有31個圖。

我應該怎麼辦?

(最終的目標是讓每個情節和r最佳擬合線的平方值)。

感謝。

回答

3

請參閱下面的內容 - 按天對數據進行分組,併爲每個數據生成一個圖。

df.groupby(df['Time'].dt.day).plot(x='Value1', y='Value2') 
+0

謝謝@chrisb。是否有某種方法需要閱讀該文件才能使用?我只使用parse_dates = True,index_col = 1。 – Steve

+0

@alldayiwonder取決於讀取文件時獲得的內容? – fixxxer

1

您的CSV看起來像一個固定寬度的文件,所以我會用read_fwf,然後需要,因爲它把時間部分爲未命名列重命名的時間列,然後你可以使用@ chrisB的回答實現什麼你想:在地塊

In [35]: 

t="""Location Time     Value1 Value2 
CCNY  2013-01-01 00:00:00 59  12.71  
CCNY  2013-01-01 01:00:00 96  10.6 
CCNY  2013-01-01 02:00:00 105 11.94  
CCNY  2013-01-02 03:00:00 81  11.73  
CCNY  2013-01-02 04:00:00 60  13.05  
CCNY  2013-01-02 05:00:00 51  13.25""" 
​ 
df = pd.read_fwf(io.StringIO(t), parse_dates=[[1,2]]) 
df.rename(columns={'Time_Unnamed: 2':'Time'},inplace=True) 
df 
Out[35]: 
       Time Location Value1 Value2 
0 2013-01-01 00:00:00  CCNY  59 12.71 
1 2013-01-01 01:00:00  CCNY  96 10.60 
2 2013-01-01 02:00:00  CCNY  105 11.94 
3 2013-01-02 03:00:00  CCNY  81 11.73 
4 2013-01-02 04:00:00  CCNY  60 13.05 
5 2013-01-02 05:00:00  CCNY  51 13.25 
In [36]: 

df.groupby(df['Time'].dt.date).plot(x='Value1', y='Value2') 
Out[36]: 
2013-01-01 Axes(0.125,0.125;0.775x0.775) 
2013-01-02 Axes(0.125,0.125;0.775x0.775) 
dtype: object 

結果:

enter image description here

enter image description here

+0

它實際上是一個逗號分隔的文件,但這大概是大熊貓如何將數據幀輸出到屏幕上的,並且「2013-01-01 00:00:00」的時間正被讀入單個列。 – Steve

+0

好吧,我認爲你的代碼片段是原始數據的實際文章,如果它是逗號分隔,那麼'pd.read_csv(file_path,parse_dates = [1],index_col = [1])'應該可以工作 – EdChum