深入解析pandas数据聚合和重组

作者:西西弗斯推石头 时间:2023-11-17 17:45:51 

介绍pandas数据聚合和重组的相关知识,仅供参考。

1GroupBy技术

1.1简介

简介:根据一个或多个键进行分组,每一组应用函数,再进行合并

分组的键有多种形式:

  • 列表或数组,长度与待分组的轴一样

  • 表示DataFrame某个列名的值

  • 字典或Series,给出待分组轴上的值与分组名之间的对应关系

  • 函数,用于处理轴索引或索引中的各个标签

实例:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas import Series,DataFrame
df =DataFrame({'key1':list('aabba'),'key2':['one','two','one','two','one'],\
'data1':np.random.randn(5),'data2':np.random.randn(5)})
#根据key1进行分组,并计算data1的均值。
#注意下面的方式,取出来进行分组,而不是在DataFrame中分组,这种方式很灵活
#可以看到这是一个GroupBy对象,具备了应用函数的基础
#这个过程是将Series进行聚合,产生了新的Series
grouped = df['data1'].groupby(df['key1'])
print(grouped,'\n')

深入解析pandas数据聚合和重组

 注:

取出来进行分组,而不是在DataFrame中分组分组键中的缺失值被排除在外 1.2对分组进行迭代

GroupBy对象支持迭代,可以产生一组二元元组(由分组名和数据块组成)

深入解析pandas数据聚合和重组

深入解析pandas数据聚合和重组

 groupby默认在axis=0上进行分组,但可以设置在任何轴上分组

深入解析pandas数据聚合和重组

1.3选取一个或一组列

对于由DataFrame产生的GroupBy对象,如果用一个或一组列名进行索引,可实现选取部分列进行聚合的目的,即下面语法效果相同。

深入解析pandas数据聚合和重组

 1.4通过字典或Series进行分组

深入解析pandas数据聚合和重组

 假设已经知道列的分组方式,现在需要利用这个信息进行分组统计。

下面为groupby传入一个已知信息的字典:

深入解析pandas数据聚合和重组

 相当于将每一个列重设名,再按新的名字进行求和。

Series也有这样的功能,被看作一个固定大小的映射,可以用Series作为分组键,pandas会自动检查对齐。

深入解析pandas数据聚合和重组

1.5利用函数进行分组

将函数、数组、字典、Series混用也ok,因为最终都会转换为数组

深入解析pandas数据聚合和重组

2数据聚合

2.1简介

简介:

这里的数据聚合是说任何能够从数组产生标量值的过程常见的聚合运算都有就地计算数据集统计信息的优化实现。当然不止这些,可以用自己定义的运算,还可以调用分组对象上已经定义好的任何方法。

例:quantile可计算Series或DataFrame列的样本分位数。

深入解析pandas数据聚合和重组

 对于自己定义的聚合函数,只需将其传入aggregate或agg即可:

深入解析pandas数据聚合和重组

有些方法(describe)也可应用

深入解析pandas数据聚合和重组

 自定义函数比经过优化的函数要慢得多,这是因为在构造中间分组数据块时存在非常大的开销(函数调用、数据重排等)

可使用的函数:

深入解析pandas数据聚合和重组

2.1面向列的多函数应用

有时候需要对不同的列应用不同的函数 ,或者对一列应用不同的函数

深入解析pandas数据聚合和重组

 若传入一组函数或函数名,得到的DataFrame列就会以相应的函数命名

深入解析pandas数据聚合和重组

上面有个问题就是列名是自动给出的,以函数名为列名,若传入元组(name,function)组成的列表,就会自动将第一个元素作为列名

深入解析pandas数据聚合和重组

对两列都应用functions:

深入解析pandas数据聚合和重组

 得到的结果的列名是层次化索引,可以直接用外层索引选取数据:

深入解析pandas数据聚合和重组

 如果想对不同的列应用不同的函数,具体的办法是向agg传入一个从列映射到函数的字典:

深入解析pandas数据聚合和重组

2.2以‘无索引’的方式返回聚合数据

到目前为止,示例中的聚合数据都是由唯一的分组键组成的索引(可能还是层次化的)

由于并不是总需要如此,可以向groupby传入as_index = False禁用该功能

深入解析pandas数据聚合和重组

来源:https://blog.csdn.net/m0_58960107/article/details/130131381

标签:pandas,数据,聚合,重组
0
投稿

猜你喜欢

  • 浅谈vuex的基本用法和mapaction传值问题

    2024-06-05 09:18:21
  • Python中的数据可视化matplotlib与绘图库模块

    2021-08-09 06:02:09
  • 最新版 Windows10上安装Python 3.8.5的步骤详解

    2021-12-31 00:50:29
  • ASP连接MSSQL的错误: 拒绝访问

    2008-11-23 20:40:00
  • Git 教程之工作区、暂存区和版本库详解

    2022-11-28 04:07:40
  • Mootools常用方法扩展(二)

    2009-01-11 18:22:00
  • Python中的引用和拷贝实例解析

    2022-02-26 00:59:13
  • python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例

    2023-06-20 22:10:04
  • Python全栈之列表数据类型详解

    2023-05-05 15:27:10
  • python 密码学示例——凯撒密码的实现

    2023-04-20 09:03:55
  • MYSQL本地安装以及出现的问题解决

    2024-01-25 00:00:36
  • Vue 通过自定义指令回顾v-内置指令(小结)

    2023-07-02 16:56:42
  • vue.js $refs和$emit 父子组件交互的方法

    2024-04-30 10:19:11
  • JavaScript:ES2019 的新特性(译)

    2024-04-10 16:16:57
  • 详解Go语言中的内存对齐

    2024-04-25 15:08:28
  • Datawhale练习之二手车价格预测

    2022-02-04 21:35:56
  • wxpython布局的实现方法

    2022-01-31 10:20:57
  • 浅析Python 实现一个自动化翻译和替换的工具

    2021-12-03 20:48:25
  • 在Mac OS上使用mod_wsgi连接Python与Apache服务器

    2021-12-18 11:20:02
  • Python元组常见操作示例

    2023-06-28 20:48:26
  • asp之家 网络编程 m.aspxhome.com