자격증

[자격증] 데이터 전처리 (for AICE Associate)

haebogu 2025. 2. 13. 21:36

 

AI에게 있어 데이터 전처리의 중요성은 
말할 필요가 없을 정도로 중요하다. 
데이터에 대한 이해를 통해 올바른 결과를 얻을 수 있다. 

출제 범위 및 합격 기준

문제 수 : 14문항 / 90분

합격 점수 : 80점 이상

시험 준비 요령: 

  • 제한 오픈북!!!(구글 검색 가능) : 본인이 정리한 글이 아닌 구글 검색으로 나오는 모든 자료 가능! (GPT 같은건 당연히 안됨)
  • (오픈북인지 몰라서 혼자 암기로 했는데 라벨인코딩 코드 기억안나서 시험 개망한 블로그 주인장의 눈물 ....)
  • 문제지의 변수또는 컬럼 이름을 복사/붙혀넣기가 불가능
  • 데이터를 계속해서 변환해가며 갱신해 사용하기에 중간 과정에서 문제가 생길시 후반 작업 불가능
  • 데이터 가공 부터 머신러닝, 딥러닝 까지 이어지는 전반적인 과정을 이해할 필요가 있음
  • 각각의 기능을 정확하게 숙지하는 것이 중요하며, 해당 기능이 어떤 결과를 가져오는 지를 중점적으로 이해
  • 머신러닝과 AI 같은 경우 어떤 알고리즘이 출제될 지 알 수 없으므로 폭넓게 공부할 필요가 있음
필요한 라이브러리 설치 및 데이터 구성 확인 : pd.function() / df.method() / df.property
@ 필요한 모듈 불러오기
Import pandas as pd
import numpy as np
@ 2개의 CSV 데이터 불러오기 : pd.read_csv("<파일이름.csv>")
-> 데이터 프레임으로 저장됨
cust_info = pd.read_csv("cust_info.csv")
service_info = pd.read_csv("service_info.csv")
@ 두개의 데이터프레임(or 시리즈) 합치기 : pd.merge(<df1>, <df2>, on= "<col name>", how = '<merge option>')
-> col name : merge의 기준(두 프레임에 모두 존재)이 되는 Column or index 이름 
-> merge option : inner(default, 공통된 것만), outer(모두 유지), left(좌측만 모두유지), right(우측만 모두 유지)
df = pd.merge(cust_info, service_info, on='customerID')
@ 데이터프레임 내용확인 프로퍼티 및 메서드:  head(), tail(), info(), shape, columns, index, values, descrbe()
@ 데이터프레임 Null 데이터 확인 메서드 : df.isnull().sum()

 

데이터 프레임 다루기 : df.method()
@ 특정 컬럼을 df에서 삭제 : df.drop('<삭제할 컬럼의 이름>', axis=1, inplace=True)
-> axis=1 : 0은 열, 1은 행을 의미.
-> inplace=True : 결과를 원본으로 저장. df = df.drop(...)로도 가능
df.drop('customerID', axis=1, inplace= True)
@ 특정 컬럼의 공백 제거 : df['<컬럼명>'].replace(<변경대상>, <넣을 값>, inplace=True)
-> 변경대상과 넣을 값에 올수있는 형태 : str, regex, list, dict, Series, int, float, or None
df['TotalCharges'].replace([' '], ['0'], inplace=True)
@ 특정 컬럼의 타입 변경:df['<컬럼명>'] = df['<컬럼명>'].astype(<타입>)
-> 데이터 내 바꿀 수 없는 형태(공백, 특수문자) 포함될 시 값 처리필요
df['TotalCharges'] = df['TotalCharges'].astype(float)
@ 특정 컬럼의 문자열을 숫자로 변경(인코딩) : df['<컬럼명>'].replace(<문자열리스트>, <숫자 리스트>, inplace=True)
df['Churn'].replace(['Yes', 'No'], [1, 0], inplace=True)
@ 데이터프레임에서 특정 데이터 형태인 컬럼만 뽑기 : df.select_dtypes(include = '<데이터타입>' or ['타입1', '타입2'] )
df.select_dtypes(['int', 'float']).head()
@ 특정 컬럼을 기준으로 데이터프레임 그룹화 : df[ <사용할 컬럼 이름 리스트> ].groupby(<그룹화 기준 리스트>).method()
df[ ['gender' , 'tenure', 'MonthlyCharges', 'TotalCharges', 'Churn'] ].groupby([ 'Churn' , 'gender' ]).mean()

 

시각화 : matplotlib, seaborn
@ 필요한 라이브러리 임포트
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
@ 특정 컬럼의 데이터를 시각화1(pandas plot) : df.plot(kind = 'hist')
-> df는 시리즈 혹은 데이터 프레임 
-> <시리즈>.{hist, box, kde, density, pie, bar, barh}
-> <데이터 프레임>.{line, area, scatter, hexbin}
df['gender'].value_counts().plot(kind='bar')
@ 특정 컬럼의 데이터 분포를 시각화2(matplotlib pyplot) : plt.hist(<시각화 대상>, <옵션>)
-> 옵션 : color(c), marker, linestyle(ls), linewidth(lw), alpha 등등.. 
-> 함수의 인자로 (bins = 15)와 같이 넣어 구간을 나누는 단위를 설정가능
plt.hist(df['tenure']) 
plt.show()
@ 여러개의 플랏을 동시에 나타내기 : plt.subplot(<행의개수><열의개수><표시할위치>) 
-> subplot의 인자는 세개의 정수가 연달아 붙어있는 형태이다. 
plt.subplot(131)
df['tenure'].plot(kind='hist') 
@ 특정 컬럼의 데이터를 분포를 시각화3(seaborn) : sns.histplot(df, x= "<데이터 열>", hue = "<그룹화할 기준 열>")
-> 함수의 인자로 (bins = 15)와 같이 넣어 구간을 나누는 단위를 설정가능
-> x의 데이터로 히스토 그램을 그리고, hun의 데이터로 그룹을 분리한다(다른 색표시)
sns.histplot(data=df, x='tenure', hue='Churn')
@ 히스토그램을 각 그룹에 대한 확률밀도함수로 표현하는 방법:: sns.kedplot(df, x= "<데이터 열>", hue = "<그룹화할 기준 열>")
-> kde(A kernel density estimate) : hue를 기준으로 나누어진 그룹을 각각 x의 값을 가지고 확률밀도함수를 그린다. 
sns.kdeplot(data=df, x='tenure', hue='Churn')

 

다른 seaborn 시각화 플랏 : seaborn
@ 데이터의 그룹을 구분하여 범주형 데이터의 갯수 분포 확인 : sns.countplot(df, x= "<데이터 열>", hue = "<그룹화할 기준 열>")
sns.countplot(data=df, x='MultipleLines',  hue='Churn')
@ 범주형 데이터의 분류별 평균 값을 보는 가장 단순한 형태 : sns.barplot(df, x= "<범주 열>", y = "<평균값을 구할 데이터 열>")
sns.barplot(data=df, x='MultipleLines', y='TotalCharges')
@ 컬럼간의 상관관계를 확인하고 시각화하는 방법: sns.heatmap(df[<상관관계를 분석할 열들을 담은 리스트>].corr(), annot=True)
sns.heatmap(df[['tenure','MonthlyCharges','TotalCharges']].corr(), annot=True)
@ 데이터의 값들의 분포 경향(이상값, 중간값 등)을 한눈에 보는 법: sns.boxplot(df, x x= "<범주 열>", y = "<데이터 열>")
sns.boxplot(data=df, x='Churn', y='TotalCharges')

 

결과 저장 : to_csv()
@ 데이터 프레임을 csv 파일로 저장 : df.to_csv('<저장될 파일이름.csv>', index=False)
df.to_csv('data_v1_save.csv', index=False)

 

*** 이어서 ***

https://from-biology.tistory.com/47

 

[자격증] 머신러닝-딥러닝 (for AICE Associate)

머신러닝과 딥러닝 모델을 학습하고 결과를 확인하는전반적인 과정에 대한 코드 맛보기 !  데이터 준비 @ 필요한 라이브러리 임포트import numpy as npimport pandas as pdimport matplotlib.pyplot as plt@

from-biology.tistory.com