Pandas - 统计函数

  • 简述

    统计方法有助于理解和分析数据的行为。我们现在将学习一些可以应用于 Pandas 对象的统计函数。
  • 百分比变化

    Series、DatFrames和Panel,都有这个函数pct_change(). 此函数将每个元素与其前一个元素进行比较并计算变化百分比。
    
    import pandas as pd
    import numpy as np
    s = pd.Series([1,2,3,4,5,4])
    print s.pct_change()
    df = pd.DataFrame(np.random.randn(5, 2))
    print df.pct_change()
    
    它的输出如下 -
    
    0        NaN
    1   1.000000
    2   0.500000
    3   0.333333
    4   0.250000
    5  -0.200000
    dtype: float64
                0          1
    0         NaN        NaN
    1  -15.151902   0.174730
    2  -0.746374   -1.449088
    3  -3.582229   -3.165836
    4   15.601150  -1.860434
    
    默认情况下,pct_change()对列进行操作;如果您想智能地应用同一行,请使用axis=1()参数。
  • 协方差

    协方差应用于序列数据。Series 对象有一个方法 cov 来计算系列对象之间的协方差。NA 将被自动排除。

    Series

    
    import pandas as pd
    import numpy as np
    s1 = pd.Series(np.random.randn(10))
    s2 = pd.Series(np.random.randn(10))
    print s1.cov(s2)
    
    它的输出如下 -
    
    -0.12978405324
    
    应用于 DataFrame 时的协方差方法,计算cov所有列之间。
    
    import pandas as pd
    import numpy as np
    frame = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
    print frame['a'].cov(frame['b'])
    print frame.cov()
    
    它的输出如下 -
    
    -0.58312921152741437
               a           b           c           d            e
    a   1.780628   -0.583129   -0.185575    0.003679    -0.136558
    b  -0.583129    1.297011    0.136530   -0.523719     0.251064
    c  -0.185575    0.136530    0.915227   -0.053881    -0.058926
    d   0.003679   -0.523719   -0.053881    1.521426    -0.487694
    e  -0.136558    0.251064   -0.058926   -0.487694     0.960761
    
    注意− 观察cov之间ab第一条语句中的列,相同的是 cov 在 DataFrame 上返回的值。
  • 相关性

    相关性显示任意两个值数组(系列)之间的线性关系。有多种方法可以计算相关性,例如 pearson(默认)、spearman 和 kendall。
    
    import pandas as pd
    import numpy as np
    frame = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
    print frame['a'].corr(frame['b'])
    print frame.corr()
    
    它的输出如下 -
    
    -0.383712785514
               a          b          c          d           e
    a   1.000000  -0.383713  -0.145368   0.002235   -0.104405
    b  -0.383713   1.000000   0.125311  -0.372821    0.224908
    c  -0.145368   0.125311   1.000000  -0.045661   -0.062840
    d   0.002235  -0.372821  -0.045661   1.000000   -0.403380
    e  -0.104405   0.224908  -0.062840  -0.403380    1.000000
    
    如果 DataFrame 中存在任何非数字列,则会自动将其排除。
  • 数据排名

    数据排名为元素数组中的每个元素生成排名。在平局的情况下,分配平均排名。
    
    import pandas as pd
    import numpy as np
    s = pd.Series(np.random.np.random.randn(5), index=list('abcde'))
    s['d'] = s['b'] # so there's a tie
    print s.rank()
    
    它的输出如下 -
    
    a  1.0
    b  3.5
    c  2.0
    d  3.5
    e  5.0
    dtype: float64
    
    Rank 可选地采用参数升序,默认情况下为 true;如果为 false,则对数据进行反向排名,较大的值分配较小的排名。
    Rank 支持不同的平局方法,由方法参数指定 -
    • average− 并列组的平均排名
    • min− 组中排名最低的
    • max− 组中排名最高的
    • first- 按照它们在数组中出现的顺序分配的等级