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 字符串split的用法分享
Mar 23 Python
python实现linux下使用xcopy的方法
Jun 28 Python
用python记录运行pid,并在需要时kill掉它们的实例
Jan 16 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
Python实现的爬虫刷回复功能示例
Jun 07 Python
Python3对称加密算法AES、DES3实例详解
Dec 06 Python
Python ORM编程基础示例
Feb 02 Python
python简单的三元一次方程求解实例
Apr 02 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
Python ellipsis 的用法详解
Nov 20 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
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
2013/06/24 PHP
php实现源代码加密的方法
2015/07/11 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
2013/10/01 Javascript
js截取小数点后几位的写法
2013/11/14 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
浅谈JS继承_寄生式继承 & 寄生组合式继承
2016/08/16 Javascript
原生js实现轮播图
2017/02/27 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
node express使用HTML模板的方法示例
2019/08/22 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
python 列表降维的实例讲解
2018/06/28 Python
浅谈pyqt5中信号与槽的认识
2019/02/17 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
html5实现滑块功能之type="range"属性
2020/02/18 HTML / CSS
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
大学毕业生管理学求职信
2014/09/01 职场文书
党在我心中的演讲稿
2014/09/13 职场文书
答谢词范文
2015/01/05 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
2015年质检工作总结
2015/05/04 职场文书
初中语文教师研修日志
2015/11/13 职场文书
Go语言并发编程 sync.Once
2021/10/16 Golang