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 相关文章推荐
pandas.DataFrame删除/选取含有特定数值的行或列实例
Nov 07 Python
浅谈python下tiff图像的读取和保存方法
Dec 04 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
python切片的步进、添加、连接简单操作示例
Jul 11 Python
python实现简单图书管理系统
Nov 22 Python
matplotlib实现显示伪彩色图像及色度条
Dec 07 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
pytorch模型存储的2种实现方法
Feb 14 Python
python手机号前7位归属地爬虫代码实例
Mar 31 Python
基于python实现模拟数据结构模型
Jun 12 Python
推荐值得学习的12款python-web开发框架
Aug 10 Python
详细介绍python类及类的用法
May 31 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
PHP date函数参数详解
2006/11/27 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
用Node编写RESTful API接口的示例代码
2018/07/04 Javascript
搭建vue开发环境
2018/07/19 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
Python线程中对join方法的运用的教程
2015/04/09 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
Python中文分词库jieba,pkusegwg性能准确度比较
2020/02/11 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
adidas美国官网:adidas US
2016/09/21 全球购物
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
人力资源经理的岗位职责范本
2014/02/28 职场文书
纠风工作实施方案
2014/03/15 职场文书
美术专业自荐信
2014/07/07 职场文书
文明礼仪倡议书
2015/04/28 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
python分分钟绘制精美地图海报
2022/02/15 Python