13-Pandas資料預處理之資料轉換(applymap()、df.map()、df.replace())
阿新 • • 發佈:2020-08-01
在資料分析中,根據需求,有時候需要將一些資料進行轉換,而在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