美文网首页
python ——简单小函数apply、map、filter

python ——简单小函数apply、map、filter

作者: Colleen_oh | 来源:发表于2020-04-27 13:53 被阅读0次

    重点

    下面主要是讲了python中DataFrame的四个小函数的用法。分别是filter、apply、map三个函数。学会这三个函数可以让我们减轻很多试用DataFrame的工作量。

    filter

    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。
    语法如下:

    filter(function, iterable)
    

    function -- 函数
    iterable -- 一个或多个序列

    上例子:

    >>> def is_odd(n):
    ...     return n % 2 == 1
     
    >>> tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    >>> newlist = list(tmplist)
    >>> print(newlist)
    [1, 3, 5, 7, 9]
    

    上面例子是过滤出无法整除2的数。找单数。

    apply

    apply() 函数用于当函数参数已经存在于一个元组或字典中时,间接地调用函数。

    apply(func [, args [, kwargs ]]) 
    

    args是一个包含将要提供给函数的按位置传递的参数的元组。如果省略了args,任何参数都不会被传递,
    kwargs是一个包含关键字参数的字典。

    上例子:

    >>> def say(a, b):
    ...     print a, b
     
    >>> apply(say,("hello", "张三python"))
    hello,张三python
    

    map

    map() 会根据提供的函数对指定序列做映射。
    语法如下:

    map(function, iterable, ...)
    

    function -- 函数
    iterable -- 一个或多个序列

    上例子:

    >>> def square(x) :         # 计算平方数
    ...     return x ** 2
    >>> list(map(square, [1,2,3,4,5]))   # 使用 list() 转换为列表
    [1, 4, 9, 16, 25]
    

    如果不加list会返回迭代器,为了方便展示,就加了list。

    lambda

    lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。

    表达式如下:

    lambda arg :<表达式>
    

    lambda后面直接跟着你要改变的参数,然后“:”后面就是跟着你要该参数变成的样子。

    使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。适合用在比较简单的函数并且只用一两次的情况下。

    当你想对DataFrame中一列进行统一操作时,可以参考lambda函数。看看下面的例子

    >>> print(df['rating'])
    0        5
    1        3
    2        5
    3        5
    4        3
            ..
    19995    4
    19996    4
    19997    3
    19998    3
    19999    5
    Name: rating, Length: 20000, dtype: int64
    >>> print(df['rating'].map(lambda x: -1.0 if x >= 4 else 1.0))
    0       -1.0
    1        1.0
    2       -1.0
    3       -1.0
    4        1.0
            ... 
    19995   -1.0
    19996   -1.0
    19997    1.0
    19998    1.0
    19999   -1.0
    Name: rating, Length: 20000, dtype: float64
    

    主要就是下面的代码:

    df['rating'].map(lambda x: -1.0 if x >= 4 else 1.0)
    

    这句代码的意思就是让df['rating']里面的数字,如果大于等于4,则改为-1,否则就是1
    再回忆一下官方对map()的解释:map() 会根据提供的函数对指定序列做映射。
    重点关注!!!映射映射!!!
    就说我们这个例子。如果是4、5就映射为-1,其他都映射为1.

    参考:https://www.runoob.com/python/python-func-map.html
    https://www.runoob.com/python3/python3-func-filter.html
    https://www.jb51.net/article/53044.htm

    相关文章

      网友评论

          本文标题:python ——简单小函数apply、map、filter

          本文链接:https://www.haomeiwen.com/subject/amlywhtx.html