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

栏目: 数据库 · 发布时间: 7年前

内容简介:对于有些数据类型来说 是的,有些agg与transform 不是很适合 所以就会出现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)
复制代码

要想成为高手,这时候,你要开始写代码了

千万不能只看着

对的,你看着永远学不会的

相信橡皮擦

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

然后我们对结果应用apply方法

d = grouped.apply(lambda x:x.describe())
print(d)
复制代码

lambda表达式,自己去百度下,关键字python lambda 就是个匿名函数,没啥难的

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

给分组之后的数据,同时应用 describe方法

当当当,结果展示为

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

对于apply()方法来说,它做了这么一个操作 将groupby分组好的数据,一组,一组,一组的传递到了函数里面

看好是一组,一组的传递进去

所以,呈现出一种多层级的结构

很难理解,是吧

没错,就是不好理解,要不难么

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

给你弄个图,理解理解

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

什么,还不理解

那这样,我们获取分组之后的前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))
复制代码

你看看出来的数据

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

晓得了不,apply方法 会将分组后的数据一起传入 可以返回多维数据

厉害,厉害,虽然一般我只用最简单的

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

不用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)
复制代码

完美,对应一下数据瞅瞅

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

好了,apply你学会了吗?

没学会,就在看一遍

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

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

拿出手机,对着我的公主号,拍一拍

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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

京东技术解密

京东技术解密

京东研发体系 / 电子工业出版社 / 2014-11-18 / 65

京东高速的增长、闪电响应的供应链、庞大的团队规模等背后内幕,对于业界一直像谜一样神秘。随着成为中国B2C领导厂商以及在纳斯达克上市,京东越来越需要开放自己,与业界形成更好的交流与融合。《京东技术解密》的面世,就是京东技术团队首次向业界集体亮相。本书用翔实的内容为读者逐一解答——如何用技术支撑网站的综合竞争实力,如何把握技术革新的时间点,如何应对各种棘手问题及压力,如何在网站高速运转的情况下进行系统......一起来看看 《京东技术解密》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具