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

为啥一样啊,因为要肝的

你看,学编程有很多好处

掉头发,有借口吧 不洗头,有借口吧
不洗袜子,有借口吧 不去看电影,有借口吧 不陪女朋友,有借口吧

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

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

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

学个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       3two       1
b      one       4two       1
c      one       5two       9
d      one       2two       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']

好了,今天肝不动了

明天我们继续吧

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

赶紧让朋友也关注啊…

转载于:https://juejin.im/post/5d06e3c06fb9a07eba2c3c2c

周一不睡觉,也要把pandas groupy 肝完,你该这么学,No.8相关推荐

  1. pandas groupy和agg一起使用,as_index = False不生效?

    确实不生效 尤其是agg里有一组聚合函数时,设置as_index = False可能还出错 那该怎么办 不再设置as_index = False 而是对结果进行reset_index() # 这样符合 ...

  2. pandas nan判断_【跟着stackoverflow学Pandas】 删除带有NaN的行

    How to drop rows of Pandas DataFrame whose value in certain columns is NaN - 删除带有NaN的行 在用 pandas 处理数 ...

  3. python numpy pandas 书 全_夯基固本学Python—Numpy与Pandas

    数据分析绝对绕不过的三个包是numpy.scipy和pandas.numpy是Python的数值计算扩展,专门用来处理矩阵,它的运算效率比列表更高效.scipy是基于numpy的科学计算包,包括统计. ...

  4. Python 异步,协程,学起来好头疼,Python爬虫程序能调用GPU去爬东西吗?

    78 技术人社群日报时间 文章目录 Python 爬虫程序能调用 GPU 去爬东西吗? Python 异步,协程--,学起来好头疼 有没有牛子大的说下 `matplotlib` 里 `plot` 和 ...

  5. 数据基础---《利用Python进行数据分析·第2版》第12章 pandas高级应用

    之前自己对于numpy和pandas是要用的时候东学一点西一点,直到看到<利用Python进行数据分析·第2版>,觉得只看这一篇就够了.非常感谢原博主的翻译和分享. 前面的章节关注于不同类 ...

  6. pandas 筛选excel文件并保存新表

    文章目录 前言 代码 总结 前言 今天处理了一个大的excel文件,从中筛选符合条件的数据,excel工具只能筛选两个条件太局限了,就用pandas处理了一下,也是学到了很多东西,在这里记录一下,方便 ...

  7. ImportError: Pandas requires version ‘2.0.1‘ or newer of ‘xlrd‘ (version ‘1.2.0‘ currently instal的问题

    报错翻译 严重错误:Pandas需要"xlrd"的版本"2.0.1"或更高版本(当前安装的版本为"1.2.0") 解决办法 pip inst ...

  8. 入职快两个月的一些感悟

    入职快两个月的一些感悟 自己的一些情况 找工作的日子 入职后的情况 总结 自己的一些情况 先介绍一下自己,我是20届毕业生,大四下学期学校才没有课,可以自主实习,可是今年比较特殊.疫情原因找好的实习泡 ...

  9. 2016年下半年总结(连载)!

    2016年下半年总结(连载!) ①   10月总结 夜深人静的时候.一个的时候总喜欢多想.    这一个月真是过得快啊,不免又说起了老套而又真实的话.此刻:2016/10/29/23:34.    开 ...

最新文章

  1. Mail Archiving Expert电子邮件归档专家
  2. JupyterLab 3.0发布!
  3. 2020年最新!百度、微软、浪潮、谷歌企业级综述更新!
  4. pytorch 三角函数
  5. android实现语音合成
  6. [云炬创业管理笔记]第四章把握创业机会测试2
  7. mxnet基础到提高(11)--循环
  8. 修改python默认的编码方式
  9. 全志A33-gpio驱动程序
  10. 凯利公式自动计算表_EXCEL——可自动计算的收支表,全函数计算,拿上就用!
  11. python比较长度_Python:XLRD;比较列长度
  12. 植物大战僵尸模式修改
  13. 开源物联网云平台 Thingsboard入门
  14. c语言智能车跑道检测程序,智能小车的循迹方法与流程
  15. echarts 多图联动
  16. 二阶、三角、三阶、四阶、五阶魔方还原方法总结
  17. 大数据中台架构以及建设全流程一(Paas层设计)
  18. SpringBoot中post请求报405错误排坑
  19. through2.js,xtend.js源码
  20. 黑科技解密!实现socket进程间迁移!

热门文章

  1. HTML网页设计基础——用户注册界面
  2. 输入文字时自动带空格解决办法
  3. Solidity随机数发生器原理与实现
  4. 课题:修改ssh的访问端口
  5. 数字藏品|NFT整个行业的调研报告 数字藏品有价值吗 数字藏品是什么 百度数字藏品
  6. Python软件编程等级考试二级——20211205
  7. Android微信页面缓存清理,安卓微信浏览器缓存如何清理
  8. 【华为OD机试真题 python】水仙花素 【2022 Q4 | 100分】
  9. 学校计算机管理员考核方案,计算机科学与工程学院班级创建目标管理实施细则...
  10. matlab检验相关性显著性检验,显著性检验matlab.ppt