Pandas中map(),applymap(),apply()函数的使用方法

深入浅出Pandas中map(),applymap(),apply()函数的使用方法

在使用Pandas进行数据清洗和处理时,经常需要对数据进行一些操作。而map(), applymap()和apply()是三个十分有用的函数,可用于实现各种操作,从简单的值转换到更复杂的函数应用。在本文中,我们将详细介绍这三个函数的使用方法。

1. map()函数

map()函数是一种元素级函数,适用于Series中的每个值。它接受一个函数或字典作为输入,并将其应用于Series中的每个值。

1.1 map()函数的基本用法

下面的示例展示了如何使用map()函数,将Series中的每个值都乘以2:

import pandas as pd

data = {'A':[1,2,3,4],'B':[5,6,7,8]}

df = pd.DataFrame(data)

df['A'] = df['A'].map(lambda x: x * 2)

print(df)

运行结果如下:

A B

0 2 5

1 4 6

2 6 7

3 8 8

上述示例中,我们定义了一个lambda函数,将Series中的每个值都乘以2。然后使用map()函数将这个函数应用到Series中的每个值。

1.2 使用字典进行值替换

map()函数还可以使用字典,将Series中的某些值替换为其他值。下面的示例展示了如何使用字典将Series中的0替换为男性,1替换为女性:

import pandas as pd

data = {'A':[0,1,0,1],'B':[5,6,7,8]}

df = pd.DataFrame(data)

df['A'] = df['A'].map({0:'male',1:'female'})

print(df)

运行结果如下:

A B

0 male 5

1 female 6

2 male 7

3 female 8

上述示例中,我们使用了一个字典将0替换为male,将1替换为female。然后使用map()函数将这个字典应用到Series中的每个值。

2. applymap()函数

applymap()函数是一种元素级函数,适用于DataFrame中的每个值。它接受一个函数作为输入,并将其应用于DataFrame中的每个值。

2.1 applymap()函数的基本用法

下面的示例展示了如何使用applymap()函数,将DataFrame中的每个值都乘以2:

import pandas as pd

data = {'A':[1,2,3,4],'B':[5,6,7,8]}

df = pd.DataFrame(data)

df = df.applymap(lambda x: x * 2)

print(df)

运行结果如下:

A B

0 2 10

1 4 12

2 6 14

3 8 16

上述示例中,我们定义了一个lambda函数,将DataFrame中的每个值都乘以2。然后使用applymap()函数将这个函数应用到DataFrame中的每个值。

2.2 使用applymap()函数进行值替换

applymap()函数还可以使用字典,将DataFrame中的某些值替换为其他值。下面的示例展示了如何使用字典将DataFrame中的0替换为男性,1替换为女性:

import pandas as pd

data = {'A':[0,1,0,1],'B':[5,6,7,8]}

df = pd.DataFrame(data)

df = df.applymap(lambda x: {0:'male',1:'female'}.get(x,x))

print(df)

运行结果如下:

A B

0 male 5

1 female 6

2 male 7

3 female 8

上述示例中,我们定义了一个lambda函数,使用了字典将0替换为male,将1替换为female。然后使用applymap()函数将这个函数应用到DataFrame中的每个值。

3. apply()函数

apply()函数是一种行或列级函数,适用于DataFrame中的每一行或列。它接受一个函数作为输入,并将其应用于DataFrame的每一行或列。

3.1 apply()函数的基本用法

下面的示例展示了如何使用apply()函数,计算每一行的和,并创建一个新的列来存储这些结果:

import pandas as pd

data = [[1,2,3],[4,5,6],[7,8,9]]

df = pd.DataFrame(data,columns=['A','B','C'])

df['sum'] = df.apply(lambda x: x['A'] + x['B'] + x['C'],axis=1)

print(df)

运行结果如下:

A B C sum

0 1 2 3 6

1 4 5 6 15

2 7 8 9 24

上述示例中,我们定义了一个lambda函数,计算每一行的和,并使用apply()函数将这个函数应用到DataFrame的每一行。我们还使用了axis参数指定了行级别的操作。

3.2 使用apply()函数进行值替换

apply()函数还可以使用字典,将DataFrame中的某些值替换为其他值。下面的示例展示了如何使用字典将DataFrame中的0替换为男性,1替换为女性:

import pandas as pd

data = {'A':[0,1,0,1],'B':[5,6,7,8]}

df = pd.DataFrame(data)

df = df.apply(lambda x: x.map({0:'male',1:'female'}.get))

print(df)

运行结果如下:

A B

0 male 5

1 female 6

2 male 7

3 female 8

上述示例中,我们使用了一个字典将0替换为male,将1替换为female。然后使用apply()函数将这个字典应用到DataFrame中的每个值。

总结

在Pandas中,map(), applymap(), apply()函数各有其特点。map()函数适用于Series中的每个值,applymap()函数适用于DataFrame中的每个值,而apply()函数适用于DataFrame中的每一行或列。

在使用map()函数和applymap()函数时,可以使用lambda函数或字典进行值转换、值替换等操作。在使用apply()函数时,需要指定axis参数来表示是行级别的操作还是列级别的操作。

希望本文可以为您使用Pandas提供一些帮助。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签