赞
踩
呆鸟云:“觉得有用,就请点个在看,哈哈”
DataFrame
或
Series
,是行或列,还是元素。
apply()
DataFrame
与
Series
传递给函数。不过,通过链式调用函数时,最好使用
pipe()
方法。对比以下两种方式:
pipe
更容易,与用 pandas 自身方法一样。
f
、
g
与
h
这几个函数都把
DataFrame
当作首位参数。要是想把数据作为第二个参数,该怎么办?本例中,
pipe
为元组 (
callable,data_keyword
)形式。
.pipe
把
DataFrame
作为元组里指定的参数。
DataFrame
是第二个参数,
data
。要传递函数,则要用
pipe
接收关键词对 (
sm.ols,'data'
)。
pipe
与后来出现的 dplyr 及 magrittr 启发了
pipe
方法,在此,引入了 R 语言里用于读取 pipe 的操作符 (
%>%
)。
pipe
的实现思路非常清晰,仿佛 Python 源生的一样。强烈建议大家阅读
pipe()
的源代码。
apply()
方法可以沿着 DataFrame 的轴应用任何函数,比如,描述性统计方法,该方法支持
axis
参数。
apply()
方法还支持通过函数名字符串调用函数。
apply()
调用的函数返回的类型会影响
DataFrame.apply
输出结果的类型。
Series
时,最终输出的结果是
DataFrame
。输出的列与函数返回的
Series
索引相匹配。
Series
。
result_type
会覆盖默认行为,该参数有三个选项:
reduce
、
broadcast
、
expand
。这些选项决定了列表型返回值是否扩展为
DataFrame
。
apply()
可以了解数据集的很多信息。比如可以提取每列的最大值对应的日期:
apply()
方法传递额外的参数与关键字参数。比如下例中要应用的这个函数:
Series
方法的功能也很实用:
apply()
有一个参数
raw
,默认值为
False
,在应用函数前,使用该参数可以将每行或列转换为
Series
。该参数为
True
时,传递的函数接收 ndarray 对象,若不需要索引功能,这种操作能显著提高性能。
DataFrame.aggregate()
,它的别名是
DataFrame.agg()
。
DataFrame
:
apply()
等效,这里也可以用字符串表示聚合函数名。下面的聚合函数输出的结果为
Series
:
Series
进行单个聚合操作,返回的是标量值:
DataFrame
里以行的形式显示,行名是每个聚合函数的函数名。
Series
,多个函数返回的结果也是
Series
,其索引为函数名:
lambda
函数时,输出名为
<lambda>
的行:
DataFrame.agg
。
OrderedDict
。
DataFrame
,并以矩阵形式显示所有聚合函数的计算结果,且输出结果由所有唯一函数组成。未执行聚合操作的列输出结果为
NaN
值:
DataFrame
里包含不能执行聚合操作的多种 Dtype 时,
.agg
只计算可以执行聚合的列。这与
groupby
的
.agg
操作类似:
.agg()
可以轻松地创建与内置 describe 函数类似的自定义 describe 函数。
transform()
方法返回的结果与原始数据具有同样索引,且大小相同。这个 API 支持同时处理多种操作,不用一个一个操作,且该 API 与
.agg
API 类似。
.transform()
支持 Numpy 函数、字符串函数及自定义函数。
transform()
接受单个函数;与 ufunc 等效。
.transform()
向
Series
传递单个函数时,返回的结果也是单个
Series
。
transform()
调用多个函数时,将生成多重索引 DataFrame。第一层是原始数据集的列名;第二层是
transform()
调用的函数名。
transform()
调用的函数名。
transform()
操作。
transform()
的参数是列表字典时,生成的是以
transform()
调用的函数为名的多重索引 DataFrame。
applymap()
及 Series 的
map()
,支持任何接收单个值并返回单个值的 Python 函数。
Series.map()
还有个功能,可以“连接”或“映射”第二个 Series 定义的值。这与 merging/joining 功能联系非常紧密:
精选好文:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。