pandas关键字提取_数据分析篇 | Pandas基础用法3

本文深入探讨了Pandas的数据处理,包括表级和行列级函数的应用,如`pipe()`和`applymap()`。重点介绍了聚合API如`agg()`和`transform()`,并展示了如何用字典实现多函数聚合。同时,讨论了处理多种数据类型、自定义`Describe`以及`Transform API`的使用,揭示了如何进行多函数`transform`和元素级函数应用。
摘要由CSDN通过智能技术生成

函数应用

不管是为 pandas 对象应用自定义函数,还是应用其它第三方函数,都离不开以下三种方法。用哪种方法取决于操作的对象是 DataFrameSeries ,是行或列,还是元素。
  1. 表级函数应用:`pipe()`
  2. 行列级函数应用:apply()
  3. 聚合 API:`agg()` 与 `transform()`
  4. 元素级函数应用:`applymap()`

表级函数应用

虽然可以把   DataFrameSeries  传递给函数。不过,通过链式调用函数时,最好使用 pipe() 方法。对比以下两种方式:
# f, g, and h are functions taking and returning ``DataFrames``
>>> f(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 自身方法一样。上例中, fg  与 h 这几个函数都把 DataFrame 当作首位参数。要是想把数据作为第二个参数,该怎么办?本例中, pipe 为元组 ( callable,data_keyword)形式。 .pipe 把   DataFrame  作为元组里指定的参数。下例用 statsmodels 拟合回归。该 API 先接收一个公式, DataFrame 是第二个参数, data。要传递函数,则要用 pipe 接收关键词对 ( sm.ols,'data')。
In [138]: import statsmodels.formula.api as sm
In [139]: bb = pd.read_csv('data/baseball.csv', index_col='id')
In [140]: (bb.query('h > 0')
   .....:    .assign(ln_h=lambda df: np.log(df.h))
   .....:    .pipe((sm.ols, 'data'), 'hr ~ ln_h + year + g + C(lg)')
   .....:    .fit()
   .....:    .summary()
   .....:  )
   .....: 
Out[140]: 
<class 'statsmodels.iolib.summary.Summary'>
"""OLS Regression Results                            
==============================================================================Dep. Variable:                     hr   R-squared:                       0.685
Model:                            OLS   Adj. R-squared:                  0.665
Method:                 Least Squares   F-statistic:                     34.28
Date:                Thu, 22 Aug 2019   Prob (F-statistic):           3.48e-15
Time:                        15:48:59   Log-Likelihood:                -205.92
No. Observations:                  68   AIC:                             421.8
Df Residuals:                      63   BIC:                             432.9
Df Model:                           4                                         
Covariance Type:            nonrobust                                         
===============================================================================
                  coef    std err          t      P>|t|      [0.025      0.975]
-------------------------------------------------------------------------------
Intercept   -8484.7720   4664.146     -1.819      0.074   -1.78e+04     835.780
C(lg)[T.NL]    -2.2736      1.325     -1.716      0.091      -4.922       0.375
ln_h           -1.3542      0.875     -1.547      0.127      -3.103       0.395
year            4.2277      2.324      1.819      0.074      -0.417       8.872
g               0.1841      0.029      6.258      0.000       0.125       0.243
==============================================================================
Omnibus:                       10.875   Durbin-Watson:                   1.999
Prob(Omnibus):                  0.004   Jarque-Bera (JB):               17.298
Sk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值