学习pandas apply方法,看这一篇就够了,你该这么学,No.10
最近好忙啊,好忙啊,忙的写不动博客了
时间过得飞快
一晃,一周就过去了
本着不进步就倒退的性格
我成功的在技术上面划水了一周
今天要学习的还是groupby的高级进阶
说是高级,其实就是比初级复杂了一些
有点绕,然后不容易明白
就成为高级了
其实对于pandas来说
应该还是基础部分
我们今天要学习的就是
自定义更丰富的分组运算
apply 方法
apply方法的价值
对于有些数据类型来说
是的,有些
agg与transform 不是很适合
所以就会出现apply方法
不过哪些不适合,我们要慢慢细说啦
首先,我们先弄几个apply的例子,看看它到底能干啥
要测试,先造数据
import pandas as pd
df = pd.DataFrame({'A':['bob','sos','bob','sos','bob','sos','bob','bob'],
'B':['one','one','two','three','two','two','one','three'],
'C':[3,1,4,1,5,9,2,6],
'D':[1,2,3,4,5,6,7,8]})
数据造好,分组开始
grouped = df.groupby('A')
for name,group in grouped:
print(name)
print(group)
要想成为高手,这时候,你要开始写代码了
千万不能只看着
对的,你看着永远学不会的
相信橡皮擦
然后我们对结果应用apply方法
d = grouped.apply(lambda x:x.describe())
print(d)
lambda表达式,自己去百度下,关键字python lambda
就是个匿名函数,没啥难的
给分组之后的数据,同时应用 describe方法
当当当,结果展示为
对于apply()方法来说,它做了这么一个操作
将groupby分组好的数据,一组,一组,一组的传递到了函数里面
看好是一组,一组的传递进去
所以,呈现出一种多层级的结构
很难理解,是吧
没错,就是不好理解,要不难么
给你弄个图,理解理解
什么,还不理解
那这样,我们获取分组之后的前2条数据
新需求哦~
完整代码
import pandas as pd
df = pd.DataFrame({'A':['bob','sos','bob','sos','bob','sos','bob','bob'],
'B':['one','one','two','three','two','two','one','three'],
'C':[3,1,4,1,5,9,2,6],
'D':[1,2,3,4,5,6,7,8]})
grouped = df.groupby('A')
for name,group in grouped:
print(name)
print(group)
d = grouped.apply(lambda x:x.head(2))
你看看出来的数据
晓得了不,apply方法 会将分组后的数据一起传入
可以返回多维数据
厉害,厉害,虽然一般我只用最简单的
不用lambda,咱们在实现一下,可能更清楚一些
代码呢,你可以改成这个样子
def get_top(df):
return df.head(2)
d = grouped.apply(get_top)
看,像高手的两把刷子了吧
然后,你还可以给传个参数进去
def get_top(df,n):
return df.head(n)
d = grouped.apply(get_top,n=3)
print(d)
apply方法也可以应用在series上面
自己去试试吧
最后,我需要一个使用apply最常用
也是最好用的方法
当然pandas这么厉害
肯定有很多办法可以替代的
填补空值
import pandas as pd
df = pd.DataFrame({'A':['bob','sos','bob','sos','bob','sos','bob','bob'],
'B':['one','one','two','three','two','two','one','three'],
'C':[3,1,4,1,5,9,None,6],
'D':[1,2,3,None,5,6,7,8]})
grouped = df.groupby('A')
for name,group in grouped:
print(name)
print(group)
def fill_none(one_group):
return one_group.fillna(one_group.mean()) # 把平均值填充到空值里面
d = grouped.apply(fill_none)
print(d)
完美,对应一下数据瞅瞅
好了,apply你学会了吗?
没学会,就在看一遍
书读百遍,该不会,还是不会
拿出手机,对着我的公主号,拍一拍
学习pandas apply方法,看这一篇就够了,你该这么学,No.10的更多相关文章
- 学习 Spring Boot 知识看这一篇就够了
从2016年因为工作原因开始研究 Spring Boot ,先后写了很多关于 Spring Boot 的文章,发表在技术社区.我的博客和我的公号内.粗略的统计了一下总共的文章加起来大概有六十多篇了,其 ...
- Mybatis-Plus常用的查询方法--看这一篇就够了!!!
前言: Mybatis-Plus作为Mybatis的增强,自己封装了很多简单还用的方法,来解脱自己写sql! 对于项目的搭建小编就不在说了,可以参考: SpringBoot+Mybatis-Plus的 ...
- [转帖]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件
nginx学习,看这一篇就够了:下载.安装.使用:正向代理.反向代理.负载均衡.常用命令和配置文件 2019-10-09 15:53:47 冯insist 阅读数 7285 文章标签: nginx学习 ...
- Elasticsearch学习,请先看这一篇!
原文:Elasticsearch学习,请先看这一篇! 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...
- Java中的多线程=你只要看这一篇就够了
如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...
- 什么是 DevOps?看这一篇就够了!
本文作者:Daniel Hu 个人主页:https://www.danielhu.cn/ 目录 一.前因 二.记忆 三.他们说-- 3.1.Atlassian 回答"什么是 DevOps?& ...
- 关于 Docker 镜像的操作,看完这篇就够啦 !(下)
紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...
- JVM内存模型你只要看这一篇就够了
JVM内存模型你只要看这一篇就够了 我是一只孤傲的鱼鹰 让我们不厌其烦的从内存模型开始说起:作为一般人需要了解到的,JVM的内存区域可以被分为:线程栈,堆,静态方法区(实际上还有更多功能的区域,并且这 ...
- 【java编程】ServiceLoader使用看这一篇就够了
转载:https://www.jianshu.com/p/7601ba434ff4 想必大家多多少少听过spi,具体的解释我就不多说了.但是它具体是怎么实现的呢?它的原理是什么呢?下面我就围绕这两个问 ...
随机推荐
- 2018 开始认真学习点python
2018 伊始,又是春暖花开.俗语,“一年之计在于春”.又是一年立志时. 决定认真学习一些web. 本来倾向与学习NodeJS的.可是之前买的python的书太多了.就先紧手头的资源看了再说吧. 今天 ...
- 彻底解决eslint与webstorm针对vue的script标签缩进处理方式冲突问题
彻底解决eslint与webstorm针对vue的script标签缩进处理方式冲突问题 2018年12月08日 21:58:26 Kevin395 阅读数 1753 背景不多介绍了,直接上代码. ...
- Bzoj 1086: [SCOI2005]王室联邦(分块)
1086: [SCOI2005]王室联邦 Time Limit: 10 Sec Memory Limit: 162 MBSec Special Judge Submit: 1557 Solved: 9 ...
- Bzoj 3942: [Usaco2015 Feb]Censoring(kmp)
3942: [Usaco2015 Feb]Censoring Description Farmer John has purchased a subscription to Good Hooveske ...
- css偷懒神奇
偷懒神奇链接:https://qishaoxuan.github.io/css_tricks/glass/
- Windows Server 2008 R2 服务器内存使用率过高几乎耗光
系统环境: Windows Server 2008 R2 Enterprise 搭建有 web服务器(iis) 和 文件服务 问题描述: Windows Server 2008 R2系统内存耗光 ...
- DNS -- 快速清除DNS缓存
MAC: sudo dscacheutil -flushcache Linux: dnsmasq的是一个轻量级的DNS.TFTP和DHCP服务器.它的目的是给局域网提供配对的DNS和DHCP服务. d ...
- Facebook币Libra学习-1.核心概念
Libra区块链是一个基于Libra协议的加密认证的分布式数据库.本文将简略介绍Libra协议的核心概念.其详细说明请参阅Libra技术白皮书. Libra区块链由分布式的Validator节点网络维 ...
- java.util.concurrent.DelayQueue 源码学习
jdk1.8 DelayQueue,带有延迟元素的线程安全队列,当非阻塞从队列中获取元素时,返回最早达到延迟时间的元素,或空(没有元素达到延迟时间).DelayQueue的泛型参数需要实现Delaye ...
- Redis查询_Tips
基础知识——介绍 Redis简介 REmote Dictionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个完全 ...