Pandas 基础 (4)—— 汇总和计算描述统计

Pandas 对象拥有一组常用的数学和统计方法,他们大部分都属于约简和汇总统计,用于从 Series 中提取单个值(如 sum/mean),或者从 DataFrame 的行或列中提取一个 Series。

In [144]: df = DataFrame([[1,np.nan],[2,3],[np.nan,np.nan],[0,2]],
     ...: index=['a','b','c','d'],columns=['one','two'])

In [145]: df
Out[145]: 
   one  two
a  1.0  NaN
b  2.0  3.0
c  NaN  NaN
d  0.0  2.0
# sum 方法返回一个含有列小计的 Series
In [146]: df.sum()
Out[146]: 
one    3.0
two    5.0
dtype: float64
# axis 将会按行进行求和运算,NA 值会自动被排除
In [147]: df.sum(axis=1)
Out[147]: 
a    1.0
b    5.0
c    0.0
d    2.0
dtype: float64
# 通过 skipna 参数可以禁用 NA 值参与计算
In [151]: df.sum(axis=1,skipna=False)
Out[151]: 
a    NaN
b    5.0
c    NaN
d    2.0
dtype: float64

约简方法的选项

# idxmax、idxmin 返回的是间接统计(比如达到最小值或最大值的索引)
In [153]: df.idxmax()
Out[153]: 
one    b
two    b
dtype: object
# cumsum 则是累计型的
In [154]: df.cumsum()
Out[154]: 
   one  two
a  1.0  NaN
b  3.0  3.0
c  NaN  NaN
d  3.0  5.0

describe 用于一次性产生多个汇总统计:

In [155]: df.describe()
Out[155]: 
       one       two
count  3.0  2.000000
mean   1.0  2.500000
std    1.0  0.707107
min    0.0  2.000000
25%    0.5  2.250000
50%    1.0  2.500000
75%    1.5  2.750000
max    2.0  3.000000

描述和汇总统计

  1. 相关系数与协方差

    P156

  2. 唯一值、值计数以及成员资格

    从一维 Series 中提取不重复的值时,可以使用 unique 函数:

    In [156]: obj = Series(['c','a','d','a','a','b','b','c','c'])
    
    In [157]: obj.unique()
    Out[157]: array(['c', 'a', 'd', 'b'], dtype=object)
    

    value_counts 用于计算一个 Series 中各值出现的频率:

    In [160]: obj.value_counts()
    Out[160]: 
    c    3
    a    3
    b    2
    d    1
    dtype: int64
    # 顶级 pandas 方法,可用于任何数组或序列
    In [162]: pd.value_counts(obj.values, sort=False)
    Out[162]: 
    a    3
    c    3
    b    2
    d    1
    dtype: int64
    

    isin 用于判断矢量化集合的成员资格,可用于选取 Series 中或 DataFrame 列中数据的子集:

    obj
    Out[163]: 
    0    c
    1    a
    2    d
    3    a
    4    a
    5    b
    6    b
    7    c
    8    c
    dtype: object
    
    obj.isin(['c','b'])
    Out[164]: 
    0     True
    1    False
    2    False
    3    False
    4    False
    5     True
    6     True
    7     True
    8     True
    dtype: bool
    
        
    In [166]: mask = obj.isin(['c','b'])
    
    In [167]: obj[mask]
    Out[167]: 
    0    c
    5    b
    6    b
    7    c
    8    c
    dtype: object
    

涉及到的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wohu007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值