.describe() python_python的apply应用:一般性的“拆分-应用-合并”,附加详细讲解

5c0bc01627d19600c37384ddc2dce1f9.png

跟aggregate一样,transform也是一个有着严格条件的特殊函数:传入的函数只能产生两种结果,要么产生一个可以传播的标量值(如np.mean),要么产生一个相同大小的结果数组。最一般化的GroupBy方法是apply,apply会将待处理的对象拆分成多个片段,然后对各片段调用传入的函数,最后尝试将各片段组合到一起。

apply方法

举例:根据分组选出最高的5个tip_pct值。

首先,编写一个选取指定列具有最大值的行的函数。(原文比较拗口,其实就是“在 指定列找出最大值,然后把这个值所在的行选取出来。”)

In [1]: def top(df,n=5,column='tip_pct'):     ...: return df.sort_index(by=column)[-n:]     ...: 

新写法:注意与上面的差别

In [2]: def top(df,n=5,column='计划发出单量'):    ...: return df.sort_values(by=column)[-n:]    ...:In [3]: top(tips,n=6)Out[3]: total_bill  tip  smoker   day time  size tip_pct109   14.31       4.00 Yes      Sat Dinner 2   0.279525183   23.17       6.50 Yes      Sun Dinner 4   0.280535232   11.61      3.39 No      Sat Dinner 2   0.29199067    3.07       1.00 Yes     Sat Dinner 1   0.325733178   9.60       4.00 Yes     Sun Dinner 2   0.416667172   7.25       5.15 Yes     Sun Dinner 2   0.710345

如果对smoker分组并用该函数调用apply,就会得到:

46b247942c0d822a94fa4abff1a16642.png

top函数在DataFrame的各个片段上调用,然后结果由pandas.concat组装到一起,并以分组名称进行了标记。于是,最终结果就有了一个层次化索引,其内层索引值来自原DataFrame。

如果传给apply的函数能够接受其他参数或关键字,则可以将这些内容放在函数名后面一并传入:

d1c59b174dd1751a91afd859b3aa4ba1.png

注意:除这些基本用法之外,能否充分发挥apply的威力很大程度上取决于你的创造力。传入的那个函数能做什么全由你说了算,它只需返回一个pandas对象或标量值即可。本章后续部分的示例主要用于讲解如何利用groupby解决各种各样的问题。

在GroupBy对象上调用describe:

e3d753462bf1701908aaf204b68148f3.png
598a8049f76a41608250f5ac71cafc88.png

在GroupBy中,当调用诸如describe之类的方法时,实际上只是应用了下面两条代码的快捷方式而已:

f = lambda x: x.describe()

Grouped.apply(f)

禁止分组键:group_keys=False

分组键会跟原始对象的索引共同构成结果对象中的层次化索引。将group_keys=False传入groupby即可禁止该效果:

df5cf1c060abefcab4f71571f9c19261.png

python好书推荐

推荐一本python好书,初学者和数据分析必备,小编已读:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值