파이썬 판다스 결측값, 기존 값을 다른 값으로 변경 하는 방법.

  1. fillna() → 결측값을
  2. dropna() → 결측값(na, nall, nan) 값을 버린다.
  3. interpolate() → 결측값 보간, 규칙적으로 채워 넣는다.
  1. replace() → 대부분 사용 가능, 결측값 변경도 가능.
import pandas as pd

df.fillna(value = '')  # 결측값을 원하는 값으로 변경 가능

df.dropna() # 행에 결측값이 있으면 그 행을 버린다.
df.dropna(axis = 0) # axis = 0 은 행, 1은 열
df.dropna(thresh = 2) # thresh hold 값을 주어 결측값이 2개 이상이면 버림.

df.interpolate(method="linear") # 결측값에 앞 뒤의 값과 직선형으로 값을 넣어줌
df.interpolate(method = 'quadratic') # 결측값을 부드럽게 채워 넣어줌.
df.interpolate(method='time') # datatime 을 사용하면 시간을 넣어줄수도 있음.

replace

import pandas as pd

df.replace(old_value, new_value) # old_value에 기존 값 넣고, new_value에 변경 값 넣는다.
# old_value, new_value에 list, dict, DataFrame 특정 칼럼 값 교체 가능.
df.replace([old_list],[new_list]) # 리스트 끼리 교체 가능
df.replace({old1:new1, old2:new2}) # 특정 값을 맵핑 해서 변경 가능.
df.replace({'col_name':old_val}, {'col_name':new_val}) # 특정 칼럼과 값 맵핑 변경 가능.

특정값 제거

df1.drop(df1.loc[df1['허리둘레'] == 999].index, inplace = True)
# inplace True => 현제 데이터 변경

결측치 최빈값으로 대체

# df['data'].mode()[0] # 최빈값
df.fillna({'Fruit':df['Fruit'].mode()[0],'Age':int(df['Age'].mean())},inplace=True)

# 결측치 최빈값으로 대체
for col in df1.columns:
  df1[col].fillna(df1[col].mode()[0], inplace = True)
df1.info()

결측치 확인

df1['열'].isnull().sum().sum()

fillna, dropna 참고 : https://enjoyiot.tistory.com/entry/02-Missing-Data

interpolate 참고 : https://rk1993.tistory.com/entry/Pythonpandas데이터-결측치-처리하기보간법보외법-pandasDataFrameinterpolate

replace 참고 : https://rfriend.tistory.com/265