[英]group pandas time-series data frame using specific time intervals
我有一個很大的csv文件,其時間戳數據為iso格式2015-04-01 10:26:41
。 數據跨越數月,輸入范圍從30秒到數小時不等。 它的列是id,時間,速度。
最終,我想按15分鍾的時間間隔對數據進行分組,然后計算平均速度,但是在15分鍾的時隙中有很多條目。
我正在嘗試使用Pandas,因為它似乎具有可靠的時間序列工具,並且這樣做可能很容易,但是我遇到了第一個障礙。
到目前為止,我已經將CSV導入為數據框,並且所有列都具有dtype object
。 我已經按日期對數據進行了排序,現在正嘗試按時間間隔對條目進行分組,這正是我在其中努力的地方。 基於谷歌搜索,我嘗試使用此代碼df.resample('5min', how=sum)
resample
數據。在這里,我得到錯誤TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex
。 我正在考慮嘗試groupby
方法,也許像在df.groupby(lambda x:x.minutes + 5)
中df.groupby(lambda x:x.minutes + 5)
使用lambda
,這會產生錯誤AttributeError: 'str' object has no attribute 'minutes'
。
基本上,我對a)熊貓是否具有其可以識別的格式的時間序列數據感到困惑,因為它是dtype
是object
,並且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
首先,看起來您讀了空白行。 您可能要跳過文件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)
亞歷山大的答案是正確的。 還請注意,您可以
df = pd.read_csv('myfile.csv', parse_dates=True)
如果格式合理,則日期列應具有datetime類型。 然后,您可以如上所述設置索引並重新采樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.