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中的继承和多态的概念
Apr 27 Python
Python base64编码解码实例
Jun 21 Python
python生成器表达式和列表解析
Mar 10 Python
Python 操作MySQL详解及实例
Apr 30 Python
老生常谈python之鸭子类和多态
Jun 13 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
Python对象属性自动更新操作示例
Jun 15 Python
Python基于SMTP协议实现发送邮件功能详解
Aug 14 Python
解决Tensorflow 内存泄露问题
Feb 05 Python
在keras中对单一输入图像进行预测并返回预测结果操作
Jul 09 Python
详解python tkinter 图片插入问题
Sep 03 Python
Python并发爬虫常用实现方法解析
Nov 19 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微信支付之公众号支付功能
2018/05/30 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
2020/04/25 Javascript
Jquery ajax书写方法代码实例解析
2020/06/12 jQuery
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
Python测试人员需要掌握的知识
2018/02/08 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
Python类的动态绑定实现原理
2020/03/21 Python
python可以用哪些数据库
2020/06/22 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
英语简历自我评价
2014/01/26 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
公司捐款倡议书
2014/05/14 职场文书
课外小组活动总结
2014/08/27 职场文书
小学庆六一活动总结
2014/08/28 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
单位更名证明
2015/06/18 职场文书
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python