2015-11-04 92 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类型。然后你可以像上面那样设置索引和重新采样。

相关问题