panda中的apply()方法介绍

导读:本篇文章讲解 panda中的apply()方法介绍,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1.apply()说明

作用范围:pandas中的SeriesDataFrame
作用:通过使用apply()方法,我们可以调用自己定义的函数,使得代码结构更加清晰,简洁。


2.apply()的应用过程

如果一个SeriesDataFrame调用apply()方法,然后使用自己定义的函数,其中自定义的函数的第一个参数,代表的是SeriesDataFrame的下一个“纬度”
比如说如果是DataFrame,则参数是他的每一个列。如果是Series,则是他的每一个值。

(1)DataFrame,参数是他的每一个列
eg:计算一个DataFrame各个字段的偏度和峰度

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'key1':[1, 2, 3, 4, 5],
    'key2':[4, 5, 6, 2, 1]
})

def skew_kurt(x):
    print(x, type(x))
    skews = x.skew()
    kurts = x.kurt()
    return pd.Series([skews, kurts], index=['skew', 'kurt']) # Series的参数为Series,则会变为DataFrame,且参数变为列
print(df.apply(skew_kurt))


# 结果:
0    1
1    2
2    3
3    4
4    5
Name: key1, dtype: int64 <class 'pandas.core.series.Series'>
0    1
1    2
2    3
3    4
4    5
Name: key1, dtype: int64 <class 'pandas.core.series.Series'>
0    4
1    5
2    6
3    2
4    1
Name: key2, dtype: int64 <class 'pandas.core.series.Series'>
      key1      key2
skew   0.0 -0.235514
kurt  -1.2 -1.963223

通过输出结果中的可以看到,该函数会执行多次,且每次执行都会将DataFrame中的某一列传过去。
(2)Series,参数是他的每一个值
eg:将一个Series的每一个值用该值的第一个字符替换

import pandas as pd
import numpy as np

s = pd.Series(['wang', 'li', 'zhao'])

def text(x):
    print(x, type(x))
    return x[0] # Series的参数为Series,则会变为DataFrame,且参数变为列
print(s.apply(text))

# 结果:
wang <class 'str'>
li <class 'str'>
zhao <class 'str'>
0    w
1    l
2    z
dtype: object

3.apply()应用

(1)通过上面的例子,我们可以看见其可以应用于SeriesDataFrame
(2)apply()方法还可以应用于分组—groupby()参数也是代表下一个纬度
eg:

import pandas as pd
import numpy as np

df = pd.DataFrame({'data1':np.random.rand(5),
                  'data2':np.random.rand(5),
                  'key1':list('aabba'),
                  'key2':['one','two','one','two','one']})

print(df.groupby('key1').apply(lambda x: x.describe()))

# 结果:
a    count  3.000000  3.000000
     mean   0.693046  0.608697
     std    0.257070  0.522231
     min    0.396401  0.011814
     25%    0.614231  0.422315
     50%    0.832060  0.832817
     75%    0.841368  0.907138
     max    0.850676  0.981459
b    count  2.000000  2.000000
     mean   0.352287  0.482039
     std    0.343271  0.675147
     min    0.109558  0.004638
     25%    0.230922  0.243339
     50%    0.352287  0.482039
     75%    0.473651  0.720740
     max    0.595016  0.959441

4.小结

  • 通过使用apply()方法,我们可以调用自己定义的函数,使得代码结构更加清晰,简洁。
  • 自定义的函数的第一个参数,代表的是下一个“纬度”

这里是引用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84767.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!