본문 바로가기
서비스 기획/☁️ 데이터 분석 공부

[췻쉿] 결측값 처리

by 림뽀 2023. 3. 25.
반응형

Pandas DataFrame cheatsheet

데이터 분석을 한층 편리하게 해 줄 여러 가지 기능들

내가 아직 외우지 못한 기능을 한 번에 찾을 수 있게 모아놨다.

 

결측값 처리 방법 4가지

참고 자료: 한양사이버대학교 데이터사이언스개론

 

0) null이 있는 열 확인

 

#컬럼별 확인
df.isna().sum().reset_index()

#각 컬럼별 결측치의 비율 
df.isna().sum() / len(df)

 

1) 삭제하기

 

drop_missing_data = rawData.dropna()

#axis=0: null값이 있는 행 삭제 / axis=1: null값이 있는 열 삭제
#how='any': null값이 하나라도 있으면 삭제 / how='all': 모든 값이 null이면 삭제

 

2) 0으로 채우기

 

fill_missing_data = rawData.fillna(0)

 

3) 각 열의 평균으로 채우기

 

fill_missing_data = rawData.fillna(rawData.mean())

 

4-1) 전체 열의 median으로 바꾸기

 

df['age'] = df.age.transform(lambda x: x.fillna(x.median()))

 

 

4-2) 각 그룹의 median으로 바꾸기

 

#1. transform 사용
df['age'] = df.groupby('pclass').age.transform(lambda x: x.fillna(x.median()))

#2. Simple Inputer 사용
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy='median')
df['age'] = imputer.fit_transform(df.age.values.reshape(-1,1))

 

 

5) 다른 열의 값으로 선형회귀 model을 생성하여 값을 추정 

 

#ROE, PER, 배당수익률로 유동비율의 비어있는 값을 추정함
#1.null값이 없는 데이터로 모델 생성
X = drop_missing_data[['ROE','PER','배당수익률']]
y = drop_missing_data[['유동비율']]
lm = linear_model.LinearRegression()
model = lm.fit(X,y)

#2. 유동비율은 null이고 나머지 열은 null이 아닌 테이블로 predict
tgt_fill = np.isnan(rawData['유동비율']) & ~np.isnan(rawData['ROE']) & ~np.isnan(rawData['PER']) & ~np.isnan(rawData['배당수익률'])
fitted = model.predict(rawData[tgt_fill][['ROE','PER','배당수익률']])

#3. 유동비율 비어있는 컬럼에 값 채워넣기
rawData.loc[tgt_fill,'유동비율'] = fitted
rawData[['Name_eng','유동비율']].head(20)

 

기타

#결측치가 문자열 스페이스 (' ')로 되어 있는 경우
data = data.replace(' ','')
data = data.replace('', np.nan)

#결측치를 그래프로 보고싶은 경우
import missingno as msno
msno.bar(df)

 

참고한 블로그:

 

선형회귀(Linear Regression) - 파이썬 코드 예제 - 아무튼 워라밸

본 포스팅에서는 파이썬 라이브러리 scikit-learn을 통해 선형회귀(Linear Regression) 분석을 직접 수행하는 예제를 소개한다. (누구나 쉽게 따라할 수 있는 수준으로 작성했다.)

hleecaster.com

 

 

파이썬) 단순선형회귀 그래프 그리기 (+추세선, 회귀식 구하기 with polyfit, poly1d, ols)

#1. 단순선형회귀 그래프는 무엇인가? 단순선형회귀 그래프는 독립변수 1개, 종속변수 1개를 가진 데이터를 시각화한 그래프이다. 먼저, 독립변수의 값과 종속변수 값을 각각 x, y로 두고 전체 데

lovelydiary.tistory.com

 

by hiteshchoudhary

반응형

댓글