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 相关文章推荐
Python3搜索及替换文件中文本的方法
May 22 Python
python实现按行切分文本文件的方法
Apr 18 Python
python实现的二叉树定义与遍历算法实例
Jun 30 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
详解python selenium 爬取网易云音乐歌单名
Mar 28 Python
Django中ORM外键和表的关系详解
May 20 Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
python re的findall和finditer的区别详解
Nov 15 Python
如何用Python提取10000份log中的产品信息
Jan 14 Python
Pycharm连接远程服务器并远程调试的全过程
Jun 24 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
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
php开发环境配置记录
2011/01/14 PHP
php根据年月获取季度的方法
2014/03/31 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
python下载文件记录黑名单的实现代码
2017/10/24 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
Python加速程序运行的方法
2020/07/29 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
法国隐形眼镜网站:VisionDirect.fr
2020/03/03 全球购物
电气个人求职信范文
2014/02/04 职场文书
大学自我评价
2014/02/12 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
升学宴来宾致辞
2015/07/27 职场文书
2016大一新生军训感言
2015/12/08 职场文书
2017新年晚会开幕词
2016/03/03 职场文书