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使用cookie库操保存cookie详解
Mar 03 Python
Python中max函数用法实例分析
Jul 17 Python
Python实现的银行系统模拟程序完整案例
Apr 12 Python
python根据多个文件名批量查找文件
Aug 13 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
python实现logistic分类算法代码
Feb 28 Python
如何使用python代码操作git代码
Feb 29 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
django ORM之values和annotate使用详解
May 19 Python
对Pytorch 中的contiguous理解说明
Mar 03 Python
python爬虫之selenium库的安装及使用教程
May 23 Python
Python3中PyQt5简单实现文件打开及保存
Jun 10 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
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
jquery validate poshytip 自定义样式
2012/11/26 Javascript
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
WebStorm无法正确识别Vue3组合式API的解决方案
2021/02/18 Vue.js
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
Django基础三之视图函数的使用方法
2019/07/18 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
会计专业毕业生自我鉴定
2013/10/29 职场文书
精彩自我鉴定
2014/01/16 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
财务会计专业求职信
2014/06/09 职场文书
建筑管理专业求职信
2014/07/28 职场文书
企业公益活动策划方案
2014/08/24 职场文书
2015年度对口支援工作总结
2015/07/22 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书