pandas中pd.groupby()的用法详解


Posted in Python onJune 16, 2022

在pandas中的groupby和在sql语句中的groupby有异曲同工之妙,不过也难怪,毕竟关系数据库中的存放数据的结构也是一张大表罢了,与dataframe的形式相似。

import numpy as np
import pandas as pd
from pandas import Series, DataFrame


df = pd.read_csv('./city_weather.csv')
print(df)
'''
          date city  temperature  wind
0   03/01/2016   BJ            8     5
1   17/01/2016   BJ           12     2
2   31/01/2016   BJ           19     2
3   14/02/2016   BJ           -3     3
4   28/02/2016   BJ           19     2
5   13/03/2016   BJ            5     3
6   27/03/2016   SH           -4     4
7   10/04/2016   SH           19     3
8   24/04/2016   SH           20     3
9   08/05/2016   SH           17     3
10  22/05/2016   SH            4     2
11  05/06/2016   SH          -10     4
12  19/06/2016   SH            0     5
13  03/07/2016   SH           -9     5
14  17/07/2016   GZ           10     2
15  31/07/2016   GZ           -1     5
16  14/08/2016   GZ            1     5
17  28/08/2016   GZ           25     4
18  11/09/2016   SZ           20     1
19  25/09/2016   SZ          -10     4
'''

g = df.groupby(df['city'])
# <pandas.core.groupby.groupby.DataFrameGroupBy object at 0x7f10450e12e8>

print(g.groups)

# {'BJ': Int64Index([0, 1, 2, 3, 4, 5], dtype='int64'),
# 'GZ': Int64Index([14, 15, 16, 17], dtype='int64'),
# 'SZ': Int64Index([18, 19], dtype='int64'),
# 'SH': Int64Index([6, 7, 8, 9, 10, 11, 12, 13], dtype='int64')}

print(g.size()) # g.size() 可以统计每个组 成员的 数量
'''
city
BJ    6
GZ    4
SH    8
SZ    2
dtype: int64
'''

print(g.get_group('BJ')) # 得到 某个 分组
'''
         date city  temperature  wind
0  03/01/2016   BJ            8     5
1  17/01/2016   BJ           12     2
2  31/01/2016   BJ           19     2
3  14/02/2016   BJ           -3     3
4  28/02/2016   BJ           19     2
5  13/03/2016   BJ            5     3
'''

df_bj = g.get_group('BJ')
print(df_bj.mean()) # 对这个 分组 求平均
'''
temperature    10.000000
wind            2.833333
dtype: float64
'''

# 直接使用 g 对象,求平均值
print(g.mean()) # 对 每一个 分组, 都计算分组
'''
      temperature      wind
city                       
BJ         10.000  2.833333
GZ          8.750  4.000000
SH          4.625  3.625000
SZ          5.000  2.500000
'''

print(g.max())
'''
            date  temperature  wind
city                               
BJ    31/01/2016           19     5
GZ    31/07/2016           25     5
SH    27/03/2016           20     5
SZ    25/09/2016           20     4
'''

print(g.min())
'''
            date  temperature  wind
city                               
BJ    03/01/2016           -3     2
GZ    14/08/2016           -1     2
SH    03/07/2016          -10     2
SZ    11/09/2016          -10     1
'''

# g 对象还可以使用 for 进行循环遍历
for name, group in g:
    print(name)
    print(group)


# g 可以转化为 list类型, dict类型
print(list(g)) # 元组第一个元素是 分组的label,第二个是dataframe
'''
[('BJ',          date city  temperature  wind
0  03/01/2016   BJ            8     5
1  17/01/2016   BJ           12     2
2  31/01/2016   BJ           19     2
3  14/02/2016   BJ           -3     3
4  28/02/2016   BJ           19     2
5  13/03/2016   BJ            5     3), 
('GZ',           date city  temperature  wind
14  17/07/2016   GZ           10     2
15  31/07/2016   GZ           -1     5
16  14/08/2016   GZ            1     5
17  28/08/2016   GZ           25     4), 
('SH',           date city  temperature  wind
6   27/03/2016   SH           -4     4
7   10/04/2016   SH           19     3
8   24/04/2016   SH           20     3
9   08/05/2016   SH           17     3
10  22/05/2016   SH            4     2
11  05/06/2016   SH          -10     4
12  19/06/2016   SH            0     5
13  03/07/2016   SH           -9     5), 
('SZ',           date city  temperature  wind
18  11/09/2016   SZ           20     1
19  25/09/2016   SZ          -10     4)]
'''
print(dict(list(g))) # 返回键值对,值的类型是 dataframe
'''
{'SH':           date city  temperature  wind
6   27/03/2016   SH           -4     4
7   10/04/2016   SH           19     3
8   24/04/2016   SH           20     3
9   08/05/2016   SH           17     3
10  22/05/2016   SH            4     2
11  05/06/2016   SH          -10     4
12  19/06/2016   SH            0     5
13  03/07/2016   SH           -9     5, 
'SZ':           date city  temperature  wind
18  11/09/2016   SZ           20     1
19  25/09/2016   SZ          -10     4, 
'GZ':           date city  temperature  wind
14  17/07/2016   GZ           10     2
15  31/07/2016   GZ           -1     5
16  14/08/2016   GZ            1     5
17  28/08/2016   GZ           25     4, 
'BJ':          date city  temperature  wind
0  03/01/2016   BJ            8     5
1  17/01/2016   BJ           12     2
2  31/01/2016   BJ           19     2
3  14/02/2016   BJ           -3     3
4  28/02/2016   BJ           19     2
5  13/03/2016   BJ            5     3}
'''

到此这篇关于pandas中pd.groupby()的用法详解的文章就介绍到这了,更多相关pandas pd.groupby()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

Python 相关文章推荐
python中的reduce内建函数使用方法指南
Aug 31 Python
跟老齐学Python之大话题小函数(2)
Oct 10 Python
Python爬取qq music中的音乐url及批量下载
Mar 23 Python
对python pandas读取剪贴板内容的方法详解
Jan 24 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
tensorflow 环境变量设置方式
Feb 06 Python
pyecharts调整图例与各板块的位置间距实例
May 16 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
Pytorch实现将模型的所有参数的梯度清0
Jun 24 Python
Python实现一个优先级队列的方法
Jul 31 Python
Python机器学习算法之决策树算法的实现与优缺点
May 13 Python
Python基础之函数嵌套知识总结
May 23 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 16 #Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 #Python
python内置模块之上下文管理contextlib
Jun 14 #Python
Python时间操作之pytz模块使用详解
Django框架之路由用法
Jun 10 #Python
深入理解pytorch库的dockerfile
Jun 10 #Python
如何利用python实现列表嵌套字典取值
Jun 10 #Python
You might like
PHP mcrypt可逆加密算法分析
2011/07/19 PHP
php获取数组长度的方法(有实例)
2013/10/27 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
php学习笔记之基础知识
2014/11/08 PHP
PHP异常处理Exception类
2015/12/11 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
python3 深浅copy对比详解
2019/08/12 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
Python中Flask-RESTful编写API接口(小白入门)
2019/12/11 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
软件测试常见笔试题
2012/02/04 面试题
村班子对照检查材料
2014/08/18 职场文书
2014年学生会工作总结范文
2014/11/07 职场文书
导师对论文的学术评语
2015/01/04 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript