반응형
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)
참고한 블로그:
반응형
'서비스 기획 > ☁️ 데이터 분석 공부' 카테고리의 다른 글
[췻쉿] 한번에 여러 데이터프레임에 함수 적용, csv 파일 추출 (0) | 2023.05.13 |
---|---|
[췻쉿] query, assign, type, 문자열, print (0) | 2023.02.26 |
미국 데이터 분석 석사 선수과목 채우기 (2) | 2022.12.27 |
[췻쉿] DataFrame으로 모든 데이터 모으는 방법 (0) | 2022.12.24 |
주니어 PM의 데이터 분석 학습기 (0) | 2022.08.31 |
댓글