map()
map(arg,na_action=None)
第一个参数arg,可以是一个字典,也可以是一个函数,甚至是pd.Series,当它是一个函数时,传入的参数就是Series的值;第二个参数na_action的默认值为None,它接收两个值:None或者ignore,默认值为None。当它为ignore时,遇到空值不再传入映射函数中,而是直接返回NaN。
参数是函数时:
import pandas as pd
#map()用于Series或DataFrame对象的一列
df = pd.DataFrame({'Math':[50,60,70,80],'English':[99,34,83,23],'CS':[32,60,75,90]})
print(df)
a = df.Math.map(lambda x:x+5)
print(a)
Math English CS
0 50 99 32
1 60 34 60
2 70 83 75
3 80 23 90
0 55
1 65
2 75
3 85
Name: Math, dtype: int64
参数是字典:
d = {60:'及格',90:'优秀'}
df1 = df['CS'].map(d)
print(df1)
0 NaN
1 及格
2 NaN
3 优秀
Name: CS, dtype: object
applymap()
applymap()是针对DataFrame来说,是将一个函数作用到dataframe的每个元素上
#applymap()是针对DataFrame来说,是将一个函数作用到dataframe的每个元素上
df2 = df.applymap(lambda x:str(x)+'A')
print(df2)
Math English CS
0 50A 99A 32A
1 60A 34A 60A
2 70A 83A 75A
3 80A 23A 90A
apply()
apply()函数也是针对DataFrame来说,但是这次是将一个函数作用在DataFrame中的一整列或一整行上。
DataFrame.apply(self, func, axis=0, raw=False, result_type=None, args=(), **kwargs) 参数说明
import numpy as np
# 参数axis=1是将函数作用在一整行,axis=0(为默认值)作用在一整列。
df3 = df.copy() #修改后不改变最初的df
#增加一列,得到三科总值
df3['total'] = df3[['Math','English','CS']].apply(lambda x:x.sum(),axis=1)
print(df3)
#增加一行,计算每一列的平均值
df4 = df3.copy()
df4.loc['平均'] = df4.apply(lambda x:x.mean(),axis=0)
print(df4)
#numpy的运算方法和函数
print(df.apply(np.sqrt))
print(df.apply(np.sum,axis=1)) #因为是np.sum,axis=1是对所有列进行求和
Math English CS total
0 50 99 32 181
1 60 34 60 154
2 70 83 75 228
3 80 23 90 193
Math English CS total
0 50.0 99.00 32.00 181.0
1 60.0 34.00 60.00 154.0
2 70.0 83.00 75.00 228.0
3 80.0 23.00 90.00 193.0
平均 65.0 59.75 64.25 189.0
Math English CS
0 7.071068 9.949874 5.656854
1 7.745967 5.830952 7.745967
2 8.366600 9.110434 8.660254
3 8.944272 4.795832 9.486833
0 181
1 154
2 228
3 193
dtype: int64
两者区分
1、map传递的函数不能有多个参数,但apply可以
2、apply只能传递函数,但map除了可以接收函数外还可以接收Series和字典
idxmax()
返回轴上最大值第一次出现的索引。
max_index = df.idxmax(axis=0) #按列返回各科最大值对应的行索引,默认axis=0
print(max_index)
max_column = df.idxmax(axis=1) #返回行最大值对应的列索引,即每个人分数最高的科目
print(max_column)
Math 3
English 0
CS 3
dtype: int64
0 English
1 Math
2 English
3 CS
dtype: object