时间序列数据重采样

【问题描述】

对于给定的时间序列数据,按照指定的频率进行重采样,并按指定的函数进行聚合。

【示例7-10】

本例使用示例7-2的数据,请按天对测量数据进行重采样,聚合函数为求均值。

  • ChatGPT提示词模板

新建ChatGPT会话,在提问文本框中输入下面的提示词:

prompt
你是pandas专家。文件路径为:D:/Samples/ch07/01 时间序列数据/时间序列.xlsx。用pandas导入Excel文件中第1个工作表中的数据,将第1列作为索引列,引擎为”openpyxl”。请按天对测量数据进行重采样,聚合函数为求均值。添加代码注释。

2. ChatGPT提示词模板说明

重新指定重采样的频率,比如按天、按星期、按月重采样。指定聚合函数,说明对重新指定的频率内的数据按什么函数进行计算,比如求和、求均值、求次数等。

3. 代码

  • 根据提示词得到类似下面的代码:
code.python
import pandas as pd
# 读取Excel文件内容,指定第一个工作表,第一列为索引列
df = pd.read_excel('D:/Samples/ch07/01 时间序列数据/时间序列.xlsx', sheet_name=0, index_col=0, engine='openpyxl')
# 对测量数据进行重采样,聚合函数为求均值
df_dayly = df.resample('D').mean()
# 输出结果
print(df_dayly)

4. 使用代码

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,在IDLE Shell窗口输出

code.python
>>> == RESTART: D:/Samples/1.py =
                 测量值
时间
2022-03-18  5.541667
2022-03-19  4.416667
2022-03-20  6.083333
2022-03-21  4.958333
2022-03-22  7.500000

【知识点扩展】

使用Series对象或DataFrame对象的resample方法按照指定频率进行重采样,后面可以直接跟聚合函数,如本例中按天重采样,聚合函数是求均值。

code.python
df_dayly = df.resample('D').mean()