我正在学习在Python中使用两个以上变量的大数据集上计算移动平均值。这里我有Date,companyID和PageViews:
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)
但它忽略了CompanyID。
答案 0 :(得分:0)
我也试过
df = pd.read_csv('C:/Users/.../DataSet.csv', sep=',')
for i in CompanyID:
df['Avg2'] = pd.rolling_mean(df.PageViews, window=2)
print df
它会创建一个变量Avg2,但同样,它不是基于CompanyID的,并且结果不正确。
答案 1 :(得分:0)
如果您正在处理30天移动平均线,请保留前30天的总和。然后,对于每个后续日期,减去第一天并添加后续日期。你将得到一个减法,一个加法和一个除法的每个移动平均线(而不是30个加法和一个除法)。
如果你想从阵列中分离出一家公司,Python有很多方法可以做到这一点。