发布时间: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