无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(pandas resample) 详解Pandas数据重采样(resample)的3种使用方法 Pandas 时间序列重采样方法详解 全网首发(图文详解1)

前沿技术 Micheal 6个月前 (05-31) 75次浏览 已收录 扫描二维码

(pandas resample) 详解Pandas数据重采样(resample)的3种使用方法

Pandas 是一个强大的数据处理库,它提供了数据重采样(resampling)功能。数据重采样是指将时间序列数据从一个频率转换到另一个频率进行分析的过程,比如将天数据重采样为月数据。以下是 Pandas 重采样的三种常用方法的详细指南:

1. 时间序列降采样(Downsampling)

降采样是指将高频率数据转换为低频率数据,比如从小时数据到天数据。

使用 resample() 方法:

import pandas as pd

# 创建时间序列数据
rng = pd.date_range('2024-05-01', periods=100, freq='H')
ts = pd.Series(range(len(rng)), index=rng)

# 使用 resample 进行降采样
# 参数 'D' 表示 "天", 'mean' 表示采用平均值进行聚合
resampled_data = ts.resample('D').mean()

print(resampled_data)

这里 resample('D') 将数据集转换为每天的频率,而 .mean() 则对每天的数据求平均值。还可以用 .sum(), .first(), .last(), .max(), .min() 等来聚合数据。

2. 时间序列升采样(Upsampling)

升采样是指将低频率数据转换为高频率数据,比如从天数据到小时数据。

# 使用 resample 进行升采样
# 参数 'H' 表示 "小时"
resampled_data = ts.resample('H').asfreq()

print(resampled_data)

在升采样时通常需要决定如何插值,因为这样会创建出新的数据点。asfreq() 方法只会更改索引的频率,实际数据保持原样,新创建的点将是 NaN。

可能需要用到 .fillna().interpolate() 方法来处理生成的 NaN 值:

# 插值处理 NaN 值
resampled_data = ts.resample('H').asfreq().interpolate(method='linear')

3. 通过时间标签进行重采样

有时可能需要按照月末或月初进行重采样,这个时候可以使用 rule 参数。

# 按月末进行降采样
resampled_data = ts.resample('M').mean()

# 月初重采样
resampled_data = ts.resample('MS').mean()

这里 ‘M’ 是月末的标签,’MS’ 是月初的标签。

补充:改变 resample 操作后的边界行为

可通过 closedlabel 参数来自定义重采样的区间边界及其标签。

# 改变区间边界行为
resampled_data = ts.resample('D', closed='right', label='right').sum()

closed='right' 表示每个间隔的右边是闭合的,而 label='right' 表示使用右边的边界标签。

请记住,上面提供的代码需要在你的Python环境中拥有Pandas库才能正确运行
(numpy 转置) 详解NumPy 数组的转置和轴变换方法 NumPy转置和轴变换方法 全网首发(图文详解1)
(math.pow) Python math.pow(x, y):获取 x 的 y 次方 函数详解 计算乘方函数:math.pow() 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝