在数据分析中,根据需求,有时候需要将一些数据进行转换,而在Pandas中,实现数据转换的常用方法有:
- 利用函数或是映射
- 可以将自己定义的或者是其他包提供的函数用在Pandas对象上实现批量修改。
- applymap和map实例方法
在本节中,使用调查的某公司的员工信息为例:
numeber_project:员工所在项目个数
left:该员工是否离职
salary:工资级别
>>> import pandas as pd >>> import numpy as np >>> data = pd.read_csv(‘./input/HR.csv‘,encoding = ‘gbk‘) >>> data = data[[‘number_project‘,‘left‘,‘salary‘]] >>> data.head() number_project left salary 0 2 1 low 1 5 1 medium 2 7 1 medium 3 5 1 low 4 2 1 low
一、map()、replace()
(1)使用函数。例:将salary列的数据转换成每个单词的字母大写:
>>> data[‘salary‘].map(str.title)[:5] 0 Low 1 Medium 2 Medium 3 Low 4 Low Name: salary, dtype: object
(2)使用映射关系的字典。例:对于left,生成一个指标标量indicator。若为‘YES’,表示left=1,若为‘NO’,表示left=0(一般在数据处理时是将字符处理成0,1...n,在此时为了便于理解,故如此举例)。
>>> mapper = {0:‘NO‘,1:‘YES‘} >>> data[‘left‘] = data[‘left‘].map(mapper) >>> data.head() number_project left salary 0 2 YES Low 1 5 YES Medium 2 7 YES Medium 3 5 YES Low 4 2 YES Low
(3)重命名索引---->通过map方法可以对行索引或是列名的Index对象进行修改(行索引和列明都是Index对象)
>>> data.columns Index([‘number_project‘, ‘left‘, ‘salary‘], dtype=‘object‘) >>> data.columns.map(str.upper) Index([‘NUMBER_PROJECT‘, ‘LEFT‘, ‘SALARY‘], dtype=‘object‘)
(4)使用映射,若需要将数据按照一定的映射关系进行替换,使用replace()。多个值的替换可以用列表,少数的值可以用包含映射关系的字典字典。
例:将number_project的值2、3、4设置为less,5、6、7设置为More。
>>> data[‘number_project‘] = data[‘number_project‘].replace([2,3,4,5,6,7],[‘Less‘,‘Less‘,‘Less‘,‘More‘,‘More‘,‘More‘]) >>> data.head() number_project left salary 0 Less YES Low 1 More YES Medium 2 More YES Medium 3 More YES Low 4 Less YES Low