温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Pandas函数的应用方式

发布时间:2021-07-10 13:42:29 来源:亿速云 阅读:141 作者:chen 栏目:编程语言

本篇内容主要讲解“Pandas函数的应用方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Pandas函数的应用方式”吧!

不管是为Pandas对象应用自定义函数,还是应用第三方函数,都离不开以下几种方法。用哪种方法取决于操作的对象是DataFrame,还是Series;是行、列,还是元素。

1.表现级函数应用:pipe()

2.行列级函数应用:apply()

3.聚合API:agg()与transform()

4.元素级函数应用:applymap()

表现级函数应用

虽然可以把DataFrame与Series传递给函数,不过链式调用函数时,最好使用pipe()方法。对比以下两种方式:

Pandas函数的应用方式

下列代码与上述代码是等效的:

Pandas函数的应用方式

Pandas建议使用第二种方式,即链式方法。在链式方法中调用自定义函数或第三方支持库函数时,用pipe更容易,与用Pandas自身方法一样。

上述示例中,f、g与h这几个函数都把DataFrame当作首位参数。要是想把数据作为第二个参数,我们可以怎么做呢?本例中,pipe为元组(callable,data_keyword)形式。.pipe把DataFrame作为元组里指定的参数。

下面示例用statmodels拟合回归,该API先接收一个公示,DataFrame是第二个参数,data。要传递函数,则要用pipe接收关键词对(sm.ols,’data’)。

Pandas函数的应用方式

unix的pipe与后来出现的dplyr及magrittr带动了pipe方法,在此,引入了R语言里用于读取pipe的操作符(%>%)。pipe的实现思路非常清晰,仿佛跟Python源生的一样。

行列级函数应用

apply()方法沿着DataFrame的轴应用函数,比如,描述性统计方法,该方法支持axis参数。

Pandas函数的应用方式

apply()方法还支持通过函数名字符串调用函数。

Pandas函数的应用方式

默认情况下,apply()调用的函数返回的类型会影响DataFrame输出结构的类型。

  • 函数返回的是Series时,最终输出结果是DataFrame。输出的列与函数返回的Series索引相匹配。

  • 函数返回其它任意类型时,输出结果是Series。

result_type会覆盖默认行为,该参数有三个选项:reduce、broadcast、expand。

这些选项决定了列表型返回值是否扩展为DataFrame。

我们用好了apply()的话,可以了解数据集的很多信息。比如可以提取每列的最大值对应的日期:

Pandas函数的应用方式

还可以向apply()方法传递额外的参数与关键字参数。比如下面示例中要应用的这个函数:

Pandas函数的应用方式

可以用以下方式应用该函数:

Pandas函数的应用方式

为每行或每例执行Series方法的功能也非常的实用:

Pandas函数的应用方式

apply()有一个参数raw,默认值为False,再应用函数前,使用该参数可以将每行或列转换为Series。该参数为True时,传递的函数接收ndarray对象,若不需要索引功能,这样操作能够显著的提高性能。

聚合API

聚合API可以快速、简洁地执行多个聚合操作。Pandas对象支持多个类似地API,如groupby API、window functions API、resample API。聚合函数为DataFrame.aggregate(),也可以叫做Dataframe.agg()。

在这里我们用与上例类似的DataFrame:

Pandas函数的应用方式

应用单个函数时,该操作与apply()等效,这里也可以用字符串表示聚合函数名。下面的聚合函数输出的结果为Series:

Pandas函数的应用方式

Series单个聚合操作返回标量值:

Pandas函数的应用方式

多函数聚合

还可以用列表形式传递多个聚合函数。每个函数在输出结果DataFrame里以行的形式显示,行名是每个聚合函数的函数名。

Pandas函数的应用方式

多个函数输出多行:

Pandas函数的应用方式

Series聚合多函数返回结果还是Series,索引为函数名:

Pandas函数的应用方式

传递lambda函数时,输出名为<lambda>的行:

Pandas函数的应用方式

应用自定义函数时,该函数名为输出结果的行名:

Pandas函数的应用方式

用字典实现聚合

指定为哪些列应用哪些聚合函数时,需要把包含列名与标量(或标量列表)的字典传递给DataFrame.agg。

但我们要注意,这里输出结果的顺序不是固定的,要想让输出顺序与输入顺序一致,我们可以使用OrderedDict。

Pandas函数的应用方式

输出的参数是列表时,输出的结果为DataFrame,并以矩阵形式显示所有聚合函数的计算结果,且输出结果有所有唯一函数组成。未执行聚合操作的列输出结果为NaN值:

Pandas函数的应用方式

多种数据类型(Dtype)

与groupby的.agg操作类似,DataFrame含不能执行聚合的数据类型时,.agg只计算可聚合的列:

Pandas函数的应用方式

Pandas函数的应用方式

自定义Describe

.agg()可以创建类似于内置describe函数的自定义describe函数。

Pandas函数的应用方式

Transfrom API

transform方法的返回结果与原始数据的索引相同,大小相同。与.agg API类似,该API支持同时处理多种操作,不用一个一个操作。

首先,创建一个DataFrame:

Pandas函数的应用方式

这里转换的是整个DataFrame。.transform()支持NumPy函数、字符串函数及自定义函数。

Pandas函数的应用方式

这里的transform()接收单个函数;与ufunc等效。

Pandas函数的应用方式

.transform向Series传递单个函数时,返回的结果也是单个Series。

Pandas函数的应用方式

多函数Transfrom

transform()调用多个函数时,生成多层索引DataFrame。第一层是原始数据集的列名;第二层是transform()调用的函数名。

Pandas函数的应用方式

为Series应用多个函数时,输出结果是DataFrame,列名是transform()调用的函数名。

Pandas函数的应用方式

用字典执行Transfrom

函数字典可以为每列执行指定transform()操作。

Pandas函数的应用方式

transform()的参数是列表字典时,生成的是以transform()调用的函数名为多层索引的DataFrame。

Pandas函数的应用方式

元素级函数应用

并非所有函数都能矢量化,即接受NumPy数组,返回另一个数组或值,DataFrame的applymap()及Series的map(),支持任何接收单个值并返回单个值的Python函数。

Pandas函数的应用方式

Series.map()还有个功能,可以“连接”或“映射”第二个Series定义的值。这与merging/joining功能联系非常紧密:

Pandas函数的应用方式

到此,相信大家对“Pandas函数的应用方式”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI