簡體   English   中英

使用特定時間間隔將大熊貓時間序列數據幀分組

[英]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)熊貓是否具有其可以識別的格式的時間序列數據感到困惑,因為它是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  

首先,看起來您讀了空白行。 您可能要跳過文件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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM