在Python 2.7中对大数据集有效地计算移动平均值

时间:2016-11-23 13:09:40

标签: python statistics moving-average data-science

我正在学习在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。

2 个答案:

答案 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有很多方法可以做到这一点。