일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 사회조사분석사 2급 독학
- 사회조사분석사 2급 필기 시험시간
- 사회조사분석사 2급 접수
- 백준
- 사회조사분석사 2급 공부방법
- DFS
- 벽부수고이동하기 파이썬
- 사회조사분석사 2급
- 사회조사분석사 2급 필기 공부방법
- 너비우선탐색
- 시물레이션
- 현대엔지니어링 수요예측
- 오미크론 자가격리
- 그리디
- 공모주 청약
- 사회조사분석사 2급 기출문제집
- 사회조사분석사2급실기신청꿀팁
- BFS
- 2월공모주
- 현대엔지니어링
- 백준 알고리즘
- 정렬
- 사회조사분석사 2급 필기 요약정리
- 사이킷런
- 공모주
- 머신러닝
- 알고리즘
- 파이썬 정렬
- 공모주청약
- 사회조사분석사2급실기신청
- Today
- Total
세상을 바꾸는 데이터
[Pandas] 판다스 - 결손 데이터 처리하기 본문
이번 포스트에서는 값이 없는 결손 데이터를 처리하는 방법에 대해 알아보고자 한다.
판다스는 결손 데이터(missing data)를 처리하는 편리한 API를 제공한다. 결손 데이터란 칼럼에 값이 없는 NULL인 경우를 의미하며, 이를 넘파이의 NaN으로 표시한다.
기본적으로 머신러닝 알고리즘은 이 NaN 값을 처리하지 않으므로 이 값을 다른 값으로 대체해야 한다. NaN 값은 평균, 총합 등의 함수 연산 시 제외가 된다.
import numpy as np
import pandas as pd
titanic_df = pd.read_csv('titanic_train.csv')
캐글(kaggle)에서 사용되는 연습 데이터셋인 타이타닉(titanic) 데이터를 이용한다.
타이타닉 데이터셋 다운 및 자세한 내용은 다음 포스트를 참고하면 된다.
https://data-flower.tistory.com/9?category=949030
[Pandas] 판다스 - 파일을 DataFrame으로 불러오기, 기본 API
새로운 주피터 노트북을 생성하고 판다스 모듈을 임포트 한다. import pandas as pd 다음으로 데이터 파일을 판다스의 DataFrame으로 로딩할 것이다. 사용할 데이터 파일은 캐글의 대표 연습 파일인 타
data-flower.tistory.com
NaN 여부 확인하기 isna( )
- DataFrame.isna( )
DataFrame에 isna( )를 수행하면 모든 칼럼의 값이 NaN인지 아닌지를 True나 False로 알려준다.
titanic_df.isna().head(3)
[Output]
결손 데이터의 개수를 isna( ) 결과에 sum( ) 함수를 추가해 구할 수 있다. sum( )을 호출 시 True는 내부적으로 숫자 1, False는 숫자 0을 변환하므로 결손 데이터의 개수를 구할 수 있다.
titanic_df.isna( ).sum( )
[Output]
결과: Age는 177개의 Null, Cabin은 687개의 Null, Embarked은 2개의 Null이 있음을 알 수 있다. 결손 데이터(Null)를 편리하게 다른 값으로 대체해 보자.
fillna( )로 결손 데이터 대체하기
- DataFrame.fillna( )
'Age' 칼럼의 NaN값을 평균 나이로, 'Embarked' 칼럼의 NaN 값을 'S'로 대체해 'Cabin'을 제외한 모든 결손 데이터를 처리해보자.
titanic_df['Age'] = titanic_df['Age'].fillna(titanic_df['Age'].mean())
titanic_df['Embarked'] = titanic_df['Embarked'].fillna('S')
titanic_df.isna().sum()
[Output]
결과: 타이타닉 데이터의 'Age' 칼럼에 있는 Null 값은 모두 평균값으로 대체, 'Embarked' 칼럼에 있는 Null 값은 모두 'S'로 대체되어 Null이 있는 값이 0개가 되었다.
Reference
'ML > Pandas' 카테고리의 다른 글
[Pandas] 판다스 - DataFrame을 정렬, 집계, 그룹하는 방법 (2) | 2022.01.25 |
---|---|
[Pandas] 판다스 - 데이터 선택 및 필터링 (indexing) (9) | 2022.01.24 |
[Pandas] 판다스 - DataFrame 칼럼 데이터 생성, 수정, 삭제 (10) | 2022.01.23 |
[Pandas] 판다스 - 데이터프레임과 넘파이 상호 변환 (0) | 2022.01.23 |
[Pandas] 판다스 - 파일을 DataFrame으로 불러오기, 기본 API (2) | 2022.01.19 |