Pandas - 描述性统计

  • 简述

    大量方法共同计算 DataFrame 上的描述性统计和其他相关操作。其中大部分是聚合,如sum(), mean(),但其中一些,比如sumsum(),产生一个相同大小的对象。一般来说,这些方法需要一个axis参数,就像ndarray.{sum, std, ...},但轴可以通过名称或整数指定
    • DataFrame- “index” (axis=0, default), “columns” (axis=1)
    让我们创建一个 DataFrame 并在本章中使用该对象进行所有操作。

    例子

    
    import pandas as pd
    import numpy as np
    #Create a Dictionary of series
    d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
       'Lee','David','Gasper','Betina','Andres']),
       'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
       'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
    }
    #Create a DataFrame
    df = pd.DataFrame(d)
    print df
    
    它的输出如下 -
    
        Age  Name   Rating
    0   25   Tom     4.23
    1   26   James   3.24
    2   25   Ricky   3.98
    3   23   Vin     2.56
    4   30   Steve   3.20
    5   29   Smith   4.60
    6   23   Jack    3.80
    7   34   Lee     3.78
    8   40   David   2.98
    9   30   Gasper  4.80
    10  51   Betina  4.10
    11  46   Andres  3.65
    

    sum()

    返回请求轴的值的总和。默认情况下,轴是索引(轴=0)。
    
    import pandas as pd
    import numpy as np
     
    #Create a Dictionary of series
    d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
       'Lee','David','Gasper','Betina','Andres']),
       'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
       'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
    }
    #Create a DataFrame
    df = pd.DataFrame(d)
    print df.sum()
    
    它的输出如下 -
    
    Age                                                    382
    Name     TomJamesRickyVinSteveSmithJackLeeDavidGasperBe...
    Rating                                               44.92
    dtype: object
    
    每个单独的列都是单独添加的(附加字符串)。

    axis=1

    此语法将给出如下所示的输出。
    
    import pandas as pd
    import numpy as np
     
    #Create a Dictionary of series
    d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
       'Lee','David','Gasper','Betina','Andres']),
       'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
       'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
    }
     
    #Create a DataFrame
    df = pd.DataFrame(d)
    print df.sum(1)
    
    它的输出如下 -
    
    0    29.23
    1    29.24
    2    28.98
    3    25.56
    4    33.20
    5    33.60
    6    26.80
    7    37.78
    8    42.98
    9    34.80
    10   55.10
    11   49.65
    dtype: float64
    

    mean()

    返回平均值
    
    import pandas as pd
    import numpy as np
    #Create a Dictionary of series
    d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
       'Lee','David','Gasper','Betina','Andres']),
       'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
       'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
    }
    #Create a DataFrame
    df = pd.DataFrame(d)
    print df.mean()
    
    它的输出如下 -
    
    Age       31.833333
    Rating     3.743333
    dtype: float64
    

    std()

    返回数值列的 Bressel 标准差。
    
    import pandas as pd
    import numpy as np
    #Create a Dictionary of series
    d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
       'Lee','David','Gasper','Betina','Andres']),
       'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
       'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
    }
    #Create a DataFrame
    df = pd.DataFrame(d)
    print df.std()
    
    它的输出如下 -
    
    Age       9.232682
    Rating    0.661628
    dtype: float64
    
  • 函数与说明

    现在让我们了解 Python Pandas 中描述性统计下的函数。下表列出了重要函数 -
    序号 函数 描述
    1 count() 非空观测数
    2 sum() 值的总和
    3 mean() 平均值
    4 median() 值的中位数
    5 mode() 价值观模式
    6 std() 值的标准差
    7 min() 最小值
    8 max() 最大值
    9 abs() 绝对值
    10 prod() 价值观的产物
    11 累积() 累计金额
    12 cumsum() 累计产品
    注意− 由于 DataFrame 是异构数据结构。通用操作不适用于所有函数。
    • 像这样的函数sum(), cumsum()使用数字和字符(或)字符串数据元素而不会出现任何错误。尽管n实践中,一般从不使用字符聚合,这些函数不会抛出任何异常。
    • 像这样的函数abs(), cumprod()当 DataFrame 包含字符或字符串数​​据时抛出异常,因为无法执行此类操作。
  • 汇总数据

    describe()函数计算与 DataFrame 列有关的统计信息摘要。
    
    import pandas as pd
    import numpy as np
    #Create a Dictionary of series
    d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
       'Lee','David','Gasper','Betina','Andres']),
       'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
       'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
    }
    #Create a DataFrame
    df = pd.DataFrame(d)
    print df.describe()
    
    它的输出如下 -
    
                   Age         Rating
    count    12.000000      12.000000
    mean     31.833333       3.743333
    std       9.232682       0.661628
    min      23.000000       2.560000
    25%      25.000000       3.230000
    50%      29.500000       3.790000
    75%      35.500000       4.132500
    max      51.000000       4.800000
    
    这个函数给出了mean, stdIQR价值观。并且,函数排除了字符列并给出了关于数字列的摘要。'include'是用于传递关于需要考虑哪些列进行汇总的必要信息的参数。获取值列表;默认情况下,“数字”。
    • object− 汇总字符串列
    • number− 总结数值列
    • all- 将所有列汇总在一起(不应将其作为列表值传递)
    现在,在程序中使用以下语句并检查输出 -
    
    import pandas as pd
    import numpy as np
    #Create a Dictionary of series
    d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
       'Lee','David','Gasper','Betina','Andres']),
       'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
       'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
    }
    #Create a DataFrame
    df = pd.DataFrame(d)
    print df.describe(include=['object'])
    
    它的输出如下 -
    
              Name
    count       12
    unique      12
    top      Ricky
    freq         1
    
    现在,使用以下语句并检查输出 -
    
    import pandas as pd
    import numpy as np
    #Create a Dictionary of series
    d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
       'Lee','David','Gasper','Betina','Andres']),
       'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
       'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
    }
    #Create a DataFrame
    df = pd.DataFrame(d)
    print df. describe(include='all')
    
    它的输出如下 -
    
              Age          Name       Rating
    count   12.000000        12    12.000000
    unique        NaN        12          NaN
    top           NaN     Ricky          NaN
    freq          NaN         1          NaN
    mean    31.833333       NaN     3.743333
    std      9.232682       NaN     0.661628
    min     23.000000       NaN     2.560000
    25%     25.000000       NaN     3.230000
    50%     29.500000       NaN     3.790000
    75%     35.500000       NaN     4.132500
    max     51.000000       NaN     4.800000