목표 설정
- Pandas Cheat Sheet 에서 누락값(결측치 값) 다루는 방법 학습하기
- 학습 부분
Handling Missing Data
- 결측치 제거 : dropna
- 결측치 채우기 : fillna
📍실습에 사용할 데이터
import pandas as pd
import numpy as np
df = pd.DataFrame([[np.nan, 2, np.nan, 0],
[3, 4, np.nan, 1],
[np.nan, np.nan, np.nan, np.nan],
[np.nan, 3, np.nan, 4]],
columns=list("ABCD"))
df
| A | B | C | D |
---|
0 | NaN | 2.0 | NaN | 0.0 |
1 | 3.1 | 4.0 | NaN | 1.0 |
2 | NaN | NaN | NaN | NaN |
3 | NaN | 3.0 | NaN | 4.0 |
결측값 제거
df.dropna()
📍파라미터 정리
axis
: 축 (기본값 : axis=0 행 / axis=1은 열)
how
: 제거방법
- any : NA 값이 있으면 해당 행이나 열 삭제 (기본값)
- all : 모든 값이 NA 이면 해당 행이나 열 삭제
thresh
: 정수 입력 (선택사항)
- thresh=3 이면, NA가 아닌 값이 3개 이상인 경우만 제거하지 않음
subset
: 컬럼명 (선택사항)
- subset=[컬럼명1, 컬럼명2] 이면, 두 컬럼에 대해서만 누락값을 찾도록 지정할 수 있음
inplace
: 수정여부 (기본값 False)
- inplace=True 하면, 데이터프레임을 수정
👩🏻💻실습으로 배우는 dropna
df.dropna(axis=1, how="all")
| A | B | D |
---|
0 | NaN | 2.0 | 0.0 |
1 | 3.0 | 4.0 | 1.0 |
2 | NaN | NaN | NaN |
3 | NaN | 3.0 | 4.0 |
- 위 결과물을 저장하고자 할 때
inplace=True
넣어주면 된다.
결측값 채우기
df.fillna()
- 채워줄 값만 넣게 되면, 모든 결측치 값에 채워지게 된다.
- 특정 값으로 채우려면 values
👩🏻💻실습으로 배우는 fillna
df.fillna("결측값")
| A | B | C | D |
---|
0 | 결측값 | 2.0 | 결측값 | 0.0 |
1 | 3.1 | 4.0 | 결측값 | 1.0 |
2 | 결측값 | 결측값 | 결측값 | 결측값 |
3 | 결측값 | 3.0 | 결측값 | 4.0 |
- 딕셔너리 값으로 열을 기준으로 다른 값 채워주기
values = {"A": "A", "B": "B", "C": "C", "D": "D"}
df.fillna(value=values)
| A | B | C | D |
---|
0 | A | 2.0 | C | 0.0 |
1 | 3.1 | 4.0 | C | 1.0 |
2 | A | B | C | D |
3 | A | 3.0 | C | 4.0 |
적용을 하게 된다면?
- 결측값이 많은 데이터프레임에서 각 열별로, 다른 평균값을 넣어줄 일이 있다면 value 파라미터를 사용하면 좋을 것 같다!
참고문헌