zoukankan      html  css  js  c++  java
  • Pandas | 14 统计函数

    统计方法有助于理解和分析数据的行为。可以将这些统计函数应用到Pandas的对象上。

    pct_change()函数

    系列,DatFrames和Panel都有pct_change()函数。此函数将每个元素与其前一个元素进行比较,并计算变化百分比。

    import pandas as pd
    import numpy as np
    
    s = pd.Series([1,2,3,4,5])
    print(s)
    print (s.pct_change())
    print('
    ')
    
    df = pd.DataFrame(np.random.randn(5, 2))
    print(df)
    print (df.pct_change())

    输出结果:

    0    1
    1 2
    2 3
    3 4
    4 5
    dtype: int64
    0 NaN
    1 1.000000
    2 0.500000
    3 0.333333
    4 0.250000
    dtype: float64


    0 1
    0 1.055808 1.351057
    1 1.458762 0.229309
    2 0.392842 -0.043268
    3 0.700352 0.884258
    4 0.120823 -0.329024
    0 1
    0 NaN NaN
    1 0.381654 -0.830274
    2 -0.730702 -1.188686
    3 0.782782 -21.436989
    4 -0.827482 -1.372090
     

    默认情况下,pct_change()对列进行操作; 如果想应用到行上,那么可使用axis = 1参数。

    协方差

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

    Cov系列示例

    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.0667296739178
    
     

    当应用于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.406796939839
              a         b         c         d         e
    a  0.784886 -0.406797  0.181312  0.513549 -0.597385
    b -0.406797  0.987106 -0.662898 -0.492781  0.388693
    c  0.181312 -0.662898  1.450012  0.484724 -0.476961
    d  0.513549 -0.492781  0.484724  1.571194 -0.365274
    e -0.597385  0.388693 -0.476961 -0.365274  0.785044
    
     

    注 - 观察第一个语句中ab列之间的cov结果值,与由DataFrame上的cov返回的值相同。

    相关性

    相关性显示了任何两个数值(系列)之间的线性关系。有多种方法来计算pearson(默认),spearmankendall之间的相关性。

    import pandas as pd
    import numpy as np
    
    frame = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
    print(frame)
    print('
    ')
    
    print (frame.corr())
    print('
    ')
    
    print (frame['a'].corr(frame['b']))

    输出结果:

              a         b         c         d         e
    0 -1.101841 -0.074431 0.339134 1.259472 -0.371068
    1 0.360877 0.604059 0.276935 -2.151471 -0.172715
    2 -0.194507 -1.678110 -1.276085 0.810856 -0.056959
    3 0.937636 1.128184 0.284501 -0.455708 0.913037
    4 -0.316602 1.252087 -1.790787 -0.103062 0.096654
    5 0.796188 -0.771702 -0.921695 -0.403666 0.848957
    6 1.842859 0.015955 0.555579 0.166412 -0.106779
    7 -2.449436 -0.326649 0.023417 -1.440740 -1.085605
    8 0.716881 0.898661 1.880689 1.306625 -0.908817
    9 -0.312834 1.490284 -0.485538 0.176377 -1.153862


    a b c d e
    a 1.000000 0.147945 0.226588 0.142235 0.523855
    b 0.147945 1.000000 0.244468 -0.096112 -0.177812
    c 0.226588 0.244468 1.000000 0.149294 -0.330628
    d 0.142235 -0.096112 0.149294 1.000000 -0.128328
    e 0.523855 -0.177812 -0.330628 -0.128328 1.000000


    0.14794498240798468
    -0.613999376618
    

    如果DataFrame中存在任何非数字列,则会自动排除。

    数据排名

    数据排名为元素数组中的每个元素生成排名。在关系的情况下,分配平均等级。

    import pandas as pd
    import numpy as np
    
    s = pd.Series(np.random.randn(5), index=list('abcde'))
    print(s)
    print('
    ')
    print (s.rank())          # 正常按照数值大小排名
    print('
    ')
    
    s['d'] = s['b']                 # so there's a tie
    print(s)
    print('
    ')
    print (s.rank())

    输出结果:

    a   -1.076208
    b 0.869269
    c -1.302216
    d -0.772624
    e -0.290900
    dtype: float64


    a 2.0
    b 5.0
    c 1.0
    d 3.0
    e 4.0
    dtype: float64


    a -1.076208
    b 0.869269
    c -1.302216
    d 0.869269
    e -0.290900
    dtype: float64


    a 2.0
    b 4.5
    c 1.0
    d 4.5
    e 3.0
    dtype: float64
    
    

    Rank可选地使用一个默认为true的升序参数; 当错误时,数据被反向排序,也就是较大的值被分配较小的排序。

    Rank支持不同的tie-breaking方法,用方法参数指定 -

    • average - 并列组平均排序等级
    • min - 组中最低的排序等级
    • max - 组中最高的排序等级
    • first - 按照它们出现在数组中的顺序分配队列




  • 相关阅读:
    怎么产生一个随机数
    C# 算速表达式
    Wpf OpenFileDialog
    完美世界自动更新程序
    只容许程序运行1个实例
    WPF 同一个程序 只允许 同时运行一个
    13 引用WINAPI
    winform窗体跟随窗体
    C#如何检测一个字符串是不是合法的URL
    WPF 下载网络文件 带进度条
  • 原文地址:https://www.cnblogs.com/Summer-skr--blog/p/11704743.html
Copyright © 2011-2022 走看看