如果图片无法观看,请移步 https://blog.csdn.net/hihell

学编程就跟打游戏一样一样的

为啥一样啊,因为要肝的

你看,学编程有很多好处

掉头发,有借口吧

不洗头,有借口吧

不洗袜子,有借口吧

不去看电影,有借口吧

不陪女朋友,有借口吧

活该单身, (❁´◡`❁)✲゚

哈哈,唯独梦想橡皮擦,她就比较厉害了,

身边的大佬全是综上所述,嘿嘿嘿

学个pandas在不找点乐趣,咋学啊

大周一的,弄点啥?

遥记得,上一篇最后,我说要写groupby的高级函数

后来自己理了理,忽然觉得真难

不想了写了... ...

后来,转念一想,不行啊,我是大佬啊

咋能不写

于是乎,我就写了今天这篇博客

groupby 核心为 split-apply-combine

啥意思呢,就是字面意思呗

分割-应用-组合

  • 分割,就是按照一些标准进行数据的拆分
  • 应用,给分好的组,应用一些函数上去
  • 组合,分组的数据,捣鼓捣鼓,弄成一个新的数据结构,方便后面应用

Over

这就是groupby的核心

分割,或者叫分组(拆分)步骤,是最简单的,

看好数据,写代码就可以了

(说的好像很容易似的)

使用最多的,对我们来说

是想要对数据进行一些基本的应用

也就是分组之后,我们要计算

官方文档里面介绍groupby要实现的效果

就是想模拟SQL的操作

SQL是啥?数据库的那个脚本语言(你不会不会写吧,哈哈哈O(∩_∩)O哈哈~)

groupby在模仿的就是下面这句话

select col1,col2,count(col3),sum(col4) from one_table
group by col1,col2

咦,如果你看到上面的SQL语句

发现,这个我熟悉啊

那么接下来,学习就easy了

当然,如果你不是很清楚

那就要看你的悟性了

将一个dataframe对象分割成组

其实这个咱上篇文章已经做过了

再学一次,没毛病

举个代码的例子

import pandas as pd
df = pd.DataFrame([('class1','boy',100),
('class2', 'boy', 90),
('class3', 'girl', 80),
('class1', 'unkown', None),
('class2', 'unkown', 90)],index=['dawa','erwa','sanwa','siwa','wuwa'],columns=['class','sex','weight']) print(df)

看着迷糊么?

我其实就是做了这么一个表格

咱去excel里面瞅瞅

pandas里面打印的无非是英文

    class     sex  weight
dawa class1 boy 100.0
erwa class2 boy 90.0
sanwa class3 girl 80.0
siwa class1 unkown NaN
wuwa class2 unkown 90.0

一样的,接下来,基本操作

走位,走位,瞬间清晰

print(df.groupby('class'))
print(df.groupby('sex',axis='columns'))
print(df.groupby(['class','sex']))

第一个,你肯定会

第二个,修改axis的轴,按照columns进行分组了,先不用管有没有意义哦

第三个,请注意,有两个列名在一个数组里面,叫做先按照class分组,在按照sex分组

那么groupby里面可以给哪些值呢?

难不成只有上面的三种

天真了吧

看操作

  1. 给一个python函数,可以作用于每一个目标轴标签上,不好理解
  2. list列表或者numpy的数组,长度和被选择的轴一致
  3. 字典或者Series,格式参照 label->group name
  4. 提供一个字符串,比如df.groupby('A')df.groupby(df['A']) 是一样的
  5. 上面任意一条,构成的list列表

好了,难吧

没错,说了,从这篇博客开始就开始高级部分学习了

嘿嘿

简单的多列分组代码代码如下

df = pd.DataFrame({'A': ['girl', 'boy', 'girl', 'boy',
'girl', 'boy', 'girl', 'girl'],
'B': ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C': [3,1,4,5,6,7,8,1],
'D': [9,1,2,3,1,6,4,3]}) print(df) grouped = df.groupby('A')
print(grouped)
grouped = df.groupby(['A','B'])
print(grouped)

对于一个待分组的dataframe对象来说

你可以直接用'A'或者'B'中的一个进行分组

当然也可以直接用['A','B']进行分组

这个要看你实际的需求了啊

分组之后,我们能干点啥?

当然是获取分组之后的数据啊

print(grouped.get_group('boy'))
print(grouped.get_group('girl'))

小函数,送上一枚

get_group('key name')

除了获取分组之后的数据,在送你个常用小属性,瞅瞅

grouped = df.groupby('A')
print(grouped)
print(grouped.groups)

groups这个属性非常常用哦~因为我们时常需要看一下,分组结果是否争取e

{'boy': Int64Index([1, 3, 5], dtype='int64'), 'girl': Int64Index([0, 2, 4, 6, 7], dtype='int64')}

当然学习吗,你可以使用help和dir把帮助文档弹出来

然后所有的属性和方法都清晰可见了

print(dir(grouped))
print(help(grouped))

到最后了,我在嘚啵一个知识点,这个知识点是series的

为什么又返回来,开始学习series了呢

还不是因为直接学习dataframe的多列分组,难度太大

我们先弄一个完美的测试栗子

arrays = [['a', 'a', 'b', 'b', 'c', 'c', 'd', 'd'],
['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']] index = pd.MultiIndex.from_arrays(arrays=arrays,names=['first','second']) s = pd.Series([3,1,4,1,5,9,2,6],index=index) print(s)

这个series长成这个样子

first  second
a one 3
two 1
b one 4
two 1
c one 5
two 9
d one 2
two 6
dtype: int64

一定要看明白,是分级索引哦

接下来对它进行分组,并且求和

比如,我要计算first列下面的a的和,b的和,c的和,d的和

我们可以通过level参数控制

# 这两个一个意思
print(s.groupby(level=0))
print(s.groupby(level='first'))
grouped = s.groupby(level=0)
print(grouped.sum())

搞定,看看结果

没毛病

对于second列,我们也可以分组求和的哦

grouped = s.groupby(level='second')
print(grouped.sum())

咦,好像发现点问题

print("分组求和")
grouped = s.groupby(level='second')
print(grouped.sum())
print("sum函数求和") print(s.sum(level='second'))

一样唉~

其实参数level也可以这么写呢level=['first','second']

好了,今天肝不动了

明天我们继续吧

你已经关注我公主号了,对不对

赶紧让朋友也关注啊…

周一不睡觉,也要把pandas groupy 肝完,你该这么学,No.8的更多相关文章

  1. pandas处理丢失数据-【老鱼学pandas】

    假设我们的数据集中有缺失值,该如何进行处理呢? 丢弃缺失值的行或列 首先我们定义了数据集的缺失值: import pandas as pd import numpy as np dates = pd. ...

  2. pandas导入导出数据-【老鱼学pandas】

    pandas可以读写如下格式的数据类型: 具体详见:http://pandas.pydata.org/pandas-docs/version/0.20/io.html 读取csv文件 我们准备了一个c ...

  3. 小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据

    在家为国家做贡献太无聊,不如跟我一起学点 Python 人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Panda ...

  4. 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  5. 小白学 Python 数据分析(7):Pandas (六)数据导入

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  6. 小白学 Python 数据分析(8):Pandas (七)数据预处理

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  7. 小白学 Python 数据分析(9):Pandas (八)数据预处理(2)

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  8. 小白学 Python 数据分析(10):Pandas (九)数据运算

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  9. 小白学 Python 数据分析(11):Pandas (十)数据分组

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

随机推荐

  1. git commit 详解

    git commit 命令用来将本地暂存的修改提交到版本库. git commit -m '提交信息'. 我们用的比较多的应该就是-m 参数.添加提交信息. 经常手抖的同学可能会知道,git comm ...

  2. 现在有没有一种富文本编辑器能够直接从 word 中复制粘贴公式的?

    tinymce是很优秀的一款富文本编辑器,可以去官网下载.https://www.tiny.cloud 这里分享的是它官网的一个收费插件powerpaste的旧版本源码,但也不影响功能使用. http ...

  3. Java+web+上传文件夹

    用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/1269085759/up6-jsp-mysq ...

  4. SPOJ GSS1 - Can you answer these queries I(线段树维护GSS)

    Can you answer these queries I SPOJ - GSS1 You are given a sequence A[1], A[2], -, A[N] . ( |A[i]| ≤ ...

  5. python写爬虫遇到需要解码js一些记录

    js在线格式化网站 https://beautifier.io/ Python 执行 JS 代码 NodeJS 安装方式 先解决 JS 环境,这里推荐安装 Node.js ,安装方便,执行效率也高. ...

  6. tarjan——校园网(缩点,再构图)

    P2746 [USACO5.3]校园网Network of Schools 任务一:求缩完点后入度为0的点的个数(有向边) 任务二:求缩完点后入度为0和出度为0的最大值(要把图构造成强连通分量) 注意 ...

  7. Jmeter随机参数各种搭配

    参数配置应该有三种场景,具体其他的我还没想到 一.两个固定值之间随机生成一个值,应用场景没有限制 1.最简单的两个值之间随机产生一个整数作为值,打开函数助手 2.选择函数 __Random 然后我想要 ...

  8. 第11组 Beta冲刺(4/5)

    第11组 Beta冲刺(4/5)   队名 不知道叫什么团队 组长博客 https://www.cnblogs.com/xxylac/p/12018586.html 作业博客 https://edu. ...

  9. PostgreSQL SELECT INTO和INSERT INTO SELECT 两种表复制语句

    SELECT INTO和INSERT INTO SELECT两种表复制语句都可以用来复制表与表之间的数据,但是它们之间也有区别. 建表语句: bas_custom_rel表 CREATE TABLE ...

  10. ArcGIS Python 唯一值专题

    import arcpy mxd = arcpy.mapping.MapDocument("current") lyr = arcpy.mapping.ListLayers(mxd ...