组熊猫使用特定时间间隔的时间序列数据帧
我有一个大的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)熊猫是否有时间系列数据有一个格式认识,因为它的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类型。然后你可以像上面那样设置索引和重新采样。