데이터프레임에서 비어있는 데이터는 NaN 으로 채워지게 된다.
NaN을 다루는 방법을 알아보자.

df.isna( )
데이터프레임에서 NaN이 어느자리에 있는지 나타낼 때는 isna( ) 함수를 사용한다.
NaN이 들어있는 자리는 True로 출력되고, 데이터가 채워져있는 자리는 False로 출력된다.

df.notna( )
notna( ) 는 isna( ) 의 반대 함수이다.
데이터가 들어있는 자리는 True가 출력되고, NaN이 들어있는 자리는 False로 출력이 된다.

NaN을 처리하는 전략
NaN을 처리하는 전략에는 크게 세가지 방법이 있다.
1. 삭제하기
2. 특정 값으로 채우기
3. 비어있는 데이터의 위 행의 데이터, 아래행의 데이터로 채우기 or 왼쪽 열의 데이터, 오른쪽 열의 데이터로 채우기
1. NaN 이 들어있는 데이터 행 삭제하기
먼저 NaN이 들어있는 데이터 행을 삭제하는 방법이다.
dropna( )함수를 사용하면 NaN값이 들어있는 데이터행은 삭제된다.

2. NaN 자리를 특정 값으로 채우기
NaN 자리를 특정 값으로 채우는 방법은 fillna( ) 함수를 이용하는 것이다.
괄호 안에는 NaN자리에 채우고자 하는 값을 넣어준다.
아래는 df.fillna(0)을 사용하여 NaN자리를 전부 0으로 채운 결과이다.

특정 컬럼들만 fillna( ) 를 이용하여 값을 채울 수 있다.
방법은 아래를 참고하면 된다.

3-1. 비어있는 데이터의 위 행, 아래 행으로 데이터 채우기
NaN자리의 위행, 아래행으로 데이터를 채우는 방법이다. 이때는 method를 이용하면 된다.
df.fillna( method = 'ffill', axis= 0 ) 형태이다.
method에는 위 행으로 채울경우 'ffill' 을 넣고, 아래행으로 채울 경우 'bfill' 을 이용하면 된다.

3-2. 비어있는 데이터의 왼쪽 행, 오른쪽 행으로 데이터 채우기
NaN 데이터의 왼쪽 값, 오른쪽 값으로 데이터를 채우는 방법이다.
위와 동일하게 fillna( method= 'ffill') 를 이용한다. 단 axis= 1로 설정해줘야 한다.
'ffill'일 경우 왼쪽 열의 데이터로 NaN값을 채우고, 'bfill'일 경우 오른쪽 열의 데이터로 NaN값을 채운다.

3-3. 비어있는 데이터를 각 컬럼의 평균 값 또는 최댓값으로 채우기
만약 NaN 값을 각 컬럼의 평균 또는 최댓값으로 채우고자 한다면, 기존 방법을 응용하여 적용시키면 된다.
df.mean()은 각 컬럼의 평균 값을 구하는 함수이기 때문에 fillna괄호에 df.mean()을 넣어주면, NaN값에는 각 컬럼의 평균 값이 채워진다.
최댓값도 동일한 방법이다.
df.max()는 각 컬럼의 최댓값을 구하는 함수이기 때문에 fillna() 에 df.max()를 넣어주면, 각 컬럼의 최댓값으로 NaN값을 채워준다.
같은 방식으로 NaN 값에 각 컬럼의 표준편차, 중앙값 등으로 채워넣을 수 있다.

'Python' 카테고리의 다른 글
| [Pandas] - apply 함수, str 라이브러리 (0) | 2022.11.25 |
|---|---|
| [Pandas] - groupby() / 특정 데이터에 접근 (0) | 2022.11.24 |
| [Pandas] - csv 파일 가져오기 (0) | 2022.11.24 |
| [Pandas] - Dataframe 다루기 , 접근 / 컬럼 추가 / 삭제 (0) | 2022.11.24 |
| Numpy 활용하기 (0) | 2022.11.22 |