pandas
是一个强大的数据处理库,广泛用于数据分析和数据科学任务。groupby
和 rolling
是 pandas
中两个非常常用的功能,它们可以组合使用来处理分组后的时间序列数据或其他类型的数据。
groupby
方法允许你根据一个或多个键(列)将数据分组。分组后,你可以对每个组应用各种操作,如聚合、转换等。rolling
方法提供了一种方便的方式来计算滑动窗口统计量。滑动窗口是指在数据集上移动的一个固定大小的窗口,每次移动一个观测值。groupby
和 rolling
当你需要对每个分组应用滑动窗口操作时,可以将 groupby
和 rolling
结合起来使用。
pandas
内部优化了这些操作,使得在大规模数据集上也能高效运行。假设我们有一个包含日期、产品和销售额的数据集,我们想要计算每个产品的3天滚动销售额总和。
import pandas as pd
# 创建示例数据
data = {
'date': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-01', '2023-01-02', '2023-01-03'],
'product': ['A', 'A', 'A', 'B', 'B', 'B'],
'sales': [100, 150, 200, 50, 75, 100]
}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date']) # 确保日期列是 datetime 类型
# 使用 groupby 和 rolling 计算每个产品的3天滚动销售额总和
result = df.groupby('product')['sales'].rolling(window=3).sum().reset_index()
print(result)
dropna()
方法去除缺失值,或者在 rolling
方法中使用 min_periods
参数指定最小非空观测值数量。pandas
的优化功能,如 numba
加速,或者考虑将数据分块处理。通过合理使用 groupby
和 rolling
,你可以高效地进行复杂的数据分析和处理任务。
领取专属 10元无门槛券
手把手带您无忧上云