码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Pandas分组聚合_Python数据分析与可视化


    Pandas分组聚合

    • 分组
      • 单列和多列分组
      • Series 系列分组
      • 通过数据类型或者字典分组
      • 获取单个分组
      • 对分组进行迭代
    • 聚合
      • 应用单个聚合函数
      • 应用多个聚合函数
      • 自定义函数传入 agg() 中
      • 对不同的列使用不同的聚合函数

    分组聚合的流程主要有三步:

    • 分割步骤将 DataFrame 按照指定的键分割成若干组;
    • 应用步骤对每个组应用函数,通常是累计、转换或过滤函数;
    • 组合步骤将每一组的结果合并成一个输出数组。

    在这里插入图片描述

    分组

    通常我们将数据分成多个集合的操作称之为分组,Pandas 中使用 groupby() 函数来实现分组操作。

    单列和多列分组

    对分组后的子集进行数值运算时,不是数值的列会自动过滤

    import pandas as pd
    data = {'A': [1, 2, 2, 3, 2, 4],
            'B': [2014, 2015, 2014, 2014, 2015, 2017],
            'C': ["a", "b", "c", "d", "e", "f"],
            'D': [0.5, 0.9, 2.1, 1.5, 0.5, 0.1]
            }
    df = pd.DataFrame(data)
    df.groupby("B")   #单列分组  返回的是一个groupby对象
    df.groupby(["B","C"])    #多列分组
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    Series 系列分组

    选取数据帧中的一列作为 index 进行分组:

    df["A"].groupby(df["B"])   #df的 A 列根据 B 进行分组
    
    • 1

    通过数据类型或者字典分组

    数据类型分组:

    df.groupby(df.dtypes,axis=1)   # axis=1表示按列分组,以数据类型为列名
    
    • 1

    传入字典分组:

    dic = {"A": "number", "B": "number", "C": "str", "D": "number"}
    df.groupby(dic, axis=1)   #按列分组,列名是字典的值
    
    • 1
    • 2

    获取单个分组

    使用 get_group() 方法可以选择一个组。

    df.groupby("A").get_group(2)
    Output:
       A     B  C    D
    1  2  2015  b  0.9
    2  2  2014  c  2.1
    4  2  2015  e  0.5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    对分组进行迭代

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

    for name,data in df.groupby("A"):
            print(name)
            print(data)
    Output:
    1
       A     B  C    D
    0  1  2014  a  0.5
    2
       A     B  C    D
    1  2  2015  b  0.9
    2  2  2014  c  2.1
    4  2  2015  e  0.5
    3
       A     B  C    D
    3  3  2014  d  1.5
    4
       A     B  C    D
    5  4  2017  f  0.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    聚合

    聚合函数为每个组返回单个聚合值。当创建了 groupby 对象,就可以对分组数据执行多个聚合操作。比较常用的是通过聚合函数或等效的 agg 方法聚合。


    常用的聚合函数:
    在这里插入图片描述

    应用单个聚合函数

    对分组后的子集进行数值运算时,不是数值的列会自动过滤

    import pandas as pd
    import numpy as np
    data = {'A': [1, 2, 2, 3, 2, 4],
            'B': [2014, 2015, 2014, 2014, 2015, 2017],
            'C': ["a", "b", "c", "d", "e", "f"],
            'D': [0.5, 0.9, 2.1, 1.5, 0.5, 0.1]
            }
    df = pd.DataFrame(data)
    df.groupby("B").sum()       #对分组进行求和
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    应用多个聚合函数

    df.groupby("B").agg([np.sum,np.mean,np.std])
    
    • 1

    自定义函数传入 agg() 中

    def result(df):
        return df.max() - df.min()
    df.groupby("B").agg(result)  #求每一组最大值与最小值的差
    
    • 1
    • 2
    • 3

    对不同的列使用不同的聚合函数

    mapping = {"A":np.sum,"B":np.mean}
    df.groupby("C").agg(mapping)
    
    • 1
    • 2
  • 相关阅读:
    SpringBoot SpringBoot 运维实用篇 3 多环境开发 3.4 多环境分组管理
    Day13--自定义组件-封装自定义属性和click事件
    Pytorch重点概念笔记:都是本人学习中真实遇到的(一)
    从机器翻译到智驾:规则派的黄昏与数据革命的终局
    本文整理了Debian 11在国内的几个软件源。
    PHP基础教程——总结W3school
    虚拟机ubuntu20.04连不上网
    超越任务调度的极致:初探分布式定时任务 XXL-JOB 分片广播
    WPF自定义快捷命令
    黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第十一章 攻击性取证
  • 原文地址:https://blog.csdn.net/xks18232047575/article/details/134486235
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号