—Python之filter()与map()函数
数据中的格式:UserID::Gender::Age::Occupation::Zip-code
#读取User数据
users_title = ['UserID', 'Gender', 'Age', 'JobID', 'Zip-code']
users = pd.read_table('./ml-1m/users.dat', sep='::', header=None, names=users_title, engine = 'python')
users = users.filter(regex='UserID|Gender|Age|JobID')
users_orig = users.values
#改变User数据中性别和年龄
gender_map = {'F':0, 'M':1}
users['Gender'] = users['Gender'].map(gender_map)
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
filter有两个参数。第一个参数可以是一个函数也可以是None,如果是一个函数的话,
则将第二个可迭代数据里的每一个元素作为函数的参数进行计算,把返回True的值筛选出来;
如果第一个参数为None,则直接将第二个参数中为True的值筛选出来。
filter(None,[1,0,False,True])
filter(None,[1,0,False,True])
[1, True]
list(filter(lambda x : x % 2,range(20)))
# 等同于 def f(x)
# return x%2
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
map()函数 会根据提供的函数对指定序列做映射。
map()这个内置函数也有两个参数,仍然的有一个函数和一个可迭代序列,将序列的每一个元素作为函数的参数进行运算加工,直到可迭代序列每个元素都加工完毕,返回所有加工后的元素构成的新序列。
list(map(lambda x : x % 2,range(20)))
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
list(map(lambda x : x * 2,range(20)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38]
list(map(lambda x : x + 2,range(20)))
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]