3. 统计

  1. SeriesDataFrame对象都支持Numpy的数组接口,因此可以直接使用Numpy提供的ufunc函数对它们进行运算。这些函数通常都有三个常用参数:

    • axis:指定运算沿着哪个轴进行
    • level:如果轴是多级索引MultiIndex,则根据level分组计算
    • skipna:运算是否自动跳过NaN

    下面的方法使用如下的两个SeriesDataFrame: stats0

  2. 数值运算类方法:(下面的DataFrame方法对于Series也适用)

    • DataFrame.abs():计算绝对值(只对数值元素进行计算)

    • DataFrame.all([axis, bool_only, skipna, level]):返回指定轴上:是否所有元素都为True或者非零。bool_onlyTrue则仅考虑布尔型的数据。

    • DataFrame.any([axis, bool_only, skipna, level]) :返回指定轴上:是否存在某个元素都为True或者非零。bool_onlyTrue则仅考虑布尔型的数据。

    • 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_onlyTrue,则只考虑数值和布尔类型。

      对于Series,只有level一个参数。

    • DataFrame.round([decimals]) :对元素指定小数点位数。decimals可以为一个整数(所有的元素都按照该小数点位数)、一个字典(根据列label指定) stats_compute0 stats_compute1 stats_compute2

  3. 最大最小:(下面的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个数。参数同上。

    stats_minmax0 stats_minmax1

  4. 统计类方法:(下面的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, ...]):沿着指定轴,计算样本的峰度(四阶矩)

      • 对随机变量 3. 统计 - 图73. 统计 - 图8 若存在,则称它为 3. 统计 - 图93. 统计 - 图10 阶原点矩,简称 3. 统计 - 图11 阶矩。若 3. 统计 - 图12 存在,则称它为 3. 统计 - 图133. 统计 - 图14 阶中心矩。
    • 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])

    stats_stats0 stats_stats1 stats_stats2

  5. 对于Series:唯一值、值计数、成员资格:

    • Series.unique():返回Series中唯一值组成的一维ndarray

    • Series.value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True):对Series中的数进行计数。如果normalizeTrue,则返回频率而不是频数。sortTrue则结果根据出现的值排序,排序方式由ascending指定。

      • bins是一个整数或者None。如果它为整数,则使用半开半闭区间来统计,它给出了该区间的数量。
    • Series.isin(values):返回一个布尔数组,给出Series中各值是否位于values中。

      DataFrame也有此方法。

    stats_unique

  6. 对于多级索引,可以通过level参数来指定在某个轴上的操作索引级别。如果level=None,则不考虑索引的多级。 stats_stats_multiIndex