1. 程式人生 > >pandas的彙總和計算描述統計

pandas的彙總和計算描述統計

pandas提供了很多常用的數學和統計方法,其中大部分都屬於約簡和彙總統計,用於從Series中提取單個值(如sum或mean)或從DataFrame的行或列中提取一個Series。

一、DataFrame的sum和mean方法
    a = [[1,np.nan,9],[2,8,3],[3,5,np.nan]]
    data = DataFrame(a,index=["a","b","c"],columns=["one","two","three"])
    print(data)
    '''
       one  two  three
    a    1  NaN    9.0
    b    2  8.0    3.0
    c    3  5.0    NaN
    '''
    #對列求和
    print(data.sum())
    '''
    one       6.0
    two      13.0
    three    12.0
    '''
    #對行求和
    print(data.sum(axis=1))
    '''
    a    10.0
    b    13.0
    c     8.0
    '''
    #對行求平均值,預設排除NaN值
    print(data.mean(axis=1))
    '''
    a    5.000000
    b    4.333333
    c    4.000000
    '''
    #對行求平均值,禁用自動排除NaN值
    print(data.mean(axis=1,skipna=False))
    '''
    a         NaN
    b    4.333333
    c         NaN
    '''
二、統計
    a = [[1,np.nan,9],[2,8,3],[3,5,np.nan]]
    data = DataFrame(a,index=["0","1","2"],columns=["a","b","c"])
    print(data)
    '''
       a    b    c
    0  1  NaN  9.0
    1  2  8.0  3.0
    2  3  5.0  NaN
    '''
    #返回每一列中最大值的行索引
    print(data.idxmax())
    '''
    a    2
    b    1
    c    0
    '''
    #返回每一列中最小值的行索引
    print(data.idxmin())
    '''
    a    0
    b    2
    c    1
    '''
    #對每列的值進行累加
    print(data.cumsum())
    '''
         a     b     c
    0  1.0   NaN   9.0
    1  3.0   8.0  12.0
    2  6.0  13.0   NaN

    '''
上面的操作都是對於列,如果想要對行進行操作,只需要在方法中設定axis引數為1即可。
三、描述

a、DataFrame

    a = [[1,np.nan,9],[2,8,3],[3,5,np.nan]]
    data = DataFrame(a,index=["0","1","2"],columns=["a","b","c"])
    print(data)
    '''
       a    b    c
    0  1  NaN  9.0
    1  2  8.0  3.0
    2  3  5.0  NaN
    '''
    #列出DataFrame的描述
    '''
    四分位數用於繪製箱線圖判斷是否為異常值
    count:該列(行)非NA值的個數
    mean :該列(行)的均值
    std  :該列(行)的方差
    25%  :上四分位數
    50%  :非NA值的平均數
    75%  :下四分位數
    max  :最大值
    '''
    print(data.describe())
    '''
             a        b         c
    count  3.0  2.00000  2.000000
    mean   2.0  6.50000  6.000000
    std    1.0  2.12132  4.242641
    min    1.0  5.00000  3.000000
    25%    1.5  5.75000  4.500000
    50%    2.0  6.50000  6.000000
    75%    2.5  7.25000  7.500000
    max    3.0  8.00000  9.000000    
    '''
b、Series

如果值是數值型的描述與DataFrame一致,下面展示當值為非數值的時候的描述。

    s = Series(["a","b","b","d"])
    print(s)
    '''
    0    a
    1    b
    2    b
    3    d
    '''
    print(s.describe())
    '''
    count     4
    unique    3
    top       b
    freq      2
    '''
除了上面提到的方法之外,pandas還提供了許多的方法,如下表