我的编程空间,编程开发者的网络收藏夹
学习永远不晚

df.groupby()方法讲解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

df.groupby()方法讲解

df.groupby()方法讲解

分组:根据研究目的,将所有样本点按照一个或多个属性划分为多个组,就是分组。

pandas中,数据表就是DataFrame对象,分组就是groupby方法。将DataFrame中所有行按照一列或多列来划分,分为多个组,列值相同的在同一组,列值不同的在不同组。

分组后,就得到一个groupby对象,代表着已经被分开的各个组。后续所有的动作,比如计数,求平均值等,都是针对这个对象,也就是都是针对各个组。即在每个组组内进行计数,求平均值等。

分组的返回结果

df = pd.DataFrame([['a', 'man', 120, 90],                   ['b', 'woman', 130, 100],                   ['a', 'man', 110, 108],                   ['a', 'woman', 120, 118]], columns=['level', 'gender', 'math','chinese'])group = df.groupby('gender')

df.groupby() 函数返回的对象是一系列键值对,其中键是分组的字段值,值是该字段值下的数据表。分组的结果是无法直接输出的,print()只能看到该结果的数据类型。可以用循环对分组后的结果进行遍历。

print(group)# for key, value in group:    print(key)    print(value)    print("")man  level gender  math  chinese0     a    man   120       902     a    man   110      108woman  level gender  math  chinese1     b  woman   130      1003     a  woman   120      118

按一列分组:df.groupby(column)

group = df.groupby('gender') # 按照'gender'列的值来分组,创建一个groupby对象# group = df.groupby(['gender']) # 等价写法for key, df in group:    print(key)    print(df)man  level gender  math  chinese0     a    man   120       902     a    man   110      108woman  level gender  math  chinese1     b  woman   130      1003     a  woman   120      118

按多列分组:df.groupby([column1, column2])

group = df.groupby(['gender', 'level'])# 先按照'grade'列的值来分组。每组内,再按'level'列来分组。也返回一个groupby对象for key, value in group:    print(key)    print(value)    print("")('man', 'a')  level gender  math  chinese0     a    man   120       902     a    man   110      108('woman', 'a')  level gender  math  chinese3     a  woman   120      118('woman', 'b')  level gender  math  chinese1     b  woman   130      100

查看每组的统计数据:df.groupby(column).describe()

对数据表中的数值列进行统计,给出包括count = 计数,mean = 平均数,std = 方差,min = 最小值,25% = 四分位数,50% = 二分位数,75% = 四分之三分位数,max = 最大值的信息。不会对非数值列统计。

返回的是一个dataframe。

  • 查看所有列的统计信息

    group = df.groupby(['gender'])df1 = group.describe()# df1 = df.groupby(['gender']).describe() # 等价写法print(type(df1)) print(df1)<class 'pandas.core.frame.DataFrame'> math                         chinese  \       count   mean       std    min    25%    50%    75%    max   count   gender             man      2.0  115.0  7.071068  110.0  112.5  115.0  117.5  120.0     2.0   woman    2.0  125.0  7.071068  120.0  122.5  125.0  127.5  130.0     2.0            mean        std    min    25%    50%    75%    max  gender                           man      99.0  12.727922   90.0   94.5   99.0  103.5  108.0  woman   109.0  12.727922  100.0  104.5  109.0  113.5  118.0
  • 查看指定列的统计信息

group = df.groupby(['gender'])df1 = group.describe()['math'] # 只看math列的统计信息print(df1)count   mean    std    min    25%    50%    75%    maxgender   man       2.0  115.0  7.071068  110.0  112.5  115.0  117.5  120.0woman     2.0  125.0  7.071068  120.0  122.5  125.0  127.5  130.0
  • 查看纵向视图

    unstack()可以将每列的统计信息垂直排列。

group = df.groupby(['gender'])df1 = group.describe().unstack()print(df1)gendermath     count  man         2.000000                woman       2.000000         ...         max    man       120.000000                woman     130.000000chinese  count  man         2.000000                woman       2.000000         ...                woman     113.500000         max    man       108.000000                woman     118.000000dtype: float64

组内离散列计数:df.groupby(column)[column2].value_counts()

数据表中的列按值是否连续,可以分为连续值列、离散值列。对于离散值列,可以统计其不重复值的个数。对于连续值列,统计不重复值一般没有意义。统计结果是一个Series对象。

group = df.groupby(['gender'])df1 = group['level'].value_counts() # 统计'level'列的不重复值个数print(type(df1))print(df1)<class 'pandas.core.series.Series'>gender  levelman     a        2woman   a        1        b        1pyName: level, dtype: int64

组内数值列和:df.groupby(column).sum()

group = df.groupby(['gender'])df1 = group.sum()print(df1)math  chinesegender               man      230      198woman    250      218

组内成员数:df.groupby(column).count()

每组内,按列统计每组的成员数。每列的统计结果是一样的

group = df.groupby(['gender'])df1 = group.count()print(df1)level  math  chinesegender                      man         2     2        2woman       2     2        2

组内数值列均值:df.groupby(column).mean()

每组内,统计所有数值列的均值,非数值列无均值。

所有组的均值

group = df.groupby(['gender'])df1 = group.mean()print(df1)math  chinesegender               man      115       99woman    125      109

单组的均值

group = df.groupby(['gender'])df1 = group['math'].mean()print(df1)genderman      115woman    125Name: math, dtype: int64

组内数值列最大值:df.groupby(column).max()

每组内,统计所有数值列的最大值,非数值列无最大值

统计所有数值列的最大值

group = df.groupby(['gender'])df1 = group.max()print(df1)level  math  chinesegender                     man        a   120      108woman      b   130      118

统计单个数值列的最大值

group = df.groupby(['gender'])df1 = group['math'].max()print(df1)genderman      120woman    130Name: math, dtype: int64

组内应用函数:df.groupby(column1)[column2].apply()

group = df.groupby(['gender'])df1 = group['math'].apply(np.mean) # 求组内均值print(df1)genderman      115.0woman    125.0Name: math, dtype: float64

组内不同列用不同函数:df.groupby(column).agg({column1:func, column2:func,…})

group = df.groupby(['gender'])df1 = group.agg({'math':np.mean, 'chinese':np.std})print(df1)math    chinesegender                 man      115  12.727922woman    125  12.727922

来源地址:https://blog.csdn.net/HTDiiii/article/details/127000069

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

df.groupby()方法讲解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

pandas中df.groupby()方法深入讲解

在使用pandas进行数据统计分析时遇到了问题,找了很久才找到解决办法,所以下面这篇文章主要给大家介绍了关于pandas中df.groupby()方法的相关资料,需要的朋友可以参考下
2022-12-20

Goroutine使用方法讲解

goroutine是Go语言提供的语言级别的轻量级线程,在我们需要使用并发时,我们只需要通过go关键字来开启goroutine即可。这篇文章主要介绍了GoLang并发机制goroutine原理,感兴趣的可以了解一下
2023-01-09

Android.bp语法和使用方法讲解

Android.bp是用来替换Android.mk的配置文件,下面这篇文章主要给大家介绍了关于Android.bp语法和使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-02-09

C# Decimal.Round()方法实例讲解

Decimal.Round()方法是C#中用于对decimal类型的数值进行四舍五入的方法。它的语法如下:public static decimal Round(decimal d)public static decimal Round(d
2023-09-28

scipy.interpolate插值方法实例讲解

这篇文章主要介绍了scipy.interpolate插值方法介绍,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-12-29

vuerouter路由跳转方法讲解

这篇文章主要介绍了vuerouter路由跳转方法概述,使用到Vue的项目,我们最常见使用的就是Vue配套的VueRouter库,本文结合示例代码给大家详细讲解,需要的朋友可以参考下
2022-12-14

Spring注解之@Import使用方法讲解

@Import是Spring基于Java注解配置的主要组成部分,下面这篇文章主要给大家介绍了关于Spring注解之@Import的简单介绍,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
2023-01-03

Canvas开篇之drawBitmap方法讲解

drawBitmap方法是Canvas类中的一个方法,用于在画布上绘制位图。方法签名:public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint)参数解析
2023-09-13

Log4j_配置方法(全面讲解)

一、Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别
2023-05-31

FactoryBeanBeanFactory方法使用示例详解讲解

这篇文章主要为大家介绍了FactoryBeanBeanFactory方法使用示例详解讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-12-29

实例讲解vue的截取方法

Vue是一种流行的JavaScript框架,它可以帮助您构建快速响应的单页面应用程序。Vue框架提供了许多实用的功能,其中一个非常实用的功能是截取(slice)方法。本文将介绍Vue的截取方法,包括语法,如何使用以及一些实际的示例。## 什么是截取方法?在Vue中,截取方法是指从一个数组或字符串的特定位置开始,截取出一定长度的子数组或子字符串。截取方法可以帮助您轻松地操作和管理
2023-05-14

VueAST的转换实现方法讲解

本节,我们将讨论关于AST的转换。所谓AST的转换,指的是对AST进行一系列操作,将其转换为新的AST的过程。新的AST可以是原语言或原DSL的描述,也可以是其他语言或其他DSL的描述。例如,我们可以对模板AST进行操作,将其转换为JavaScriptAST
2023-01-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录