데이터분석/데이터 탐색

데이터 전처리 과정

상선약수64 2023. 10. 2. 17:36
반응형

모든 데이터 분석에서는 반드시 데이터 전처리 과정이 필요하다. 데이터 전처리 과정은 많은 시간이 필요합니다. 데이터 전처리과정은 데이터 분석 결과 및 모델링이 직접적인 영향을 미치는 과정이므로 매우 중요합니다.

 

 

 

데이터 과학자에게 
전처리과정의 작업비중이 60% 이다.

출처 : https://www.forbes.com/sites/gilpress/2016/03/23/data-preparation-most-time-consuming-least-enjoyable-data-science-task-survey-says/?sh=78fa67ce6f63

 

데이터 불러오기 및 결측치 확인
  • 데이터 파일을 불러오고, info()메소드를 이용하여 행과 컬럼수를 확인할 수 있습니다. 또한 결측치가 있는지도 확인할 수 있습니다
#데이터 파일을 불러오고, 데이터 확인
df = pd.read_csv('/content/drive/MyDrive/kaggle_data/Data Carrard et al. 2022 MedTeach.csv')
df.head()

df.shape #컬럼과 행을 확인함
df.info() #컬럼별 데이터타입 확인
#print(f"The dataset has {df.shape[0]} rows and {df.shape[1]} columns.")

  • isnull().sum()은 결측치가 몇개 있는지 확이할 수 있습니다. 만약에 결측치가 있다면 반드시 결측치를 처리해야 합니다. 실습데이터는 결측치가 없습니다.
df.isnull().sum() #결측치가 몇개 있는지 확인

 

결측치 처리하는 방법
  • 결측치가 있다면 결측치 처리하는 방법은 다양하지만, 일반적으로 많이 활용되는 방식은 다음과 같습니다.

        1) 결측치 사례를 제거 : drop() 함수 사용

         2) 계량형 데이터 인 경우는 평균값 및 중앙값으로 대체

         3) 예측모엘로 대체하는 방식

 

df['mbi_ea'] = df['mbi_ea'].fillna(df.mbi_ea.mean()) # 결측치 부분을 평균으로 대체

# 만약 결측치가 문자열 스페이스(' ')로 되어 있다면, np.nan으로 바꾸어 Pandas 라이브러리가 인식할수 있도록 변환
df.viewCount = df.viewCount.replace('', np.nan)

# 결측치를 제거하는 방법
df.dropna(how='all').head() # 한 행이 모두 missing value이면 제거
df.dropna(how='any').head() # 한 행에서 하나라도 missing value가 있으면 제거

 

이상치 처리

일반적으로 1) 표준점수로 변환 후 -3 이하 및 +3 제거 2) IQR 방식 3) 도메인 지식 이용하여 처리하는 방식이 이용된다. 표준점수 이용할 경우 평균이 0, 표준편차가 1인 분포로 변환한후 +3 이상이거나 -3 이하인 경우 극단치로 처리합니다.