当我们进行Python数据分析的时候,经常会需要进行数据清洗、过滤、分组等操作。在这些过程中,apply(),map(),applymap()是我们经常用到的三个函数。下面就详细讲解一下这三个函数的使用方法:
apply()函数
apply()函数是Pandas中自带的一个函数,可以用于对行或列进行函数操作。
语法格式
DataFrame.apply(func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds)
参数说明:
- func:需要传入的函数
- axis:0或1,0表示对列进行处理,1表示对行进行处理,默认为0
- broadcast:不理解,可以忽略
- raw:Boolean值,默认为False,表示操作的是否是原始数据
- reduct:不理解可以忽略
- result_type:新的数据类型
- args:不理解可以忽略
- kwds:关键字参数,可以通过他来传入更多自定义的参数
示例1
下面我们举一个示例说明apply()函数的使用方法,假设我们现在有一个DataFrame数据,数据形如:
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [6, 7, 8, 9, 10]
})
我们希望对DataFrame的所有元素进行平方处理。那么可以采用如下方式:
def square(x):
return x ** 2
df.apply(square)
在上面的代码中,我们首先定义了一个square函数,然后将这个函数作为apply()函数的参数进行传递。
示例2
下面我们举一个更加复杂,实际应用场景的示例,假设我们现在有一个存储股票数据的DataFrame数据,数据形如:
df = pd.DataFrame({
'name': ['百度', '阿里巴巴', '腾讯', '美团点评', '拼多多'],
'price': [210, 235, 310, 88, 42]
})
我们现在需要按照如下的规则对该数据进行处理:
- 对于价格不足200的股票,我们需要减价20元
- 对于价格在200到300之间的股票,我们需要减价10元
- 对于价格超过300的股票,我们需要减价5元
那么可以采用如下方式:
def discount(price):
if price < 200:
return price - 20
elif price >= 200 and price <= 300:
return price - 10
else:
return price - 5
df['discount_price'] = df['price'].apply(discount)
在上面的代码中,我们首先定义了一个discount函数,然后将‘price’列中的元素分别传递给该函数进行处理,得到针对每一只股票的折扣价格,并将其存储在“discount_price”列中。
map()函数
map()函数和apply()函数类似,不同的是,map()函数只能用于Series类型的操作,而不能用于DataFrame。
语法格式
Series.map(arg, na_action=None)
参数说明:
- arg:需要传入的函数,可以是一个函数,也可以是一个字典,这取决于Series类型的数据是不是字典类型
- na_action:处理缺失值时采取的操作,可以是'ignore'或者'drop'
示例1
下面我们举一个示例说明map()函数的使用方法,假设我们现在有一个Series类型的数据,数据形如:
import pandas as pd
s = pd.Series(['apple', 'orange', 'banana', 'pear'])
我们希望将其中的每一个字符串元素分别转换成大写方式,可以采用如下方式:
s.map(str.upper)
在上面的代码中,我们首先定义了一个str.upper函数,然后将该函数作为map()函数的参数传递过去。
示例2
下面我们举一个更加复杂,实际应用场景的示例,假设我们现在有一个Series类型的数据,数据形如:
s = pd.Series(['a', 'b', 'a', 'c', 'a', 'd'])
我们现在需要实现一个字典类型的替换操作,将数据中的'a'替换成'apple',将'b'替换成'banana',将'c'替换成'pear',将'd'替换成'orange'。采用如下方式:
replace_dict = {
'a': 'apple',
'b': 'banana',
'c': 'pear',
'd': 'orange'
}
s.map(replace_dict)
在上面的代码中,我们首先定义了一个字典类型的替换关系表replace_dict,然后将该表作为map()函数的参数传递过去,实现了对Series数据的替换操作。
applymap()函数
applymap()函数和apply()函数非常相似,不同的是applymap()函数是用于对DataFrame中每个元素进行函数操作的。
语法格式
DataFrame.applymap(func)
参数说明:
- func:需要传入的函数
示例1
下面我们举一个示例说明applymap()函数的使用方法,假设我们现在有一个DataFrame数据,数据形如:
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [6, 7, 8, 9, 10]
})
我们希望对DataFrame的所有元素进行平方处理。可以采用如下方式:
df.applymap(lambda x: x ** 2)
在上面的代码中,我们采用了一个匿名函数lambda来实现对DataFrame所有元素的平方计算。
示例2
下面我们举一个更加复杂,实际应用场景的示例,假设我们现在有一个存储股票数据的DataFrame数据,数据形如:
df = pd.DataFrame({
'name': ['百度', '阿里巴巴', '腾讯', '美团点评', '拼多多'],
'price': [210, 235, 310, 88, 42]
})
我们现在需要按照如下的规则对该数据进行处理:
- 对于价格不足200的股票,我们需要减价20元
- 对于价格在200到300之间的股票,我们需要减价10元
- 对于价格超过300的股票,我们需要减价5元
那么可以采用如下方式:
def discount(price):
if price < 200:
return price - 20
elif price >= 200 and price <= 300:
return price - 10
else:
return price - 5
df.applymap(discount)
在上面的代码中,我们首先定义了一个discount函数,然后将该函数作为applymap()函数的参数传递过去,实现了对DataFrame数据的折扣处理。
希望这份攻略对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python数据分析apply(),map(),applymap()用法 - Python技术站