重点
下面主要是讲了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
网友评论