1. 程式人生 > 實用技巧 >13-Pandas資料預處理之資料轉換(applymap()、df.map()、df.replace())

13-Pandas資料預處理之資料轉換(applymap()、df.map()、df.replace())

  在資料分析中,根據需求,有時候需要將一些資料進行轉換,而在Pandas中,實現資料轉換的常用方法有:

  • 利用函式或是對映
  • 可以將自己定義的或者是其他包提供的函式用在Pandas物件上實現批量修改
  • applymapmap例項方法

  在本節中,使用調查的某公司的員工資訊為例:

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