python - 1个熊猫数据框中的时间序列条件滚动平均值
问题描述
我目前正在研究解决条件滚动平均值。我创建了一个简化的数据集来演示:在这个数据集中,我们有 3 家商店和 2 种产品,它们在 4 天内的销售量。
考虑到真实数据集包括数千家商店和数百种产品,我试图为同一数据框中的商店/产品的每个组合实现滚动平均计算。
通过使用下面的代码,我可以计算每条线的滚动平均值,就像其他数据科学家计算股价的 10 天或 20 天移动平均线一样:
import pandas as pd
df = pd.read_csv (r'path\ConditionalRollingMean.csv')
df['Rolling_Mean'] = df.Quantity.rolling(2).mean()
甚至
df['Rolling_Mean'] = df.Quantity.rolling(window=2).mean()
这种方法的问题在于,计算是逐行完成的,与商店/产品组合无关。我正在寻找的是一个条件滚动平均值,它在遍历数据框时跟踪商店/产品组合,并逐行填充df['Rolling_Mean']列。(像这样)
然后,此滚动平均值将用于滚动标准偏差计算,为此我只弄清楚了如何在整个数据帧中进行计算,而没有滚动方面。
df['mean']=df.groupby(['Quantity']).Qty.transform('mean')
df['std']=df.groupby(['Quantity']).Qty.transform('std')
将不同数据帧中的商店/产品分开然后运行df.Quantity.rolling(2).mean()函数会更简单,但在我正在处理的情况下,这意味着创建超过 150 000 个数据帧. 因此,为什么我要在 1 个数据框中解决这个问题。
预先感谢您的帮助。
解决方案
我将使用的解决方案如下:
df["Mean"] = df.groupby(['Store','Product'])['Quantity'].rolling(2).mean()
它给了我想要的输出。谢谢您的意见。
推荐阅读
- pandas - 使用 awswrangler 向 S3 对象添加标签?
- html - 是否可以手动操作元素中的 css 断点(无 iframe)?
- vue.js - 构建后 Electron Vue 不读取 JS 代码
- react-native - 我们不能让 react-native-video 播放器播放来自 API 文件服务的视频
- python - 如何使用 pytest-mock 模拟 python 类依赖项?
- php - 添加 wordpress 网站后的永久链接问题
- c - 在 Linux 上的 C 程序中的 x86_64 中的堆栈
- javascript - 反应道具仅删除 Map() 中的最后一个元素
- mysql - 无法在服务器本身上加载数据本地 Infile
- r - RStudio Server 不使用缓冲区/缓存内存