0
我想插入(高檔)非空閒時間序列以獲得等間隔時間序列。插入(上採樣)非等間隔時間序列與Pandas版本等間隔18.0rc1
目前我做這件事的方式如下:
- 採取原來的時間序列。
- 創建新的時間序列與NaN的在各30秒的時間間隔值(使用重採樣(「30S」)。asfreq())
- 的concat原始時間序列和新的時間序列
- 時間序列,以恢復的時間的順序排序(這我不喜歡 - 分揀具有複雜度O = N的log(n))
- 插值
- 從時間序列
有與熊貓版18.0rc1一個更簡單的方法刪除原來的點?就像在matlab中一樣,您有原始時間序列,並將新時間作爲參數傳遞給interpolation()函數以在所需時間接收值。
我說過原始時間序列的時間可能不是所需時間序列的時間子集。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
values = [271238, 329285, 50, 260260, 263711]
timestamps = pd.to_datetime(['2015-01-04 08:29:4',
'2015-01-04 08:37:05',
'2015-01-04 08:41:07',
'2015-01-04 08:43:05',
'2015-01-04 08:49:05'])
ts = pd.Series(values, index=timestamps)
ts
ts[ts==-1] = np.nan
newFreq=ts.resample('60S').asfreq()
new=pd.concat([ts,newFreq]).sort_index()
new=new.interpolate(method='time')
ts.plot(marker='o')
new.plot(marker='+',markersize=15)
new[newFreq.index].plot(marker='.')
lines, labels = plt.gca().get_legend_handles_labels()
labels = ['original values (nonequispaced)', 'original + interpolated at new frequency (nonequispaced)', 'interpolated values without original values (equispaced!)']
plt.legend(lines, labels, loc='best')
plt.show()