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文件去除注释的方法
May 25 Python
用Python设计一个经典小游戏
May 15 Python
Python编程实现的图片识别功能示例
Aug 03 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
Aug 05 Python
用Python批量把文件复制到另一个文件夹的实现方法
Aug 16 Python
为什么说Python可以实现所有的算法
Oct 04 Python
Python使用psutil获取进程信息的例子
Dec 17 Python
最新2019Pycharm安装教程 亲测
Feb 28 Python
使用Python实现批量ping操作方法
May 06 Python
python 获取字典特定值对应的键的实现
Sep 29 Python
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
Apr 13 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
我的论坛源代码(五)
2006/10/09 PHP
php访问查询mysql数据的三种方法
2006/10/09 PHP
用PHP写的MySQL数据库用户认证系统代码
2007/03/22 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
PHP小教程之实现链表
2014/06/09 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
js parseInt("08")未指定进位制问题
2010/06/19 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
JavaScript中的console.dir()函数介绍
2014/12/29 Javascript
ECMAScript6块级作用域及新变量声明(let)
2015/06/12 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
PyTorch中permute的用法详解
2019/12/30 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
python温度转换华氏温度实现代码
2020/12/06 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
HTML5画渐变背景图片并自动下载实现步骤
2013/11/18 HTML / CSS
AJAX的优缺点都有什么
2015/08/18 面试题
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
大学生社会实践自我鉴定
2014/03/24 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书