数据聚合与分组操作
GroupBy机制
- 分组键形式
- 与需要分组的轴向长度一致的值列表或者值数组
- DataFrame的列名的值
- 可以将分组轴上的值和分组名称相匹配的字典或series
- 可以在轴索引或索引中的单个标签上调用的函数
- 计算分组的均值 GroupBy的 mean方法
- size方法 返回一个包含组大小信息的series
- 遍历各分组
- for循环
- dict(list(df.groupby('key')))
- 选择一列或所有列的子集
- df.groupby('key')['data']
- df.groupby(['key1','key2'])['data']
- 使用字典和series分组
- 构造字典来标识各列的分组对应关系,并传给groupby的数组
- Series可视为固定大小的映射
- 使用函数分组
- 使用python函数定义分组关系
- 作为分组键的函数将会按照每个索引值调用一次,挺尸返回值会被用作分组名称
- 根据索引层级分组
- 分层索引数据集,能够在轴索引的某个层级上进行聚合
- 根据层级分组,将层级数值或层级名称传递给level关键字
数据聚合
- 聚合是指所有根据数组产生标量值的数据转换过程
- 内置groupby方法:count mean sum min等
- 自定义聚合函数,需要将函数传递给aggregate 或 agg方法
- 逐列及多函数应用
- 如果传递的是函数或者函数名的列表,得到一个列名是这些函数名称的df
- 如果传递的是元组(name, function)的列表,每个元组的第一个元素将作为df的列名
- 在df中,可以指定应用到所有列的函数列表或者每一列上要应用的不用函数
- 将含有列名和函数对应关系的字典传递给agg,可实现将不用函数应用到一个或多个列上
- 只有多个函数应用到至少一个列时,df才具有分层列
- 返回不含行索引的聚合数据
- as_index = False 禁止分组键作为索引
应用:通用拆分-应用-联合
- apply 应用,GroupBy方法最长见的目的
- apply将对象拆分成多块,然后在每一块上调用传递的函数,之后尝试将每一块拼接到一起
- tips.groupby('smoker').apply(top) top函数在df的每一行分组上被调用,之后使用concat函数将结果粘贴在一起,并使用分组名作为各组的标签
- apply除了传递函数 汉可以传递其他参数或关键字
- 压缩分组键
- group_keys=False 禁用具有分组键形成的分层索引
- 分位数与桶分析
- cut和qcut 用于将数据按照你选择的箱位或样本分位数进行分桶
- 与groupby方法一起使用可以对数据集更方便的进行分桶或分位分析
- 使用指定分组值填充缺失值
- fillna 填充缺失值
- 填充值按组变化:对数据分组后使用apply和一个在每个数据块上都调用fillna的函数
- 随机采样与排列
- sample 从大数据集中抽取随机样本
- apply与sample 结合可基于分组随机抽取
- 分组加权平均和相关性
- 逐组线性回归
数据透视表与交叉表
- 数据透视表 电子表格程序和其他数据分析软件中常见的数据汇总工具
- 根据一个或多个键聚合一张表的数据,将数据在矩形格式中排列,其中一些分组键是沿行的,另一些是沿列的
- python中的pandas透视表是groupby工具以及使用分层索引的重塑操作实现的
- df的pivot_table和pandas.pivot_table函数 除了为groupby提供了方便接口,还添加部分总计(边距)
- 交叉表:crosstab
- 数据透视表的一个特殊情况,计算的是分组中的频率
- pandas.crosstable函数
本文详细介绍了如何使用Python进行数据聚合与分组操作,包括GroupBy机制、数据聚合、数据透视表与交叉表的应用。通过实例展示了分组键的多种形式,如值列表、列名、函数等,并探讨了数据聚合的内置方法如mean、sum、min等。此外,还讨论了自定义聚合函数、应用通用拆分-应用-联合策略、分位数分析、填充缺失值以及分组加权平均等高级操作。
501

被折叠的 条评论
为什么被折叠?



