Pandas - 窗口函数

  • 简述

    为了处理数值数据,Pandas 提供了一些变体,例如用于窗口统计的滚动、扩展和指数移动权重。其中有sum, mean, median, variance, covariance, correlation,等等。
    我们现在将学习如何将这些中的每一个应用于 DataFrame 对象。
  • .rolling() 函数

    此功能可应用于一系列数据。指定window=n参数并在其上应用适当的统计函数。
    
    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(10, 4),
       index = pd.date_range('1/1/2000', periods=10),
       columns = ['A', 'B', 'C', 'D'])
    print df.rolling(window=3).mean()
    
    它的输出如下 -
    
                        A           B           C           D
    2000-01-01        NaN         NaN         NaN         NaN
    2000-01-02        NaN         NaN         NaN         NaN
    2000-01-03   0.434553   -0.667940   -1.051718   -0.826452
    2000-01-04   0.628267   -0.047040   -0.287467   -0.161110
    2000-01-05   0.398233    0.003517    0.099126   -0.405565
    2000-01-06   0.641798    0.656184   -0.322728    0.428015
    2000-01-07   0.188403    0.010913   -0.708645    0.160932
    2000-01-08   0.188043   -0.253039   -0.818125   -0.108485
    2000-01-09   0.682819   -0.606846   -0.178411   -0.404127
    2000-01-10   0.688583    0.127786    0.513832   -1.067156
    
    Note− 由于窗口大小为 3,因此前两个元素为空值,第三个元素的值将是n,n-1n-2元素。因此,我们也可以应用上面提到的各种功能。
  • .expanding() 函数

    此功能可应用于一系列数据。指定min_periods=n参数并在其上应用适当的统计函数。
    
    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(10, 4),
       index = pd.date_range('1/1/2000', periods=10),
       columns = ['A', 'B', 'C', 'D'])
    print df.expanding(min_periods=3).mean()
    
    它的输出如下 -
    
                       A           B           C           D
    2000-01-01        NaN         NaN         NaN         NaN
    2000-01-02        NaN         NaN         NaN         NaN
    2000-01-03   0.434553   -0.667940   -1.051718   -0.826452
    2000-01-04   0.743328   -0.198015   -0.852462   -0.262547
    2000-01-05   0.614776   -0.205649   -0.583641   -0.303254
    2000-01-06   0.538175   -0.005878   -0.687223   -0.199219
    2000-01-07   0.505503   -0.108475   -0.790826   -0.081056
    2000-01-08   0.454751   -0.223420   -0.671572   -0.230215
    2000-01-09   0.586390   -0.206201   -0.517619   -0.267521
    2000-01-10   0.560427   -0.037597   -0.399429   -0.376886
    
  • .ewm() 函数

    ewm应用于一系列数据。指定任何 com、span、halflife参数并在其上应用适当的统计函数。它以指数方式分配权重。
    
    import pandas as pd
    import numpy as np
     
    df = pd.DataFrame(np.random.randn(10, 4),
       index = pd.date_range('1/1/2000', periods=10),
       columns = ['A', 'B', 'C', 'D'])
    print df.ewm(com=0.5).mean()
    
    它的输出如下 -
    
                        A           B           C           D
    2000-01-01   1.088512   -0.650942   -2.547450   -0.566858
    2000-01-02   0.865131   -0.453626   -1.137961    0.058747
    2000-01-03  -0.132245   -0.807671   -0.308308   -1.491002
    2000-01-04   1.084036    0.555444   -0.272119    0.480111
    2000-01-05   0.425682    0.025511    0.239162   -0.153290
    2000-01-06   0.245094    0.671373   -0.725025    0.163310
    2000-01-07   0.288030   -0.259337   -1.183515    0.473191
    2000-01-08   0.162317   -0.771884   -0.285564   -0.692001
    2000-01-09   1.147156   -0.302900    0.380851   -0.607976
    2000-01-10   0.600216    0.885614    0.569808   -1.110113
    
    窗口函数主要用于通过平滑曲线以图形方式查找数据中的趋势。如果日常数据有很多变化并且有很多数据点可用,那么采样和绘图是一种方法,应用窗口计算并在结果上绘制图形是另一种方法。通过这些方法,我们可以平滑曲线或趋势。