Python-apply()、applymap()、map()的使用和区别

发布时间:2023-10-02 13:30

   将一个自定义的函数应用到Pandas的数据结构中可以使用map(), apply()或者applymap(),它们的区别在于应用的对象不同。

1.map() 是一个Series的方法,DataFrame结构中没有map()。map()将一个自定义函数应用于Series结构中的每个元素(elements)。

2.apply()和applymap()是DataFrame的方法,Series中没有这两个方法。它们的区别在于,apply()方法是将某一个函数作用于DataFrame中的每个行或者列(默认是列),而applymap()是将函数做用于DataFrame中的每一个元素(elements)。

(1) DataFrame的重要方法

import numpy as np
import pandas as pd
def my_function1(my_data):
    return my_data.sum()
def my_function2(my_data):
    return my_data*100
my_array=np.arange(24).reshape((6,4))
my_df=pd.DataFrame(my_array,columns=['Eng','math','phys','Chem'])
print(my_df)
print(my_df.apply(my_function1   ))  
print(my_df.applymap(my_function2))  
结果:
Eng     60
math    66
phys    72
Chem    78
dtype: int64
    Eng  math  phys  Chem
0     0   100   200   300
1   400   500   600   700
2   800   900  1000  1100
3  1200  1300  1400  1500
4  1600  1700  1800  1900
5  2000  2100  2200  2300

(2)Series的map方法 

使用map方法可以实现元素级转换以及其他数据清理工作的便捷方式。作用于Series的每一个元素上。

1.str属性

print(my_series.str.strip())  #my_series中的每一个元素两边去空格
print(my_series.str.lower())  #my_series中的每一个元素变为小写
print(my_series.str.upper())  #my_series中的每一个元素变为大写
print(my_series.str.title())  #my_series中的每一个元素变为首字母大写

2.Series的map方法的参数是一个含有映射关系的字典。
 

import pandas as pd
my_data = pd.DataFrame({'food':['bacon','pulled pork','bacon','pastrami',
            'corned beef','bacon','pastrami','honey ham','nova lox'],
                  'ounces':[4,3,12,6,7.5,8,3,5,6]})
my_dict= {'bacon':'pig','pulled pork':'pig','pastrami':'cow','corned beef':'cow',\
           'honey ham':'pig','nova lox':'salmon'}  
my_data['animal'] = my_data['food'].map(my_dict) 
my_data   

 Python-apply()、applymap()、map()的使用和区别_第1张图片

 

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号