2015-11-04 140 views
1

我有一個大的csv文件,時間戳數據的格式爲2015-04-01 10:26:41。數據跨越多個月,記錄範圍從30秒到多個小時不等。它的列是id,時間,速度。組熊貓使用特定時間間隔的時間序列數據幀

最終我想按15分鐘的時間間隔對數據進行分組,然後計算平均速度,但是很多條目都在15分鐘的時間段內。

我想使用熊貓,因爲它看起來像它有一個固定的時間序列工具,它可能很容易做到這一點,但我正在落在第一個障礙。

到目前爲止,我已經將CSV導入爲數據框,並且所有列的dtype爲object。我按日期對數據進行了排序,現在我試圖按照時間間隔對這些條目進行分組,這就是我正在掙扎的地方。基於谷歌搜索,我試圖resample使用此代碼的數據df.resample('5min', how=sum)在這裏我得到的錯誤TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex。我在考慮嘗試使用groupby方法,或許使用lambda,如df.groupby(lambda x:x.minutes + 5)這會產生錯誤AttributeError: 'str' object has no attribute 'minutes'

基本上,我對a)熊貓是否有時間系列數據有一個格式認識,因爲它的dtypeobject和b)如果它可以識別它我似乎無法得到時間間隔下降。

渴望學習,如果有人能指出我在正確的方向。

DF看起來像這樣

 0  1     2  3  
0   id boat_id     time speed  
1  386226  32 2015-01-15 05:14:32  4.2343243  
2  386285  32 2015-01-15 05:44:57  3.45234 

回答

2

首先,它看起來像你讀一個空白行。您可能需要跳過文件pd.read_csv(filename, skiprows=1)中的第一行。

您應該使用pd.to_datetime()將時間的文本表示形式轉換爲DatetimeIndex。

df.set_index(pd.to_datetime(df['time']), inplace=True) 

然後您應該可以重新採樣。

df.resample('15min', how=np.mean) 
0

亞歷山大的回答是正確的;還請注意,你可以做

df = pd.read_csv('myfile.csv', parse_dates=True) 

而且如果格式正常,你的日期列應該有datetime類型。然後你可以像上面那樣設置索引和重新採樣。

相關問題