Pandas分组与排序的实现


Posted in Python onJuly 23, 2019

一、pandas分组

1、分组运算过程:split->apply->combine

  • 拆分:进行分组的根据
  • 应用:每个分组运行的计算规则
  • 合并:把每个分组的计算结果合并起来

Pandas分组与排序的实现

2、分组函数

DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs

by: 依据哪些列进行分组,值可以是:mapping, function, label, or list of labels

3、聚合函数

Pandas分组与排序的实现

4、分组聚合实例

单列分组

>>> import pandas as pd
>>> df = pd.DataFrame({'A': ['a', 'b', 'a', 'c', 'a', 'c', 'b', 'c'], 'B': [2, 8, 1, 4,
3, 2, 5, 9], 'C': [102, 98, 107, 104, 115, 87, 92, 123], 'D': [2, 98, 17, 14, 15, 7, 92,
 13]})
>>> df
  A B  C  D
0 a 2 102  2
1 b 8  98 98
2 a 1 107 17
3 c 4 104 14
4 a 3 115 15
5 c 2  87  7
6 b 5  92 92
7 c 9 123 13
>>> df.groupby(by='A').sum()
  B  C  D
A
a  6 324  34
b 13 190 190
c 15 314  34

多列分组

>>> df.groupby(by=['A','B']).sum()       ###A,B成索引
    C  D
A B
a 1 107 17
 2 102  2
 3 115 15
b 5  92 92
 8  98 98
c 2  87  7
 4 104 14
 9 123 13

多列聚合

>>> df.groupby(by=['A','B'])['C'].sum()   ###1个列
A B
a 1  107
  2  102
  3  115
b 5   92
  8   98
c 2   87
  4  104
  9  123
 
>>> df.groupby(by=['A','B'])['C','D'].sum()  ###2个列
    C  D
A B
a 1 107 17
 2 102  2
 3 115 15
b 5  92 92
 8  98 98
c 2  87  7
 4 104 14
 9 123 13

多列不同聚合方式

>>> import numpy as np
>>> df.groupby(by=['A']).agg({'C':[np.mean, 'sum'], 'D':['count',np.std]})
      C     D
     mean sum count    std
A
a 108.000000 324   3 8.144528
b  95.000000 190   2 4.242641
c 104.666667 314   3 3.785939
 
 
>>>ps: 不同列使用多个不同函数进行聚合C: mean,sum;D:count,std

返回值类型区别

方法1:agg
>>> df.groupby(by=['A']).agg({'C':[np.mean]})
      C
     mean
A
a 108.000000
b  95.000000
c 104.666667
>>> type(df.groupby(by=['A']).agg({'C':[np.mean]}))
<class 'pandas.core.frame.DataFrame'>
 
 
方法2:索引
>>> df.groupby(by=['A'])['C'].mean()
A
a  108.000000
b   95.000000
c  104.666667
Name: C, dtype: float64
>>> type(df.groupby(by=['A'])['C'].mean())
<class 'pandas.core.series.Series'>
 
 
 
总结: 两种方法结果一样,但是一个类型是DataFrame,一个为Series;有时候会用上

二、pandas排序

按索引进行降序排列

>>> df
  A B  C  D
0 a 2 102  2
1 b 8  98 98
2 a 1 107 17
3 c 4 104 14
4 a 3 115 15
5 c 2  87  7
6 b 5  92 92
7 c 9 123 13
>>> df.sort_index(ascending=False)    ### 索引
  A B  C  D
7 c 9 123 13
6 b 5  92 92
5 c 2  87  7
4 a 3 115 15
3 c 4 104 14
2 a 1 107 17
1 b 8  98 98
0 a 2 102  2

按值进行降序排列

>>> df.sort_values(by="A",ascending=False)    # 按某一列
  A B  C  D
3 c 4 104 14
5 c 2  87  7
7 c 9 123 13
1 b 8  98 98
6 b 5  92 92
0 a 2 102  2
2 a 1 107 17
4 a 3 115 15
 
>>> df.sort_values(by=["B","A"],ascending=False)  # 按2列
  A B  C  D
7 c 9 123 13
1 b 8  98 98
6 b 5  92 92
3 c 4 104 14
4 a 3 115 15
5 c 2  87  7
0 a 2 102  2
2 a 1 107 17

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在漏洞利用Python代码真的很爽
Aug 26 Python
python使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
通过python+selenium3实现浏览器刷简书文章阅读量
Dec 26 Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 Python
使用python的pandas为你的股票绘制趋势图
Jun 26 Python
python写日志文件操作类与应用示例
Jul 01 Python
基于Python2、Python3中reload()的不同用法介绍
Aug 12 Python
python列表推导式操作解析
Nov 26 Python
numpy矩阵数值太多不能全部显示的解决
May 14 Python
django序列化时使用外键的真实值操作
Jul 15 Python
python实现学生通讯录管理系统
Feb 25 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 #Python
Django logging配置及使用详解
Jul 23 #Python
Python利用scapy实现ARP欺骗的方法
Jul 23 #Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
Jul 23 #Python
提升Python效率之使用循环机制代替递归函数
Jul 23 #Python
深入了解Django View(视图系统)
Jul 23 #Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 #Python
You might like
ftp类(example.php)
2006/10/09 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
PHP新手用的Insert和Update语句构造类
2012/03/31 PHP
解析php如何将日志写进syslog
2013/06/28 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
原生javascript获取元素样式属性值的方法
2010/12/25 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
js实现日期级联效果
2014/01/23 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
python梯度下降算法的实现
2020/02/24 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
优衣库澳大利亚官网:UNIQLO澳大利亚
2017/01/18 全球购物
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
计算机开发个人求职信范文
2013/09/26 职场文书
党员学习十八大感想
2014/01/17 职场文书
财务总监岗位职责
2014/03/07 职场文书
无传销社区工作方案
2014/05/13 职场文书
不错的求职信范文
2014/07/20 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
手术室护士个人总结
2015/02/13 职场文书
2015公司年度工作总结
2015/05/14 职场文书
三八节祝酒词
2015/08/11 职场文书
php png失真的原因及解决办法
2021/11/17 PHP