📜  Python|熊猫 dataframe.resample()(1)

📅  最后修改于: 2023-12-03 15:19:21.169000             🧑  作者: Mango

Python熊猫 dataframe.resample()

在处理时间序列数据时,经常需要对数据进行重采样。数据重采样功能可以将数据从一个频率转换为另一个频率。使用pandas库的dataframe.resample()方法可以轻松完成重采样操作。

重采样的类型

pandas库的dataframe.resample()方法支持多种重采样的类型:

  1. 降采样
  • 将高频数据聚合为低频数据,如将每小时数据聚合为每天数据
  1. 升采样
  • 将低频数据转换为高频数据,如将每周数据转换为每天数据
  1. 重采样
  • 将数据的样本取样重采集到新的样本中,如将每2分钟数据聚合为每1分钟数据
重采样的参数

pandas库的dataframe.resample()方法含有多个参数,具体如下:

  • rule:指定重采样的频率,如'M'表示月份,'D'表示天,'H'表示小时,'T'表示分钟,'S'表示秒,'L'或毫秒,'U'或微秒,'N'表示纳秒。更多参数可查阅pandas官方文档
  • axis:指定在哪个轴上进行重采样,默认为0
  • closed:指定重采样的时间区间闭合方式,左闭右闭、左开右闭等
  • label:指定重采样的标签选项,取合法的取样位置(left,right,mid)
  • loffset:对重采样的时间标签进行微调,如'-1s'表示所有时间标签往前移动一个秒
示例代码

下面是一个简单的示例代码,演示数据降采样操作:

import pandas as pd

# 新建sample数据,并设置时间索引
date_rng = pd.date_range(start='1/1/2020', end='1/10/2020', freq='H')
df = pd.DataFrame(date_rng, columns=['date'])
df['data'] = np.random.randint(0,100,size=(len(date_rng)))
df.set_index('date', inplace=True)

# 降采样,将每小时数据聚合为每天数据
df_daily = df.resample('D').mean()

print(df_daily)

输出结果:

                 data
date                 
2020-01-01  45.541667
2020-01-02  54.770833
2020-01-03  48.625000
2020-01-04  44.250000
2020-01-05  43.833333
2020-01-06  50.791667
2020-01-07  52.208333
2020-01-08  45.333333
2020-01-09  50.708333
2020-01-10  59.791667

以上代码示例将数据从每小时聚合为每天的数据,并计算每一天的数据平均值。可见,dataframe.resample()方法非常容易实现对数据的重采样操作。