向前填充-前一个可用的值填充缺失的值 。可以使用limit参数限制正向填充的数量 。
df.resample('8H')['C_0'].ffill(limit=1)反向填充 -用下一个可用的值填充缺失的值 。
df.resample('8H')['C_0'].bfill(limit=1)最近填充 -用最近的可用值填充缺失的数据,该值可以是向前的,也可以是向后的 。
df.resample('8H')['C_0'].nearest(limit=1)Fillna —结合了前面三个方法的功能 。可以指定方法(例如,'pad'/' fill','bfill','nearest'),并使用limit参数进行数量控制 。
df.resample('8H')['C_0'].fillna(method='pad', limit=1)Asfreq-指定一个固定的值来填充所有缺失的部分一次 。例如 , 可以使用-999填充缺失的值 。
df.resample('8H')['C_0'].asfreq(-999)插值方法-可以应用各种插值算法 。
df.resample('8H').interpolate(method='linear').applymap(lambda x: round(x, 2))一些常用的函数1、使用agg进行聚合
result = df.resample('W').agg( { 'C_0': ['sum', 'mean'], 'C_1': lambda x: np.std(x, ddof=1) } ).head()使用agg方法将每日时间序列数据重新采样到每周频率 。并为不同的列指定不同的聚合函数 。对于“C_0”,计算总和和平均值 , 而对于“C_1” , 计算标准差 。
2、使用 apply 聚合
def custom_agg(x): agg_result = { 'C_0_mean': round(x['C_0'].mean(), 2), 'C_1_sum': x['C_1'].sum(), 'C_2_max': x['C_2'].max(), 'C_3_mean_plus1': round(x['C_3'].mean() + 1, 2) } return pd.Series(agg_result) result = df.resample('W').apply(custom_agg).head()定义了一个名为custom_agg的自定义聚合函数,它将DataFrame x作为输入,并在不同列上计算各种聚合 。使用apply方法将数据重新采样到每周的频率,并应用自定义聚合函数 。
3、使用transform进行变换
df['C_0_cumsum'] = df.resample('W')['C_0'].transform('cumsum') df['C_0_rank'] = df.resample('W')['C_0'].transform('rank') result = df.head(10)使用transform 方法来计算每周组中'C_0'变量的累积和排名 。DF的原始索引结构保持不变 。
4、使用pipe 进行管道操作
result = df.resample('W')['C_0', 'C_1'] .pipe(lambda x: x.cumsum()) .pipe(lambda x: x['C_1'] - x['C_0']) result = result.head(10)使用管道方法对下采样的'C_0'和'C_1'变量进行链式操作 。cumsum函数计算累积和,第二个管道操作计算每个组的'C_1'和'C_0'之间的差值 。像管道一样执行顺序操作 。
总结时间序列的重采样是将时间序列数据从一个时间频率(例如每日)转换为另一个时间频率(例如每月或每年) , 并且通常伴随着对数据进行聚合操作 。重采样是时间序列数据处理中的一个关键操作,通过进行重采样可以更好地理解数据的趋势和模式 。
在Python/ target=_blank class=infotextkey>Python中,可以使用Pandas库的resample()
方法来执行时间序列的重采样 。
作者:JIN
推荐阅读
- 【干货分享】以太网布线的秘密要点:连接器和电缆管理全解析
- Python构建高效安全的OTP验证系统!
- ios17可以降级吗?iOS17退回iOS16的方法及步骤
- 展现气质的秘密武器:女性的翡翠项链
- 人工钻石是莫桑钻吗?莫桑钻可以人工合成吗?莫桑钻和钻石的区别是什么?
- 手镯圈口测量时的注意事项
- 手镯大小、形状与材质:和谐搭配的关键
- 人死后还有来生吗?霍金和爱因斯坦的观点不谋而和
- 中国警车为何有的喷印“警察”,有的喷印“公安”?二者有何区别
- 涤纶面料的优缺点及保养