周一不睡觉,也要把pandas groupy 肝完,你该这么学,No.8
如果图片无法观看,请移步 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里面可以给哪些值呢?
难不成只有上面的三种
天真了吧
看操作
- 给一个python函数,可以作用于每一个目标轴标签上,不好理解
- list列表或者numpy的数组,长度和被选择的轴一致
- 字典或者Series,格式参照 label->group name
- 提供一个字符串,比如
df.groupby('A')
和df.groupby(df['A'])
是一样的 - 上面任意一条,构成的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的更多相关文章
- pandas处理丢失数据-【老鱼学pandas】
假设我们的数据集中有缺失值,该如何进行处理呢? 丢弃缺失值的行或列 首先我们定义了数据集的缺失值: import pandas as pd import numpy as np dates = pd. ...
- pandas导入导出数据-【老鱼学pandas】
pandas可以读写如下格式的数据类型: 具体详见:http://pandas.pydata.org/pandas-docs/version/0.20/io.html 读取csv文件 我们准备了一个c ...
- 小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据
在家为国家做贡献太无聊,不如跟我一起学点 Python 人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Panda ...
- 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python 数据分析(7):Pandas (六)数据导入
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python 数据分析(8):Pandas (七)数据预处理
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python 数据分析(9):Pandas (八)数据预处理(2)
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python 数据分析(10):Pandas (九)数据运算
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python 数据分析(11):Pandas (十)数据分组
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
随机推荐
- js原生ajax与jquery的ajax的用法区别
什么是ajax和原理? AJAX 是一种用于创建快速动态网页的技术. 通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据 XMLHttpRequest对象的基本属性: onre ...
- Codeforces Round #350 (Div. 2) A B C D1 D2 水题【D2 【二分+枚举】好题】
A. Holidays 题意:一个星球 五天工作,两天休息.给你一个1e6的数字n,问你最少和最多休息几天.思路:我居然写成模拟题QAQ. #include<bits/stdc++.h> ...
- dblclick([[data],fn]) 当双击元素时,会发生 dblclick 事件。
dblclick([[data],fn]) 概述 当双击元素时,会发生 dblclick 事件.大理石量具哪家好 当鼠标指针停留在元素上方,然后按下并松开鼠标左键时,就会发生一次 click.在很短的 ...
- Codeforces Educational Codeforces Round 67
目录 Contest Info Solutions A. Stickers and Toys B. Letters Shop C. Vasya And Array D. Subarray Sortin ...
- 创建全局变量用以保存传递MFC中不同窗口中的数据
格式如下: //DATA_TEMP.h class CDATA_TEMP{public: CDATA_TEMP(); virtual ~CDATA_TEMP();public: static int ...
- [报错解决] 关于windows下 使用Anaconda3安装的python无法使用ssl模块问题.关联pip无法下载https
关联错误: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not ...
- cc.Sprite组件
1.精灵 精灵(Sprite)是Cocos系列的核心概念之一,是Cocos Creator最常用的显示图像的组件. 游戏中显示一个图片,我们就可以把这个叫做"精灵" sprite, ...
- 1633:【例 3】Sumdiv
#include<bits/stdc++.h> #define ll long long using namespace std; ; ll a,b,ans=,cnt; ll p[],c[ ...
- 史上最详细的C语言和Python的选择排序算法
未经同意,请勿转载!如有收货,请留一赞,不胜感激! 同时欢迎加入我们的qq交流群:326079727 话不多说上代码: C语言: //选择排序走起 //原理:吃透原理再去实现,选择排序也是类似于冒泡排 ...
- AcFun 的视频架构演化实践——阅读心得
视频的核心技术栈 AcFun 弹幕视频网(acfun.tv)是中国最早上线的弹幕视频网站,也是最具影响力的弹幕视频平台.“AcFun”原取意于“AnimeComic Fun”.自2007年6月6日成立 ...