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中标准模块importlib详解
Apr 16 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
python中实现精确的浮点数运算详解
Nov 02 Python
python中os和sys模块的区别与常用方法总结
Nov 14 Python
python实现机器学习之多元线性回归
Sep 06 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
Apr 04 Python
python用线性回归预测股票价格的实现代码
Sep 04 Python
使用tqdm显示Python代码执行进度功能
Dec 08 Python
python自动下载图片的方法示例
Mar 25 Python
Python 忽略文件名编码的方法
Aug 01 Python
python 实现汉诺塔游戏
Nov 28 Python
详解Python中的进程和线程
Jun 23 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
初学CAKEPHP 基础教程
2009/11/02 PHP
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
原JS实现banner图的常用功能
2017/06/12 Javascript
js仿微信抢红包功能
2020/09/25 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
2020/04/13 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
python 调用c语言函数的方法
2017/09/29 Python
EM算法的python实现的方法步骤
2018/01/02 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
python实现动态数组的示例代码
2019/07/15 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
Python输出指定字符串的方法
2020/02/06 Python
Python continue语句实例用法
2020/02/06 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
会计自我鉴定
2014/02/04 职场文书
运动会口号8字
2014/06/07 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
暑期培训班招生方案
2014/08/26 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
销售员岗位职责范本
2015/04/11 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python