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 回调函数和回调方法的实现分析
Mar 23 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
tensorflow训练中出现nan问题的解决
Feb 10 Python
python实现本地图片转存并重命名的示例代码
Oct 27 Python
Pyqt QImage 与 np array 转换方法
Jun 27 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
Python单元测试工具doctest和unittest使用解析
Sep 02 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
Jan 06 Python
部署Django到阿里云服务器教程示例
Jun 03 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 Python
利用python对mysql表做全局模糊搜索并分页实例
Jul 12 Python
Python编程中Python与GIL互斥锁关系作用分析
Sep 15 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
Smarty+QUICKFORM小小演示
2007/02/25 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
php返回json数据函数实例
2014/10/09 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
JS判断是否手机或pad访问实现方法
2016/12/09 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
JavaScript 处理树数据结构的方法示例
2019/06/16 Javascript
[43:36]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python遍历文件夹和读写文件的实现代码
2016/08/28 Python
Python小游戏之300行代码实现俄罗斯方块
2019/01/04 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
浅谈python常用程序算法
2019/03/22 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
Python过滤序列元素的方法
2020/07/31 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
python 高阶函数简单介绍
2021/02/19 Python
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
模具设计与制造专业推荐信
2014/02/16 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书
Python3.10的一些新特性原理分析
2021/09/15 Python
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis