zoukankan      html  css  js  c++  java
  • pandas基础--汇总和计算描述统计

    以下代码默认:import pandas as pd

    1.1 汇总和计算描述统计

    pandas对象拥有一组常用的数学和统计方法,大部分术语约简和汇总设计,用于从Series中提取单个值或从DataFrame的行或列中提取一个Series。

    DataFrame的sum方法会返回一个含有列小计的Series。

     1 >>> df = pd.DataFrame([[1.4, np.nan], [7.1, -4.5], [np.nan, np.nan], [0.75, -1.3]], index=list('abcd'), columns=['one', 'two'])
     2 >>> df
     3     one  two
     4 a  1.40  NaN
     5 b  7.10 -4.5
     6 c   NaN  NaN
     7 d  0.75 -1.3
     8 >>> 
     9 >>> df.sum()
    10 one    9.25
    11 two   -5.80
    12 dtype: float64
    13 >>> df.sum(axis=1) 
    14 a    1.40
    15 b    2.60
    16 c    0.00
    17 d   -0.55
    18 dtype: float64
    19 >>> df.mean(axis=1, skipna=False)  #NA值会自动被排除,除非整个切片(指的行和列)都是NA
    20 a      NaN
    21 b    1.300
    22 c      NaN
    23 d   -0.275
    24 dtype: float64
    25 >>>

    下表是这些约简方法的常用选项。

    选项

    说明

    axis

    约简的轴。DataFrame的行用0,列用1

    skipna

    排除缺失值,默认为True

    level

    如果轴是层次化索引的(即MultiIndex),则根据level分组简约

    有些方法(如idxmin和idxmax)返回的是间接统计,也有一些是累计型的,还有一种方法,既不是约简型也不是累积性,如describe。

     1 >>> df
     2     one  two
     3 a  1.40  NaN
     4 b  7.10 -4.5
     5 c   NaN  NaN
     6 d  0.75 -1.3
     7 >>> df.idxmax()  #间接统计
     8 one    b
     9 two    d
    10 dtype: object
    11 >>> df.cumsum()  #累计型
    12     one  two
    13 a  1.40  NaN
    14 b  8.50 -4.5
    15 c   NaN  NaN
    16 d  9.25 -5.8
    17 >>> df.describe()  #一次性产生多个汇总数据
    18             one       two
    19 count  3.000000  2.000000
    20 mean   3.083333 -2.900000
    21 std    3.493685  2.262742
    22 min    0.750000 -4.500000
    23 25%    1.075000 -3.700000
    24 50%    1.400000 -2.900000
    25 75%    4.250000 -2.100000
    26 max    7.100000 -1.300000

    对于非数值型数据,describe产生另外一种汇总统计。

     1 >>> obj = pd.Series(['a', 'a', 'b', 'c'] * 4)
     2 >>> obj
     3 0     a
     4 1     a
     5 2     b
     6 3     c
     7 4     a
     8 5     a
     9 6     b
    10 7     c
    11 8     a
    12 9     a
    13 10    b
    14 11    c
    15 12    a
    16 13    a
    17 14    b
    18 15    c
    19 dtype: object
    20 >>> obj.describe()  
    21 count     16
    22 unique     3
    23 top        a
    24 freq       8
    25 dtype: object
    26 >>>

    下表是所有与描述统计相关的方法。

    方法

    说明

    count

    非NA值的数量

    describe

    针对Series或各DataFrame列计算汇总统计

    min、max

    计算最小值和最大值

    argmin、argmax

    计算能够获得最小值和最大值的索引位置(整数)

    idxmin、idxmax

    计算能够获得最小值和最大值的索引值

    quantile

    计算样本的分位数(0到1)

    sum

    值的总和

    mean

    值的平均数

    median

    值得算术中位数(50%分位数)

    mad

    根据平均值计算平均绝对离差

    var

    样本值的方差

    std

    样本值的标准差

    skew

    样本值的偏离(三阶矩)

    kurt

    样本值的峰度(四阶矩)

    cumsum

    样本的累计和

    cummin、cummax

    样本值得累计最大值和累计最小值

    cumprod

    样本得累计积

    diff

    计算一阶差分(对时间序列很有用)

    pct_change

    计算百分数变化

    1.2 相关系数和协方差(未搞懂,后续再补充)

    有些汇总统计(如相关系数和协方差)是通过参数对计算出来的。

    Series的corr方法用于计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数。

    DataFrame的corr和cov方法将以DataFrame的形式返回完整的相关系数或协方差矩阵。

    利用DataFrame的corrwith方法,可以计算其列或行跟另一个Series或DataFrame之间的相关系数。传入一个Series将会返回一个相关系数值Series(针对各列进行计算)。

    传入一个DataFrame则会计算按列分配对的相关系数。

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

    从一维Series的值中抽取信息。

    unique():可以得到Series中的唯一值数组;

    value_counts():用于计算一个Series中各值出现的频率,也是一个顶级pandas方法;

    isin():用于判断矢量化集合的成员资格。

     1 >>> obj = pd.Series(list(‘cadaabbcc’)) 
     2 >>> uniques = obj.unique()
     3 >>> uniques
     4 array(['c', 'a', 'd', 'b'], dtype=object)
     5 >>> obj.value_counts()
     6 a    3
     7 c    3
     8 b    2
     9 d    1
    10 dtype: int64
    11 >>> pd.value_counts(obj.values, sort=False) 
    12 b    2
    13 c    3
    14 d    1
    15 a    3
    16 dtype: int64
    17 >>> mask = obj.isin(['b', 'c'])
    18 >>> mask
    19 0     True
    20 1    False
    21 2    False
    22 3    False
    23 4    False
    24 5     True
    25 6     True
    26 7     True
    27 8     True
    28 dtype: bool
    29 >>> obj[mask] 
    30 0    c
    31 5    b
    32 6    b
    33 7    c
    34 8    c
    35 dtype: object 
  • 相关阅读:
    软工实践寒假作业(1/2)
    软工总结
    软件工程第一次结对作业
    软工实践第一次个人编程作业
    软工实践第一次作业
    2019年北航OO第四单元(UML任务)及学期总结
    2019年北航OO第三单元(JML规格任务)总结
    用Maven+IDEA+Eclipse组合获得最好的OpenJML体验
    2019年北航OO第二单元(多线程电梯任务)总结
    2019年北航OO第一单元(表达式求导任务)总结
  • 原文地址:https://www.cnblogs.com/mrlayfolk/p/12256451.html
Copyright © 2011-2022 走看看