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中的多重继承实例讲解
Sep 28 Python
Python使用metaclass实现Singleton模式的方法
May 05 Python
Python连接phoenix的方法示例
Sep 29 Python
获取Django项目的全部url方法详解
Oct 26 Python
Python进阶之递归函数的用法及其示例
Jan 31 Python
Python内置模块ConfigParser实现配置读写功能的方法
Feb 12 Python
python ftp 按目录结构上传下载的实现代码
Sep 12 Python
Python3通过chmod修改目录或文件权限的方法示例
Jun 08 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
opencv检测动态物体的实现
Jul 21 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 函数执行效率的小比较
2010/10/17 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
对YUI扩展的Gird组件 Part-2
2007/03/10 Javascript
javascript 对象定义方法 简单易学
2009/03/22 Javascript
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
Underscore源码分析
2015/12/30 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
计算机相关的自我评价
2014/01/15 职场文书
元旦晚会邀请函
2014/02/01 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
心理健康日活动总结
2014/05/08 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript
Python实现智慧校园自动评教全新版
2021/06/18 Python
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL