学习pandas apply方法,看这一篇就够了,你该这么学,No.10

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

时间过得飞快python

一晃,一周就过去了app

本着不进步就倒退的性格 我成功的在技术上面划水了一周 函数

在这里插入图片描述

今天要学习的仍是groupby的高级进阶

说是高级,其实就是比初级复杂了一些学习

有点绕,而后不容易明白测试

就成为高级了spa

其实对于pandas来讲code

应该仍是基础部分orm

咱们今天要学习的就是cdn

自定义更丰富的分组运算blog

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你学会了吗?

没学会,就在看一遍

书读百遍,该不会,仍是不会

在这里插入图片描述

拿出手机,对着个人公主号,拍一拍

在这里插入图片描述
相关文章
相关标签/搜索