파이썬/라이브러리(API)

판다스 데이터 누락값(결측치) 처리하기

코데방 2024. 3. 7.
728x90

판다스 누락값 결측치 파악하기

 

누락값이 있다면 연산에서 에러가 발생할 수 있으므로 데이터 작업 전에는 항상 누락값을 처리해주고 시작하는 것이 좋습니다. 이번 포스팅은 누락값을 처리하는 여러 방법들입니다. 

import pandas as pd

ebola = pd.read_csv("country_timeseries.csv")

 

 

 

 

누락값은 if문으로 매칭할 수 없기 때문에 누락값의 존재 여부를 알기 위해서는 아래와 같은 방법을 사용해야합니다.

먼저 info를 통해 시각적으로 확인할 수 있습니다. 

ebola.info()

 

 

 

 

정확한 숫자를 알고 싶다면 아래와 같이 사용할 수 있습니다.

ebola.index.stop - ebola.count()

 

 

 

누락값 데이터 입력하기

 

먼저 단순하게 특정 값이나 평균값 등의 통계 데이터로 채워넣는 방법이 있습니다.

ebola = ebola.fillna("단순값")

 

 

 

평균과 같은 통계 데이터 이용도 간단합니다.

ebola = ebola.fillna(ebola.mean())

 

 

 

 

하지만 시계열 데이터나 일정한 흐름이 존재한다면 평균이나 특정 값으로 채우는 것이 좋지 않을 수 있습니다. 예를 들어 시간이 지날 수록 늘어나는 숫자에 대한 데이터 등입니다. 

 

이럴 때 데이터 흐름에 맞게 결측치를 채워주는 메소드가 바로 "interpolate()" 메소드입니다. 아래 "Cases_Guinea" 컬럼은 점점 숫자가 줄어들고 있는 일정한 흐름이 있기에 적당한 값을 채워준 것을 볼 수 있습니다. 

ebola = ebola.interpolate()

 

 

 

하지만 흐름을 알 수 없는 데이터가 있다면 NaN 값이 채워지지 않습니다. 따라서 먼저 "interpolate()" 메소드로 흐름에 맞는 데이터를 채워준 다음, 위에서 다룬 평균값을 넣거나 위, 아래의 내용을 그대로 가져다 넣어주는 등의 추가 작업이 필요합니다.

 

  • fillna(method = "ffill")  ==> 이전 데이터를 그대로 넣어줌
  • fillna(method = "bfill") ==> 다음 데이터를 그대로 넣어줌
ebola = ebola.interpolate()
ebola = ebola.fillna(method = "ffill")
ebola = ebola.fillna(method = "bfill")

 

 

세 가지 방법을 모두 사용하고 난 뒤에는 누락값이 없어진 것을 확인할 수 있습니다.

ebola.index.stop - ebola.count()

 

 

 

 

 

728x90

댓글

💲 추천 글