• 【学习】数据处理基础知识(汇总和计算描述统计)【pandas】


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

    1、 描述和汇总统计方法

    #汇总和计算描述统计
    import numpy as np
    import pandas as pd
    
    #定义一个4*2维的数据结构
    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'])
    df
    #默认列汇总
    df.sum()
    #行汇总
    df.sum(axis = 1)
    
    #Na值被自动排除,除非整个切片都是NA,通过 skipna选项可以禁用该功能
    df.mean(axis =1, skipna = False)
    df.sum()
    Out[120]: 
    one    9.25
    two   -5.80
    dtype: float64
    
    df.sum(axis = 1)
    Out[121]: 
    a    1.40
    b    2.60
    c    0.00
    d   -0.55
    dtype: float64
    
    df.mean(axis =1, skipna = False)
    Out[122]: 
    a      NaN
    b    1.300
    c      NaN
    d   -0.275
    dtype: float64

    约简方法的选项

    #定义一个4*2维的数据结构
    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'])
    df
    #默认列汇总
    df.sum()
    #行汇总
    df.sum(axis = 1)
    
    #Na值被自动排除,除非整个切片都是NA,通过 skipna选项可以禁用该功能
    df.mean(axis =1, skipna = False)
    
    #有此方法,idmin 和 idxmax返回的是间接统计,比如达到最小值或最大值的索引
    #达到最大值的索引
    df.idxmax()
    df.idxmin()
    
    #累计型方法
    df
    #累计汇总
    df.cumsum()
    
    #describe用于一次性产生多个汇总统计
    df.describe()
    
    #对于非数值型数据,describe会产生另外一种汇总统计
    obj = pd.Series(['a', 'a', 'b', 'c'] * 4)
    obj
    obj.describe()

    obj.describe()
    Out[130]:
    count     16
    unique     3
    top        a
    freq       8
    dtype: object

    描述和汇总统计方法

    2、 相关系数和协方差

    有些汇总统计是通过参数对计算出来的

    计算百分数变化:.pct_change()

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

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

    利用DataFrame的corrwith方法,计算其列或行跟另一个Series或DataFrame之间的相关系数

    df = pd.DataFrame(np.random.randn(5, 10), index= list('abcde'), columns = ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10'])
    df
    returns = df['x1'].pct_change()
    returns
    returns.tail()
    df.x1.corr(df.x2)
    df.x1.cov(df.x2)
    df.corrwith(df.x3)

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

    #唯一值、值计数以及成员资格
    obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
    obj
    #第一个函数unique, 它可以得到Series中的唯一值数组
    uniques = obj.unique()
    uniques
    
    uniques
    Out[159]: array(['c', 'a', 'd', 'b'], dtype=object)
    #返回的唯一值是未排序的,如果需要的话,对结果再次进行排序 (uniques.sort()) uniques.sort()
    Out[164]: array(['a', 'b', 'c', 'd'], dtype=object)
    #value_counts用于计算一个Series中各值出的频率 obj.value_counts()
    Out[165]:
    c    3
    a    3
    b    2
    d    1
    dtype: int64
    #为了便于查看,结果Series是按值频率降序排列的 pd.value_counts(obj.values, sort = False)
    Out[166]:
    a    3
    b    2
    d    1
    c    3
    dtype: int64
    #最后是isin,它用于判断矢量化集合的成员资格,可用于选取Series中或DataFrame列中数据的子集 mask = obj.isin(['b', 'c']) mask
    mask
    Out[168]:
    0     True
    1    False
    2    False
    3    False
    4    False
    5     True
    6     True
    7     True
    8     True
    dtype: bool
    obj[mask] Out[169]:
    0    c
    5    b
    6    b
    7    c
    8    c
    dtype: object
    #唯一值、值计数、成员资格方法 """ isin 计算一个表示”Series各值是否包含于传入的值序列中“的布尔型数组 unique 计算Series中的唯一值数组,按发现的顺序返回 value_counts 返回一个Series, 其索引为唯一值,其值为频率,按计数值降序排序 """
    #有时,希望得到多个相关列的一张柱状图
    data = pd.DataFrame({'Qu1':[1, 3, 4, 3, 4], 'Qu2':[2, 3, 1, 2, 3], 'Qu3': [1, 5, 2, 4, 4]})
    data
    Out[171]: 
       Qu1  Qu2  Qu3
    0    1    2    1
    1    3    3    5
    2    4    1    2
    3    3    2    4
    4    4    3    4
    #将value_counts传给该DF的apply函数就会出现 result = data.apply(pd.value_counts).fillna(0) result

    Out[173]:
       Qu1  Qu2  Qu3
    1  1.0  1.0  1.0
    2  0.0  2.0  1.0
    3  2.0  2.0  0.0
    4  2.0  0.0  2.0
    5  0.0  0.0  1.0
  • 相关阅读:
    死锁
    Hibernate—01
    POI
    线程 Thread
    SSH页面整合_01
    cnblogs安家了
    漫画:天堂里没有程序员!
    我又愿中国青年都只是向上走,不必理会这冷笑和暗箭!!!!!!!!
    一位信息系统项目管理培训老师写的《论婚姻项目管理》值得看一下!
    程序员保持健康的方法和经验
  • 原文地址:https://www.cnblogs.com/yizhenfeng/p/7489280.html
Copyright © 2020-2023  润新知