我有几天1分钟数据的时间序列,并且希望在一天中的所有日期对其进行平均.
这很慢:
from datetime import datetime
from pandas import date_range,Series
time_ind = date_range(datetime(2013,1,1),datetime(2013,10),freq='1min')
all_data = Series(randn(len(time_ind)),time_ind)
time_mean = all_data.groupby(lambda x: x.time()).mean()
运行差不多一分钟!
虽然像:
time_mean = all_data.groupby(lambda x: x.minute).mean()
只需要几分之一秒.
是否有更快的方式按时间分组?
知道为什么这么慢吗?
最佳答案
在版本0.11.0中,你的“lambda-version”和version 0.11中引入的time属性似乎都很慢:
In [4]: %timeit all_data.groupby(all_data.index.time).mean()
1 loops,best of 3: 11.8 s per loop
In [5]: %timeit all_data.groupby(lambda x: x.time()).mean()
Exception RuntimeError: 'maximum recursion depth exceeded while calling a Python object' in nored
Exception RuntimeError: 'maximum recursion depth exceeded while calling a Python object' in nored
Exception RuntimeError: 'maximum recursion depth exceeded while calling a Python object' in nored
1 loops,best of 3: 11.8 s per loop
使用当前的master,两种方法都相当快:
In [1]: pd.version.version
Out[1]: '0.11.1.dev-06cd915'
In [5]: %timeit all_data.groupby(lambda x: x.time()).mean()
1 loops,best of 3: 215 ms per loop
In [6]: %timeit all_data.groupby(all_data.index.time).mean()
10 loops,best of 3: 113 ms per loop
'0.11.1.dev-06cd915'
因此,您可以更新到主服务器或等待本月应该发布的0.11.1.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。