让我们学习如何在Pandas中进行时间序列数据聚合。
准备工作
我们需要安装Pandas和Numpy包,可以使用以下代码进行安装:
数据驱动决策的核心技能,从现在开始,申请截止至7月15日,秋季即刻启程。
pip install pandas numpy
安装好相关包后,就可以正式进入教程了。
时间序列数据聚合
时间序列是一类特殊的数据,它们按顺序采集并存储在特定的时间点。这类数据集常用于描述某一事物的变化过程,比如股价、月度销售数据等。时间序列数据的核心特征在于其按时间顺序排列。
聚合是一种汇总或合并多个数据集以生成单一值集合的方法。它通常用于通过简明信息来理解更大的数据集。
作为一种数据集,时间序列同样可以进行聚合操作。让我们通过一个示例数据集来实际操作。
import pandas as pd
import numpy as np
np.random.seed(42)
date_rng = pd.date_range(start='2021-01-01', end='2023-12-31', freq='D')
df = pd.DataFrame({
'Date': date_rng,
'Sales': np.random.randint(100, 300, size=len(date_rng)),
'Profit': np.random.randint(1000, 5000, size=len(date_rng)),
'Rating': np.random.uniform(1, 10, size=len(date_rng))
})
有了这个示例数据集后,我们就可以尝试进行时间序列聚合了。在Pandas中,可以使用resample或groupby方法进行聚合。
首先介绍resample方法。该方法根据时间序列将数据按指定周期进行聚合。要使用resample,需要先将日期设置为索引。
df.set_index('Date', inplace=True)
接下来,我们可以用resample来进行时间序列聚合。例如,下面代码实现了按年聚合:
df.resample('Y').mean()
输出结果:
Sales Profit Rating
Date
2021-12-31 203.410959 3105.854795 5.507386
2022-12-31 203.153425 2962.819178 5.366746
2023-12-31 194.657534 2989.123288 5.503049
你可以根据需要更改聚合周期,例如:
- D(每日)
- W(每周)
- M(每月)
- Q(每季度)
- A(每年)
另外,也可以用groupby方法进行时间序列聚合:
df.groupby(df.index.year).mean()
输出结果:
Sales Profit Rating
Date
2021 203.410959 3105.854795 5.507386
2022 203.153425 2962.819178 5.366746
2023 194.657534 2989.123288 5.503049
我们还可以为不同的列指定不同的聚合方法:
df.resample('Y').agg({
'Sales': 'sum',
'Profit': 'mean',
'Rating': 'max'
})
输出:
Sales Profit Rating
Date
2021-12-31 74245 3105.854795 9.959324
2022-12-31 74151 2962.819178 9.931739
2023-12-31 71050 2989.123288 9.973703
以上就是时间序列聚合的全部内容。掌握时间序列聚合将为你的数据分析能力加分!