最近好忙啊,好忙啊,忙的写不动博客了

时间过得飞快

一晃,一周就过去了

本着不进步就倒退的性格

我成功的在技术上面划水了一周

今天要学习的还是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的更多相关文章

  1. 学习 Spring Boot 知识看这一篇就够了

    从2016年因为工作原因开始研究 Spring Boot ,先后写了很多关于 Spring Boot 的文章,发表在技术社区.我的博客和我的公号内.粗略的统计了一下总共的文章加起来大概有六十多篇了,其 ...

  2. Mybatis-Plus常用的查询方法--看这一篇就够了!!!

    前言: Mybatis-Plus作为Mybatis的增强,自己封装了很多简单还用的方法,来解脱自己写sql! 对于项目的搭建小编就不在说了,可以参考: SpringBoot+Mybatis-Plus的 ...

  3. [转帖]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件

    nginx学习,看这一篇就够了:下载.安装.使用:正向代理.反向代理.负载均衡.常用命令和配置文件 2019-10-09 15:53:47 冯insist 阅读数 7285 文章标签: nginx学习 ...

  4. Elasticsearch学习,请先看这一篇!

    原文:Elasticsearch学习,请先看这一篇! 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...

  5. Java中的多线程=你只要看这一篇就够了

    如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...

  6. 什么是 DevOps?看这一篇就够了!

    本文作者:Daniel Hu 个人主页:https://www.danielhu.cn/ 目录 一.前因 二.记忆 三.他们说-- 3.1.Atlassian 回答"什么是 DevOps?& ...

  7. 关于 Docker 镜像的操作,看完这篇就够啦 !(下)

    紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...

  8. JVM内存模型你只要看这一篇就够了

    JVM内存模型你只要看这一篇就够了 我是一只孤傲的鱼鹰 让我们不厌其烦的从内存模型开始说起:作为一般人需要了解到的,JVM的内存区域可以被分为:线程栈,堆,静态方法区(实际上还有更多功能的区域,并且这 ...

  9. 【java编程】ServiceLoader使用看这一篇就够了

    转载:https://www.jianshu.com/p/7601ba434ff4 想必大家多多少少听过spi,具体的解释我就不多说了.但是它具体是怎么实现的呢?它的原理是什么呢?下面我就围绕这两个问 ...

随机推荐

  1. csv和xlsx区别

    CSV是文本文件,用记事本就能打开.XLS 是二进制的文件只有用 EXCEL 才能打开: CSV 文件格式只能保存活动工作表中的单元格所显示的文本和数值.数据列以逗号分隔,每一行数据都以回车符结束.如 ...

  2. PHP mysqli_dump_debug_info() 函数

    mysqli_dump_debug_info() 函数转储调试信息到日志中. <?php mysqli_dump_debug_info($con); ?>

  3. Oracle 11g关闭用户连接审计

    sys.aud$表数据量增长较快.这时,不想关闭数据库的审计,但是又不想频繁的清理sys.aud$表.可进行如下操作关闭数据库连接的审计 noaudit connect;

  4. Win内核原理与实现学习笔记2-现代操作系统的基本结构

    1.操作系统本属于软件的范畴,但它需要紧密的跟硬件打交道,它为上层应用软件或应用系统提供了一层抽象,专门负责硬件资源的管理和分配.(应用程序不需要跟硬件打交道,它们利用操作系统提供的功能来实现各种任务 ...

  5. Smali基础知识

    Smali是用于Dalvik(Android虚拟机)的反汇编程序实现 汇编工具(将Smali代码汇编为dex文件)为smali.jar baksmali.jar则是反汇编程序 地址:https://b ...

  6. 使用axios请求的坑

    配置axios在vue-cli中的使用: 在main.js中配置 import axios from "axios" Vue.config.productionTip = fals ...

  7. Java中RuntimeException和Exception

    在java的异常类体系中,Error和RuntimeException是非检查型异常,其他的都是检查型异常. 所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类 不 ...

  8. 异步机制 - ReadFileEx(WriteFileEx)

    1 ReadFileEx定义 BOOL WINAPI ReadFileEx( __in HANDLE hFile, __out LPVOID lpBuffer, __in DWORD nNumberO ...

  9. 错误注入 异常行为 环境变量或代码动态激活来触发这些异常行为 模拟错误 容错性 正确性 稳定性 宏 本质 macro

    小结: 1. 微服务中某个服务出现随机延迟.某个服务不可用. 存储系统磁盘 IO 延迟增加.IO 吞吐量过低.落盘时间长. 调度系统中出现热点,某个调度指令失败. 充值系统中模拟第三方重复请求充值成功 ...

  10. 《Flutter 实战》开源电子书

    <Flutter 实战>开源电子书 转 https://blog.csdn.net/OQjya206rsQ71/article/details/86619630   关于 Flutter ...