3. 统计
Series
和DataFrame
对象都支持Numpy
的数组接口,因此可以直接使用Numpy
提供的ufunc
函数对它们进行运算。这些函数通常都有三个常用参数:axis
:指定运算沿着哪个轴进行level
:如果轴是多级索引MultiIndex
,则根据level
分组计算skipna
:运算是否自动跳过NaN
下面的方法使用如下的两个
Series
和DataFrame
:数值运算类方法:(下面的
DataFrame
方法对于Series
也适用)DataFrame.abs()
:计算绝对值(只对数值元素进行计算)DataFrame.all([axis, bool_only, skipna, level])
:返回指定轴上:是否所有元素都为True
或者非零。bool_only
为True
则仅考虑布尔型的数据。DataFrame.any([axis, bool_only, skipna, level])
:返回指定轴上:是否存在某个元素都为True
或者非零。bool_only
为True
则仅考虑布尔型的数据。DataFrame.clip([lower, upper, axis])
:将指定轴上的数据裁剪到[lower,upper]
这个闭区间之内。超过upper
的值裁剪成upper
;小于lower
的值裁剪成lower
。DataFrame.clip_lower(threshold[, axis])
:返回一份拷贝,该拷贝是在指定轴上:向下裁剪到threshold
DataFrame.clip_upper(threshold[, axis])
:返回一份拷贝,该拷贝是在指定轴上:向上裁剪到threshold
DataFrame.prod([axis, skipna, level, ...])
:计算指定轴上的乘积DataFrame.sum([axis, skipna, level, ...])
:沿着指定轴,计算样本的和DataFrame.cumsum([axis, skipna])
:计算沿着axis
轴的累积和。DataFrame.cumprod([axis, skipna])
:计算沿着axis
轴的累积乘积。DataFrame.count([axis, level, numeric_only])
:计算沿着axis
轴,level
级索引的非NaN
值的数量。如果numeric_only
为True
,则只考虑数值和布尔类型。对于
Series
,只有level
一个参数。DataFrame.round([decimals])
:对元素指定小数点位数。decimals
可以为一个整数(所有的元素都按照该小数点位数)、一个字典(根据列label
指定)
最大最小:(下面的
DataFrame
方法对于Series
也适用)DataFrame.max([axis, skipna, level, ...])
: 沿着指定轴,计算最大值DataFrame.min([axis, skipna, level, ...])
: 沿着指定轴,计算最小值Series.argmax([axis, skipna, ...])
: 计算最大值的索引位置(一个整数值)pandas 0.20 以后,它返回的不再是索引位置,而是索引 label,等价于 idxmax
Series.argmin([axis, skipna, ...])
: 计算最小值的索引位置(一个整数值)pandas 0.20 以后,它返回的不再是索引位置,而是索引 label,等价于 idxmin
Series.idxmax([axis, skipna, ...])
: 计算最大值的索引label
Series.idxmin([axis, skipna, ...])
: 计算最小值的索引label
DataFrame.cummax([axis, skipna])
:计算沿着axis
轴的累积最大值。DataFrame.cummin([axis, skipna])
:计算沿着axis
轴的累积最最小值。DataFrame.quantile([q, axis, numeric_only, ...])
:计算指定轴上样本的百分位数。q
为一个浮点数或者一个array-like
。每个元素都是0~1
之间。如 0.5代表 50%分位DataFrame.rank([axis, method, numeric_only, ...])
:计算指定轴上的排名。DataFrame.pct_change([periods, fill_method, ...])
:计算百分比变化。periods
为相隔多少个周期。它计算的是:(s[i+periods]-s[i])/s[i]
,注意结果并没有乘以 100。Series.nlargest( *args,**kwargs)
:计算最大的N
个数。参数为:n
:最大的多少个数keep
:遇到重复值时怎么处理。可以为:'first'/'last'
。
Series.nsmallest( *args,**kwargs)
:计算最小的N
个数。参数同上。
统计类方法:(下面的
DataFrame
方法对于Series
也适用)DataFrame.mean([axis, skipna, level, ...])
:沿着指定轴,计算平均值DataFrame.median([axis, skipna, level, ...])
:沿着指定轴,计算位于中间大小的数DataFrame.var([axis, skipna, level, ddof, ...])
:沿着指定轴,计算样本的方差DataFrame.std([axis, skipna, level, ddof, ...])
:沿着指定轴,计算样本的标准差DataFrame.mad([axis, skipna, level])
:沿着指定轴,根据平均值计算平均绝对离差DataFrame.diff([periods, axis])
:沿着指定轴的一阶差分。periods
为间隔。DataFrame.skew([axis, skipna, level, ...])
:沿着指定轴计算样本的偏度(二阶矩)DataFrame.kurt([axis, skipna, level, ...])
:沿着指定轴,计算样本的峰度(四阶矩)- 对随机变量 , 若存在,则称它为 的 阶原点矩,简称 阶矩。若 存在,则称它为 的 阶中心矩。
DataFrame.describe([percentiles, include, ...])
:获取顺序统计量以及其他的统计结果。percentiles
:一个array-like
。每个元素都是0~1
之间。如 0.5代表 50%分位include,exclude
:指定包含/不包含哪些列(通过dtype
来指定)。可以为None/'all'
,或者一个dtype
列表
DataFrame.corr([method, min_periods])
:计算任意两个列之间的非NAN
的、按照索引对齐的值的相关系数。method
为相关系数的类型,可以为:'pearson'
:标准的相关系数'kendall'
:Kendall Tau
相关系数'spearman'
:Spearman rank
相关系数
而
min_periods
:一个整数。它指定为了生成一个有效的相关系数,每一对列数据的最短长度。DataFrame.corrwith(other[, axis, drop])
:计算两个DataFrame
的行-行、列-列的相关系数。axis
:如果为0/'index'
则沿着0轴,则计算列-列之间的相关系数。如果为1/'columns'
,则沿着1轴,计算行-行之间的相关系数drop
:一个布尔值。如果为True
,则如果某行/列都是NaN
,则抛弃该行/列。如果为False
,则返回全部。
DataFrame.cov([min_periods])
:计算任意两列之间的协方差。min_periods
指定为了生成一个有效的协方差,每一对列数据的最短长度。- 对于
Series
,其调用为:Series.cov(other,[min_periods])
- 对于
对于
Series
:唯一值、值计数、成员资格:Series.unique()
:返回Series
中唯一值组成的一维ndarray
Series.value_counts(normalize=False, sort=True, ascending=False,
bins=None, dropna=True)
:对Series
中的数进行计数。如果normalize
为True
,则返回频率而不是频数。sort
为True
则结果根据出现的值排序,排序方式由ascending
指定。bins
是一个整数或者None
。如果它为整数,则使用半开半闭区间来统计,它给出了该区间的数量。
Series.isin(values)
:返回一个布尔数组,给出Series
中各值是否位于values
中。DataFrame
也有此方法。
对于多级索引,可以通过
level
参数来指定在某个轴上的操作索引级别。如果level=None
,则不考虑索引的多级。