在 Pandas 中,resample 方法是对时间序列数据进行重采样的函数,可以实现从高频率数据转换到低频率数据的聚合操作。下面是 resample 方法的详细用法:
语法:
DataFrame.resample(rule, axis=0, closed=None, label=None, convention=‘start’, kind=None, loffset=None, base=None, on=None, level=None)
其中,rule 是重采样的规则,可以是字符串或时间偏移量对象。其他参数的含义如下:
axis:指定重采样的轴,默认为 0;
closed:指定区间闭合方式,可选值为 ‘left’(左闭右开)、‘right’(左开右闭)、‘both’(两端都闭)和 ‘neither’(两端都开),默认为 ‘right’;
label:指定聚合后的区间标签,可选值为 ‘left’(以左端点标签为标准)和 ‘right’(以右端点标签为标准),默认为 ‘right’;
convention:指定聚合后区间的标签方式,可选值为 ‘start’(以区间起始时间为标准)和 ‘end’(以区间结束时间为标准),默认为 ‘start’;
kind:指定聚合方式,可选值为 ‘timestamp’(时间戳聚合)和 ‘period’(周期聚合),默认为 None;
loffset:指定输出时间索引的偏移量;
base:指定周期聚合的基准点,默认为 0;
on:指定时间序列数据的列名,如果数据不是时间序列,则不需要设置;
level:指定时间序列数据的层级索引。
重采样方法
在 resample 方法中,可以使用以下方法对时间序列数据进行聚合操作:
asfreq:返回重采样后的时间序列的最后一个值;
bfill:用下一个值来填充缺失值;
ffill:用前一个值来填充缺失值;
mean:求平均值;
sum:求和;
max:求最大值;
min:求最小值;
median:求中位数;
ohlc:对开盘价、最高价、最低价和收盘价进行聚合。
示例
下面是一个简单的示例,演示如何使用 resample 方法对时间序列数据进行重采样和聚合:
复制
import pandas as pd
import numpy as np
创建时间序列数据
date_rng = pd.date_range(start=‘1/1/2021’, end=‘1/10/2021’, freq=‘H’)
df = pd.DataFrame(date_rng, columns=[‘date’])
df[‘data’] = np.random.randint(0,100,size=(len(date_rng)))
df = df.set_index(‘date’)
以天为单位对数据进行重采样
df_resampled = df.resample(‘D’).mean()
输出重采样后的数据
print(df_resampled)
输出结果为:
复制
data
date
2021-01-01 54.166667
2021-01-02 50.458333
2021-01-03 46.125000
2021-01-04 54.083333
2021-01-05 49.208333
2021-01-06 48.166667
2021-01-07 49.500000
2021-01-08 47.666667
2021-01-09 50.791667
2021-01-10 56.000000
可以看到,原始数据的时间间隔为 1 小时,重采样后的数据的时间间隔为 1 天,并且每一天的数据是原始数据在这一天内的平均值。