ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:21.62KB ,
资源ID:6719351      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6719351.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Pandas中文官方文档之基础用法3.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Pandas中文官方文档之基础用法3.docx

1、Pandas中文官方文档之基础用法3函数应用不管是为 pandas 对象应用自定义函数,还是应用其它第三方函数,都离不开以下三种方法。用哪种方法取决于操作的对象是DataFrame或Series,是行或列,还是元素。1. 表级函数应用:pipe()2. 行列级函数应用:apply()3. 聚合 API:agg() 与 transform()4. 元素级函数应用:applymap()表级函数应用虽然可以把 DataFrame与Series传递给函数。不过,通过链式调用函数时,最好使用pipe()方法。对比以下两种方式:#f,g,andharefunctionstakingandreturning

2、DataFramesf(g(h(df),arg1=1),arg2=2,arg3=3)下列代码与上述代码等效(df.pipe(h).pipe(g,arg1=1).pipe(f,arg2=2,arg3=3)pandas 鼓励使用第二种方式,即链式方法。在链式方法中调用自定义函数或第三方支持库函数时,用pipe更容易,与用 pandas 自身方法一样。上例中,f、g与h这几个函数都把DataFrame当作首位参数。要是想把数据作为第二个参数,该怎么办?本例中,pipe为元组 (callable,data_keyword)形式。.pipe把 DataFrame作为元组里指定的参数。下例用 statsm

3、odels 拟合回归。该 API 先接收一个公式,DataFrame是第二个参数,data。要传递函数,则要用pipe接收关键词对 (sm.ols,data)。In138:importstatsmodels.formula.apiassmIn139:bb=pd.read_csv(data/baseball.csv,index_col=id)In140:(bb.query(h0).:.assign(ln_h=lambdadf:np.log(df.h).:.pipe(sm.ols,data),hrln_h+year+g+C(lg).:.fit().:.summary().:).:Out140:OL

4、SRegressionResults=Dep.Variable:hrR-squared:0.685Model:OLSAdj.R-squared:0.665Method:LeastSquaresF-statistic:34.28Date:Thu,22Aug2019Prob(F-statistic):3.48e-15Time:15:48:59Log-Likelihood:-205.92No.Observations:68AIC:421.8DfResiduals:63BIC:432.9DfModel:4CovarianceType:nonrobust=coefstderrtP|t|0.0250.97

5、5-Intercept-8484.77204664.146-1.8190.074-1.78e+04835.780C(lg)T.NL-2.27361.325-1.7160.091-4.9220.375ln_h-1.35420.875-1.5470.127-3.1030.395year4.22772.3241.8190.074-0.4178.872g0.18410.0296.2580.0000.1250.243=Omnibus:10.875Durbin-Watson:1.999Prob(Omnibus):0.004Jarque-Bera(JB):17.298Skew:0.537Prob(JB):0

6、.000175Kurtosis:5.225Cond.No.1.49e+07=Warnings:1StandardErrorsassumethatthecovariancematrixoftheerrorsiscorrectlyspecified.2Theconditionnumberislarge,1.49e+07.Thismightindicatethattherearestrongmulticollinearityorothernumericalproblems.unix 的pipe与后来出现的 dplyr 及 magrittr 启发了pipe方法,在此,引入了 R 语言里用于读取 pip

7、e 的操作符 (%)。pipe的实现思路非常清晰,仿佛 Python 源生的一样。强烈建议大家阅读 pipe()的源代码。行列级函数应用apply()方法可以沿着 DataFrame 的轴应用任何函数,比如,描述性统计方法,该方法支持 axis参数。In141:df.apply(np.mean)Out141:one0.811094two1.360588three0.187958dtype:float64In142:df.apply(np.mean,axis=1)Out142:a1.583749b0.734929c1.133683d-0.166914dtype:float64In143:df.a

8、pply(lambdax:x.max()-x.min()Out143:one1.051928two1.632779three1.840607dtype:float64In144:df.apply(np.cumsum)Out144:onetwothreea1.3949811.772517NaNb1.7380353.684640-0.050390c2.4332815.1630081.177045dNaN5.4423530.563873In145:df.apply(np.exp)Out145:onetwothreea4.0348995.885648NaNb1.4092446.7674400.9508

9、58c2.0042014.3857853.412466dNaN1.3222620.541630apply()方法还支持通过函数名字符串调用函数。In146:df.apply(mean)Out146:one0.811094two1.360588three0.187958dtype:float64In147:df.apply(mean,axis=1)Out147:a1.583749b0.734929c1.133683d-0.166914dtype:float64默认情况下,apply()调用的函数返回的类型会影响DataFrame.apply输出结果的类型。 函数返回的是Series时,最终输出的

10、结果是DataFrame。输出的列与函数返回的Series索引相匹配。 函数返回其它任意类型时,输出结果是Series。result_type会覆盖默认行为,该参数有三个选项:reduce、broadcast、expand。这些选项决定了列表型返回值是否扩展为DataFrame。用好apply()可以了解数据集的很多信息。比如可以提取每列的最大值对应的日期:In148:tsdf=pd.DataFrame(np.random.randn(1000,3),columns=A,B,C,.:index=pd.date_range(1/1/2000,periods=1000).:In149:tsdf.a

11、pply(lambdax:x.idxmax()Out149:A2000-08-06B2001-01-18C2001-07-18dtype:datetime64ns还可以向apply()方法传递额外的参数与关键字参数。比如下例中要应用的这个函数:defsubtract_and_divide(x,sub,divide=1):return(x-sub)/divide可以用下列方式应用该函数:df.apply(subtract_and_divide,args=(5,),divide=3)为每行或每列执行Series方法的功能也很实用:In150:tsdfOut150:ABC2000-01-01-0.1

12、58131-0.2324660.3216042000-01-02-1.810340-3.1057580.4338342000-01-03-1.209847-1.156793-0.1367942000-01-04NaNNaNNaN2000-01-05NaNNaNNaN2000-01-06NaNNaNNaN2000-01-07NaNNaNNaN2000-01-08-0.6536020.1788751.0082982000-01-091.0079960.4628240.2544722000-01-100.3074730.6003371.643950In151:tsdf.apply(pd.Series

13、.interpolate)Out151:ABC2000-01-01-0.158131-0.2324660.3216042000-01-02-1.810340-3.1057580.4338342000-01-03-1.209847-1.156793-0.1367942000-01-04-1.098598-0.8896590.0922252000-01-05-0.987349-0.6225260.3212432000-01-06-0.876100-0.3553920.5502622000-01-07-0.764851-0.0882590.7792802000-01-08-0.6536020.178

14、8751.0082982000-01-091.0079960.4628240.2544722000-01-100.3074730.6003371.643950apply()有一个参数raw,默认值为False,在应用函数前,使用该参数可以将每行或列转换为Series。该参数为True时,传递的函数接收 ndarray 对象,若不需要索引功能,这种操作能显著提高性能。聚合 API0.20.0 版新增。聚合 API 可以快速、简洁地执行多个聚合操作。Pandas 对象支持多个类似的 API,如 groupby API、window functions API、resample API。聚合函数为D

15、ataFrame.aggregate(),它的别名是DataFrame.agg()。这里使用与前例类似的DataFrame:In152:tsdf=pd.DataFrame(np.random.randn(10,3),columns=A,B,C,.:index=pd.date_range(1/1/2000,periods=10).:In153:tsdf.iloc3:7=np.nanIn154:tsdfOut154:ABC2000-01-011.2576061.0041940.1675742000-01-02-0.7498920.288112-0.7573042000-01-03-0.207550

16、-0.2985990.1160182000-01-04NaNNaNNaN2000-01-05NaNNaNNaN2000-01-06NaNNaNNaN2000-01-07NaNNaNNaN2000-01-080.814347-0.2576230.8692262000-01-09-0.250663-1.2066010.8968392000-01-102.169758-1.3333630.283157应用单个函数时,该操作与apply()等效,这里也可以用字符串表示聚合函数名。下面的聚合函数输出的结果为Series:In155:tsdf.agg(np.sum)Out155:A3.033606B-1.

17、803879C1.575510dtype:float64In156:tsdf.agg(sum)Out156:A3.033606B-1.803879C1.575510dtype:float64#因为应用的是单个函数,该操作与.sum()是等效的In157:tsdf.sum()Out157:A3.033606B-1.803879C1.575510dtype:float64对Series进行单个聚合操作,返回的是标量值:In158:tsdf.A.agg(sum)Out158:3.033606102414146多函数聚合还可以用列表形式传递多个聚合函数。每个函数在输出结果DataFrame里以行的形式

18、显示,行名是每个聚合函数的函数名。In159:tsdf.agg(sum)Out159:ABCsum3.033606-1.8038791.57551多个函数输出多行:In160:tsdf.agg(sum,mean)Out160:ABCsum3.033606-1.8038791.575510mean0.505601-0.3006470.262585对于Series,多个函数返回的结果也是Series,其索引为函数名:In161:tsdf.A.agg(sum,mean)Out161:sum3.033606mean0.505601Name:A,dtype:float64传递lambda函数时,输出名为

19、的行:In162:tsdf.A.agg(sum,lambdax:x.mean()Out162:sum3.0336060.505601Name:A,dtype:float64应用自定义函数时,则该函数名为输出结果的行名:In163:defmymean(x):.:returnx.mean().:In164:tsdf.A.agg(sum,mymean)Out164:sum3.033606mymean0.505601Name:A,dtype:float64用字典实现聚合指定为哪些列应用哪些聚合函数时,需要把包含列名与标量(或标量列表)的字典传递给DataFrame.agg。注意:这里输出结果的顺序不是

20、固定的,要想让输出顺序与输入顺序一致,请使用OrderedDict。In165:tsdf.agg(A:mean,B:sum)Out165:A0.505601B-1.803879dtype:float64输入的参数是列表时,输出结果为 DataFrame,并以矩阵形式显示所有聚合函数的计算结果,且输出结果由所有唯一函数组成。未执行聚合操作的列输出结果为NaN值:In166:tsdf.agg(A:mean,min,B:sum)Out166:ABmean0.505601NaNmin-0.749892NaNsumNaN-1.803879多种 DtypeDataFrame里包含不能执行聚合操作的多种 Dtype 时,.agg只计算可以执行聚合的列。这与groupby的.agg操作类似:In167:mdf=pd.DataFrame(A:1,2,3,.:B:1.,2.,3.,.:C:foo,bar,baz,.:D:pd.date_range(20130101,periods=3).:In168:mdf.dtypesOut168:Aint64Bfloat64CobjectDdatetime64nsdtype:objectIn169:mdf.agg(min,sum)Out169:ABCDmin11.0bar2013-01-01sum66.0foobarbazNaT自定义 Desc

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1