学习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你学会了吗?
没学会,就在看一遍
书读百遍,该不会,还是不会
拿出手机,对着我的公主号,拍一拍
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决