pandas数据预处理之dataframe的groupby操作方法


Posted in Python onApril 13, 2018

在数据预处理过程中可能会遇到这样的问题,如下图:数据中某一个key有多组数据,如何分别对每个key进行相同的运算?

pandas数据预处理之dataframe的groupby操作方法

dataframe里面给出了一个group by的一个操作,对于”group by”操作,我们通常是指以下一个或多个操作步骤:

l (Splitting)按照一些规则将数据分为不同的组;

l (Applying)对于每组数据分别执行一个函数;

l (Combining)将结果组合到一个数据结构中;

使用dataframe实现groupby的用法:

# -*- coding: UTF-8 -*-
import pandas as pd
df = pd.DataFrame([{'col1':'a', 'col2':1, 'col3':'aa'}, {'col1':'b', 'col2':2, 'col3':'bb'}, {'col1':'c', 'col2':3, 'col3':'cc'}, {'col1':'a', 'col2':44, 'col3':'aa'}])
print df
# 按col1分组并按col2求和
print df.groupby(by='col1').agg({'col2':sum}).reset_index()
# 按col1分组并按col2求最值
print df.groupby(by='col1').agg({'col2':['max', 'min']}).reset_index()
# 按col1 ,col3分组并按col2求和
print df.groupby(by=['col1', 'col3']).agg({'col2':sum}).reset_index()

输出结果为:

col1 col2 col3 
0  a   1  aa 
1  b   2  bb 
2  c   3  cc 
3  a  44  aa
col1 col2 
0  a  45 
1  b   2 
2  c   3
col1 col2   
    max min 
0  a  44  1 
1  b  2  2 
2  c  3  3
col1 col3 col2 
0  a  aa  45 
1  b  bb   2 
2  c  cc   3

注意点:

代码中调用了reset_index() 函数, 如果不使用这个函数输出的结果将是:

col2
col1   
a    45
b    2
c    3
   col2  
   max min
col1     
a   44  1
b    2  2
c    3  3
      col2
col1 col3   
a  aa   45
b  bb    2
c  cc    3

上下两个结果还是有区别的,但是具体区别暂时不太清楚,不过下面的一种输出结果是不能跟使用df['col1']来提取第一列的。至于是什么原因暂时还不清楚,如果您对pandas比较理解或者知道原因,欢迎在评论中留言。

以上这篇pandas数据预处理之dataframe的groupby操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python分析git log日志示例
Feb 27 Python
Python的垃圾回收机制深入分析
Jul 16 Python
Python实现抓取网页并且解析的实例
Sep 20 Python
python获取android设备的GPS信息脚本分享
Mar 06 Python
教大家使用Python SqlAlchemy
Feb 12 Python
tornado 多进程模式解析
Jan 15 Python
使用Python写一个小游戏
Apr 02 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
Jun 13 Python
django 中QuerySet特性功能详解
Jul 25 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
Jan 21 Python
python如何获取网络数据
Apr 11 Python
DataFrame 将某列数据转为数组的方法
Apr 13 #Python
Python中将dataframe转换为字典的实例
Apr 13 #Python
Python 实现使用dict 创建二维数据、DataFrame
Apr 13 #Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 #Python
python实现数据库跨服务器迁移
Apr 12 #Python
解决python3爬虫无法显示中文的问题
Apr 12 #Python
python读取中文txt文本的方法
Apr 12 #Python
You might like
菜鸟修复电子管记
2021/03/02 无线电
利用PHP动态生成VRML网页
2006/10/09 PHP
PHP Array交叉表实现代码
2010/08/05 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
2019/05/28 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
Angular5.1新功能分享
2017/12/21 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
django在开发中取消外键约束的实现
2020/05/20 Python
Python pymsql模块的使用
2020/09/07 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
详解CSS3选择器:nth-child和:nth-of-type之间的差异
2017/09/18 HTML / CSS
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
复古斯堪的纳维亚儿童服装:Baby go Retro
2017/09/09 全球购物
大学生求职推荐信
2013/11/27 职场文书
社区科普工作方案
2014/06/03 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
实习工作表现评语
2014/12/31 职场文书
2015年话务员工作总结
2015/04/29 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
计划生育目标责任书
2015/05/09 职场文书
婚庆司仪开场白
2015/05/29 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
Python实现排序方法常见的四种
2021/07/15 Python