在Python 2.7中高效地计算大型数据集上的移动平均值
我正在学习在Python中计算包含两个以上变量的大型数据集上的移动平均值。这里有日期、公司ID和浏览量:在Python 2.7中高效地计算大型数据集上的移动平均值,python,statistics,moving-average,data-science,Python,Statistics,Moving Average,Data Science,我正在学习在Python中计算包含两个以上变量的大型数据集上的移动平均值。这里有日期、公司ID和浏览量: Date CompanyID PageViews 01/01/2016 023 420 02/01/2016 023 362 03/01/2016 023 214 … … …
Date CompanyID PageViews
01/01/2016 023 420
02/01/2016 023 362
03/01/2016 023 214
… … …
05/06/2016 311 54
06/06/2016 311 35
07/06/2016 311 69
… … …
04/03/2016 465 49
05/03/2016 465 17
… … …
我想计算文件中每个公司和日期的2天移动平均数,并将结果存储为新变量Avg2。输出应如下所示:
Date CompanyID PageViews Avg2
01/01/2016 023 420 NA
02/01/2016 023 362 391
03/01/2016 023 214 288
… … … …
05/06/2016 311 54 NA
06/06/2016 311 35 44.5
07/06/2016 311 69 52
… … … …
04/03/2016 465 49 NA
05/03/2016 465 17 33
… … … …
如果不手动计算每家公司的成本,我将如何高效地做到这一点?(我有500家独特的公司)
我试着这样做:
import pandas as pd
df = pd.read_csv('C:/Users/.../DataSet.csv', sep=',')
df['Avg2'] = pd.rolling_mean(df.PageViews, window=2)
但是它忽略了公司ID。如果你是在30天移动平均线上工作,那么保持前30天的总和。然后,对于随后的每一天,减去第一天,再加上第二天。您将在一次减法、一次加法和一次除法中获得每个移动平均值(与30次加法和一次除法相对)
如果你想从数组中分割出一家公司,Python有很多方法可以做到这一点。如果你是在30天移动平均线上工作,请保留前30天的总和。然后,对于随后的每一天,减去第一天,再加上第二天。您将在一次减法、一次加法和一次除法中获得每个移动平均值(与30次加法和一次除法相对)
如果你想从数组中分割出一家公司,Python有很多方法可以做到这一点。你的Python代码是从哪里来的?我建议先按公司索引,然后按日期索引,然后在每家公司上运行移动平均算法。你说的“不按每家公司手动计算”是什么意思?@Prajwal,我的意思是,我可以过滤每家公司的数据,并分别计算每家公司的移动平均数,但如果有500家独特的公司,这需要很长时间才能做到。我以前没有使用过Python,所以我真的不知道如何在整个数据集上高效地使用它。@Chris_Rands,我添加了我所做的。但是,该代码忽略了companyID,我得到了不合适的结果。你在哪里被python代码卡住了?我建议先按公司索引,然后按日期索引,然后在每个公司上运行移动平均算法。你说的“不按每个公司手动计算”是什么意思?@Prajwal,我的意思是,我可以过滤每家公司的数据,并分别计算每家公司的移动平均数,但如果有500家独特的公司,这需要很长时间才能做到。我以前没有使用过Python,所以我真的不知道如何在整个数据集上高效地使用它。@Chris_Rands,我添加了我所做的。然而,该代码忽略了companyID,我得到了不适当的结果。