pandas(三)

作者: 红炉点雪hi | 来源:发表于2017-09-14 14:09 被阅读58次
    • 汇总和计算描述统计

    调用DataFrame的sum方法将会返回一个含有列小计的Series:

    df = DataFrame([[1.4,np.nan],[7.1,-4.5],
                    [np.nan,np.nan],[0.75,-1.3]],
                   index=['a','b','c','d'],
                   columns=['one','two'])
    print df.sum()
    '''
    输出结果是:
    one    9.25
    two   -5.80
    dtype: float64
    '''
    

    传入axis=1将会按行进行求和运算:

    print df.sum(axis = 1)
    '''
    输出结果为:
    a    1.40
    b    2.60
    c     NaN
    d   -0.55
    dtype: float64
    '''
    

    NA值将会自动被排除(除非整个切片都是NA),通过skipna选项可以禁用该功能:

    print df.sum(axis = 1,skipna=False)
    '''
    输出结果为:
    a     NaN
    b    2.60
    c     NaN
    d   -0.55
    dtype: float64
    '''
    

    类似的方法还有mean
    这类方法常用参数如下:

    常用参数.png

    还存在一些方法是间接统计,比如返回最大值和最小值的索引(idxmax和idxmin)

    print df.idxmax()
    print '--------------------'
    print df.cumsum() #上下累加,这是一种累计型方法
    '''
    输出结果如下:
    one    b
    two    d
    dtype: object
    --------------------
        one  two
    a  1.40  NaN
    b  8.50 -4.5
    c   NaN  NaN
    d  9.25 -5.8
    '''
    

    DataFrame中存在一种既不是简约型也不是累计型的方法,比如describe,它可以用于一次性产生多个汇总统计:

    print df.describe()
    '''
    输出结果为:
                one       two
    count  3.000000  2.000000
    mean   3.083333 -2.900000
    std    3.493685  2.262742
    min    0.750000 -4.500000
    25%    1.075000 -3.700000
    50%    1.400000 -2.900000
    75%    4.250000 -2.100000
    max    7.100000 -1.300000
    '''
    

    以下是pandas中常用的描述和汇总统计的方法:

    方法图1.png 方法图2.png
    • 唯一值、值计数以及成员资格

    第一个函数是unique,它可以得到Series中唯一值数组:

    obj= Series(['c','a','d','d','a','c','v','t','t','c'])
    uniques = obj.unique()
    print uniques
    '''
    输出结果为:
    ['c' 'a' 'd' 'v' 't']
    '''
    

    这种方式返回的是没有经过排序的,如果需要的话可以使用uniques.sort()方法返回排序的数组。
    values_counts用于计算一个Series中各值出现的频率:

    print obj.value_counts()
    '''
    返回结果为:
    c    3
    d    2
    t    2
    a    2
    v    1
    dtype: int64
    '''
    

    value_counts还是一个顶级pandas方法,可用于任何数组或序列:

    print pd.value_counts(obj.values,sort=False)
    

    最后是isin,它用于判断适量话集合的成员资格,可用于选取Series中或DataFrame列中数据的子集:

    mask = obj.isin(['a','c'])
    print obj[mask]
    '''
    输出结果为:
    0    c
    1    a
    4    a
    5    c
    9    c
    dtype: object
    '''
    

    以下是常用方发表:

    常用方法表.png

    得到每一个元素在每一列中出现的次数:

    data = DataFrame({'Qu1':[1, 3, 4, 3, 4],
                      'Qu2':[2,3,1,2,3],
                      'Qu3':[1,5,2,4,4]})
    print data.apply(pd.value_counts).fillna(0)
    '''
    输出结果为:
       Qu1  Qu2  Qu3
    1  1.0  1.0  1.0
    2  0.0  2.0  1.0
    3  2.0  2.0  0.0
    4  2.0  0.0  2.0
    5  0.0  0.0  1.0
    '''
    

    相关文章

      网友评论

        本文标题:pandas(三)

        本文链接:https://www.haomeiwen.com/subject/oocdsxtx.html