美文网首页
数据的初步处理之常用的数学和统计方法

数据的初步处理之常用的数学和统计方法

作者: 5f2a6061653d | 来源:发表于2018-12-06 15:51 被阅读75次

    Pandas拥有一组常用的数学和统计方法,这些方法大部分属于约简和汇总统计,主要用于从Series对象或DataFrame对象中提取数据。这些方法都是基于对没有缺失数据的假设而构建的,例如,sum和mean方法,具体示例如下所示:

    In [54]: import numpy as np
    In [55]: from pandas import Series,DataFrame
    In [56]: f = DataFrame([[2.4,3.6,np.nan],[np.nan,np.nan,np.nan],
        ...: [1.3,3.7,4.9],[0.5,6.6,8.8]],index = ['a','b','c','d'],
        ...: columns = ['one','two','three'])
    In [57]: f_sum = f.sum()
    In [58]: f_sum1 = f.sum(axis = 1)
    In [59]: f_m = f.mean()
    In [60]: f_m1 = f.mean(axis = 1)
    

    上述代码是使用DataFrame对象的sum和mean方法,其中In [57]是对DataFrame对象按列求和,并将求和后的结果赋值给变量f_sum;In [58]是对DataFrame对象按行求和,并将求和后的结果赋值给变量f_sum1;In [59]是对DataFrame对象按列求平均值,并将求平均值后的结果赋值给变量f_mean;In [60]是对DataFrame对象按行求平均值,并将求平均值后的结果赋值给变量f_mean1。各变量的运行结果如下所示:

    In [61]: f
    Out[61]:
       one  two  three
    a  2.4  3.6    NaN
    b  NaN  NaN    NaN
    c  1.3  3.7    4.9
    d  0.5  6.6    8.8
    In [62]: f_sum
    Out[62]:
    one       4.2
    two      13.9
    three    13.7
    dtype: float64
    In [63]: f_sum1
    Out[63]:
    a     6.0
    b     0.0
    c     9.9
    d    15.9
    dtype: float64
    In [64]: f_m
    Out[64]:
    one      1.400000
    two      4.633333
    three    6.850000
    dtype: float64
    In [65]: f_m1
    Out[65]:
    a    3.0
    b    NaN
    c    3.3
    d    5.3
    dtype: float64
    

    从上述运行结果可看出,无论是对DataFrame对象的行或列求和,还是对其求平均数,都是默认自动排除NaN值,但通过skipna属性可禁用上述功能,具体示例如下:

    In [66]: f_mean = f.mean(axis = 1,skipna = False)
    

    上述代码是使用skipna属性禁用自动排除NaN值的功能,运行结果如下所示:

    In [67]: f_mean
    Out[67]:
    a    NaN
    b    NaN
    c    3.3
    d    5.3
    dtype: float64
    

    从上述运行结果可以看出,禁用自动排除NaN值功能后,只要计算的内容中含有NaN值,计算结果就都为NaN值。约简方法中提供了很多选项,具体如表4.8所示。

    选项 说明
    axis 约简的轴,取值一般为0(行)或1(列)
    skipna 过滤缺失值(NaN值),默认值为True
    level 若轴是层次化索引的(即MultiIndex),则根据level分组约简

    上述方法返回的是直接统计,还有一些方法返回的是间接统计,例如,idxmin和idxmax方法,具体示例如下所示:

    In [73]: import numpy as np
    In [74]: from pandas import Series,DataFrame
    In [75]: f = DataFrame([[2.4,3.6,np.nan],[np.nan,np.nan,np.nan],
        ...: [1.3,3.7,4.9],[0.5,6.6,8.8]],index = ['a','b','c','d'],
        ...: columns = ['one','two','three' ])
    In [76]: f1 = f.idxmin()
    In [77]: f2 = f.idxmax()
    

    上述代码是使用DataFrame对象的idxmin和idxmax方法,其中In [76]是获取达到最小值的索引,并将返回结果赋值给变量f1;In [77]是获取达到最大值的索引,并将返回结果赋值给变量f2。各变量的运行结果如下所示:

    In [78]: f
    Out[78]:
       one  two  three
    a  2.4  3.6    NaN
    b  NaN  NaN    NaN
    c  1.3  3.7    4.9
    d  0.5  6.6    8.8
    In [79]: f1
    Out[79]:
    one      d
    two      a
    three    c
    dtype: object
    In [80]: f2
    Out[80]:
    one      a
    two      d
    three    d
    dtype: object
    

    从上述运行结果可以看出,idxmin或idxmax方法返回的是最小值或最大值的索引,而并非是直接的数据。与描述统计相关的方法有很多,可以实现不同的需求,例如,约简、间接统计、累计统计等,具体如表4.9所示。

    方法 说明
    count 非NA值的数量
    describe 针对Series或DataFrame各列计算汇总统计
    min、max 计算最小值和最大值
    argmin、argmax 计算能够获取到的最小值和最大值的索引位置(整数)
    idxmin、idxmax 计算能够获取到最小值和最大值的索引值
    quantile 计算样本的分位数(0到1)
    sum 指的总和
    mean 指的平均数
    median 值的算术中位数(50%分位数)
    mad 根据平均值计算平均绝对离差
    var 样本值的方差
    std 样本值的标准差
    skew 样本值的偏度(三阶矩)
    kurt 样本值的峰度(四阶矩)
    cumsum 样本值的累计和
    cummax、cummin 样本值的累计最大值和累计最小值
    cumprod 样本值的累计积
    diff 计算一阶差分(对时间序列很有用)
    pct_change 计算百分数变化

    相关文章

      网友评论

          本文标题:数据的初步处理之常用的数学和统计方法

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