[파이썬] Pandas 데이터 정제
Pandas의 데이터프레임에서 이상(비정상) 데이터를 제거하는 방법에는 여러 가지가 있습니다.
이상 데이터를 제거한다는 Null 값을 제거하는 것과 특정 조건에 따라 이상 데이터를 판별하고 해당 데이터를 다른 데이터로 변환하는 것입니다.
다음 방법을 사용하여 조건에 따라 기존 데이터프레임 데이터를 수정하거나 기존 데이터프레임에 새로운 컬럼을 추가할 수 있습니다.
- 특정 컬럼을 대상으로 적용하는 것이며 데이터프레임 전체에 대해 적용할 경우 방법이 달라질 수 있습니다.
1. Pandas의 fillna() 함수를 사용하여 Null 값 제거
fillna() 함수를 사용하면 특정 컬럼 데이터가 Null 값인 경우 원하는 값으로 변경할 수 있습니다.
- 사용법
데이터프레임명[‘컬럼명’] = 데이터프레임명[‘컬럼명’].fillna(대체값)
- 설명: 해당 컬럼의 데이터가 Null 값인 경우 대체값으로 변환
- 예
data_df['RESULT'] = data_df['RESULT'].fillna('')
- ‘RESULT’ 컬럼의 데이터가 Null 값인 경우 빈 값으로 변환
- 참고: fillna() 함수는 기본적으로 inplace가 적용되지 않지만 옵션으로 inplace를 적용할 수 있으며 이 경우 다음과 같이 사용합니다.
데이터프레임명[‘컬럼명’].fillna(대체값, inplace=True)
2. 조건식을 사용하여 참, 거짓을 판단한 후 판단 결과를 pandas의 astype() 함수를 사용하여 int로 형 변환
특정 컬럼 데이터에 조건식을 적용하고 판단 결과(True, False)를 astype() 함수를 이용하여 형 변환하여 대입합니다. 그 결과 조건이 참인 경우 1, 거짓인 경우 0으로 변환됩니다.
- 사용법
데이터프레임명[‘컬럼명’] = (조건식).astype(int)
- 설명: 해당 컬럼의 데이터에 대해 조건식을 만족할 경우 1, 만족하지 않을 경우 0으로 변환
- 예
data_df['RESULT'] = (data_df['RESULT'] == 'Y').astype(int)
- ‘RESULT’ 컬럼의 데이터가 ‘Y’인 경우 1, ‘Y’가 아닌 경우 0으로 변환
- 새로운 컬럼 추가
data_df['NEW_RESULT'] = (data_df['RESULT'] == 'Y').astype(int)
- 참고: 단순히 True와 False를 int로 형 변환하는 것이므로 해당 컬럼에 결과를 대입시켜 주어야 합니다.
3. numpy의 where() 함수를 사용하여 조건식에 따라 데이터 변환
numpy의 where() 함수를 사용하여 데이터프레임의 데이터를 수정할 수 있습니다. where() 함수는 기본적으로 세 가지 인자를 전달받을 수 있습니다.
1) 첫 번째 인자: 특정 컬럼에 대해 판별할 조건식 2) 두 번째 인자: 해당 조건이 참일 경우 반환할 값 3) 세 번째 인자: 해당 조건이 거짓일 경우 반환할 값
- 사용법
데이터프레임명[‘컬럼명’] = np.where(조건식, 참일 때 반환할 값, 거짓일 때 반환할 값)
-
기존 값을 그대로 두고 싶다면 참 또는 거짓 반환값에 데이터프레임명[‘컬럼명’]을 입력합니다.
-
기존 값을 변형하고 싶다면 데이터프레임명[‘컬럼명’]을 이용한 표현식을 입력합니다.
- 설명: 해당 컬럼의 데이터에 대해 조건식을 만족할 경우 참일 때의 값, 만족하지 않을 경우 거짓일 때의 값으로 변환
- 예1
data_df['RESULT'] = np.where(data_df['RESULT'] == 'Y', 1, 0)
- ‘RESULT’ 컬럼의 데이터가 ‘Y’인 경우 1, ‘Y’가 아닌 경우 0으로 변환
- 예2
data_df['RESULT'] = np.where(data_df['RESULT'] == 'Y' , 1, data_df['RESULT'])
- ‘RESULT’ 컬럼의 데이터가 ‘Y’인 경우 1로 변환, ‘Y’가 아닌 경우 그대로
- 새로운 컬럼 추가
data_df['NEW_RESULT'] = np.where(data_df['RESULT'] == 'Y', 1, 0)
- 참고1: numpy의 where() 함수는 기본적으로 inplace가 적용되지 않으며 옵션 설정이 불가능합니다.
- 참고2: pandas에도 where() 함수가 존재하지만 사용 방법이 다릅니다. 사용 방법은 4.에 설명되어 있습니다.
4. pandas의 where() 함수를 사용하여 조건식에 따라 데이터 변환
numpy에서 제공하는 where() 함수와 pandas의 where() 함수의 시그니처는 기본적으로 다르므로 사용 방법도 다릅니다. pandas의 where() 함수는 기본적으로 두 가지 인자를 전달받을 수 있습니다.
1) 첫 번째 인자: 특정 컬럼에 대해 판별할 조건식 2) 두 번째 인자: 해당 조건이 거짓일 경우 반환할 값
즉, pandas의 where() 함수를 사용하면 조건이 참일 경우 기존 값을 그대로 두고, 조건이 거짓일 경우 원하는 값으로 변환할 수 있습니다.
- 사용법
데이터프레임명[‘컬럼명’] = 데이터프레임명.where(조건식, 거짓일 때 반환할 값)
- 기존 값을 변형하고 싶다면 데이터프레임명[‘컬럼명’]을 이용한 표현식을 입력합니다.
- 설명: 해당 컬럼의 데이터에 대해 조건식을 만족할 경우 그대로, 만족하지 않을 경우 거짓일 때의 값으로 변환
- 예1
data_df['RESULT'] = data_df.where(data_df['RESULT'] == Y, 0)
- ‘RESULT’ 컬럼의 데이터가 ‘Y’인 경우 그대로, ‘Y’가 아닌 경우 0으로 변환
- 예2
data_df['RESULT'] = data_df.where(data_df['RESULT'] == Y, data_df['RESULT'])
- 이렇게 작성하면 데이터가 변환되지 않게 됩니다.
- 새로운 컬럼 추가
data_df['NEW_RESULT'] = data_df.where(data_df['RESULT'] == Y, 0)
- 참고: where() 함수는 기본적으로 inplace가 적용되지 않지만 옵션으로 inplace를 적용할 수 있으며 이 경우 다음과 같이 사용합니다.
데이터프레임명.where(조건식, 거짓일 때 반환할 값, inplace=True)
Comments