1、map函数
在pandas中,map()函数可以用于根据字典的映射关系转换数据。map()函数是用于Series对象的方法,他将Series中的每个元素根据字典的映射进行转换。
Series.map(func: Callable, na_action: Literal["ignore"] | None = ..., **kwargs)
参数:
na_action:是否忽略NaN,默认为None,可以设置成‘ignore’
我们以例子来实现,将dataframe中的性别转换成汉字。
import pandas as pd
data = pd. DataFrame (
{"name": ['Jack', 'Alice', 'Lily', 'Mshis', 'Gdli' , 'Agosh', 'Filu', 'Mack', 'Lucy', 'Pony' ],
"gender": ['F', 'M', 'F', 'F', 'M', 'F', 'M', 'M', 'F', 'F'],
"age":[25, 34, 49, 42, 28, 23, 45, 21, 34, 29]}
)
data.gender=data.gender.map({"F":'男','M':'女'})
print(data)
map也可以传替函数:
随机生成100个成绩,我们将成绩进行评级
import pandas as pd
import numpy as np
data=pd.DataFrame(np.random.randint(0,100,size=(100,1)),
columns=["python"]
)
print(data)
def change(x):
if x<60:
return '不及格'
elif x<80:
return '中等'
elif x<90:
return '良好'
else:
return '优秀'
s=data.python.map(change)
data['等级']=s
print(data)
2、apply函数
apply函数是用于DataFrame的方法,它可以用于数据转换和处理。其接受一个函数作为参数,并将参数应用到DataFrame中的每一行或每一列。
既支持Series也支持DataFrame
随机生成100*3个数,我们计算平均值
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randint(0,100,size=(100,3)),
columns=['math','python','en']
)
def cover(x):
return x.mean().round(2),x.count(),x.median()
print(df.apply(cover,axis=0))
print('---------')
print(df.apply(cover,axis=1))
再计算每一行的和
def sum(row):
return row['math']+row['python']+row['en']
df['sum']=df.apply(sum,axis=1)#axis=0会报错
print(df)
3、transfrom函数
在pandas中,transform函数用来对数据进行转换(允许对每个组的值进行操作),并返回与输入相同形状的结果,使得转换后的结果与原始数据保持对应的关系。
- 基本用法
transform
通常与groupby
一起使用,允许你对每一组的数据进行操作。最常见的用途是计算每个组的某种统计量,并在原始数据框中返回相同的长度。
- 语法
DataFrame.transform(func, axis=0, *args, **kwargs)
- func: 一个函数或具有可调用对象的字符串,它定义了将应用到每个组的操作。
- axis: 轴向,默认为0,适用于行。
- args / kwargs: 可选参数,传递给函数。
- 示例
import pandas as pd
# 创建示例数据
data = {
'部门': ['销售', '销售', '市场', '市场', '研发', '研发'],
'工资': [5000, 6000, 4500, 7000, 8000, 9000]
}
df = pd.DataFrame(data)
# 使用groupby和transform计算每个部门工资的标准化
df['工资标准化'] = df.groupby('部门')['工资'].transform(lambda x: (x - x.mean()) / x.std())
print(df)
关键点:
- 返回形状:
transform
返回一个与原始数据结构相同大小的对象。- 功能丰富: 可以使用任何适用于Series的函数,如
mean()
,sum()
,min()
,max()
, 等。- 支持多个函数: 可以使用函数的名称作为字符串。