[英]Strange behavior of pandas resampling
我遇到了熊貓時間序列(Python)的重采樣功能的相當奇怪的行為。 我使用的是最新版本的Pandas(0.12.0)
采取以下時間序列:
dates = [datetime(2011, 1, 2, 1), datetime(2011, 1, 2, 2), datetime(2011, 1, 2, 3),
datetime(2011, 1, 2, 4), datetime(2011, 1, 2, 5), datetime(2011, 1, 2, 6)]
ts = Series(np.arange(6.), index=dates)
然后嘗試重新采樣到66s和65s。 這是我得到的結果:
In [45]: ts.resample('66min')
Out[45]:
2011-01-02 01:00:00 0.5
2011-01-02 02:06:00 2.0
2011-01-02 03:12:00 3.0
2011-01-02 04:18:00 4.0
2011-01-02 05:24:00 5.0
Freq: 66T, dtype: float64
In [46]: ts.resample('65min')
Out[46]:
2011-01-02 01:00:00 0
2011-01-02 02:05:00 NaN
2011-01-02 03:10:00 NaN
2011-01-02 04:15:00 NaN
2011-01-02 05:20:00 NaN
2011-01-02 06:25:00 NaN
Freq: 65T, dtype: float64
我確實了解重新采樣到66s時的行為。 它始終采用相應間隔中所有值的平均值(默認值)。 我不了解,也不知道如何在65年代影響行為。
這是一個簡化的問題。 背景是一個更復雜的數據校正過程,涉及重新采樣。
有任何想法嗎?
也許您想插值而不是重新采樣。 這是一種方法:
In [53]: index = pd.date_range(freq='66T', start=ts.first_valid_index(), periods=5)
In [54]: ts.reindex(set(ts.index).union(index)).sort_index().interpolate('time').ix[index]
Out[54]:
2011-01-02 01:00:00 0.0
2011-01-02 02:06:00 1.1
2011-01-02 03:12:00 2.2
2011-01-02 04:18:00 3.3
2011-01-02 05:24:00 4.4
Freq: 66T, dtype: float64
In [55]: index = pd.date_range(freq='65T', start=ts.first_valid_index(), periods=5)
In [56]: ts.reindex(set(ts.index).union(index)).sort_index().interpolate('time').ix[index]
Out[56]:
2011-01-02 01:00:00 0.000000
2011-01-02 02:05:00 1.083333
2011-01-02 03:10:00 2.166667
2011-01-02 04:15:00 3.250000
2011-01-02 05:20:00 4.333333
Freq: 65T, dtype: float64
也就是說,似乎可以改善重采樣。 乍一看,您所展示的行為是神秘的,我同意這是無益的。 值得討論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.