

CRISP-DM
EDA와 CDA
- EDA(Exploratory Data Analysis) : 개별 데이터의 분포, 이상치 파악
- CDA(Confirmatory Data Analysis) : 통계적 분석 도구 사용
많은 데이터들을 시각화, 수치화를 통해 한 눈에 파악하는 방법
비지니스의 인사이트를 파악하는 것이 목표
요약된 정보가 표현되기 때문에 정보의 손실이 발생한다
import matplotlib.pyplot as plt
import seaborn as sns
plt.plot(data['temp'])
# 그래프 출력
plt.show()
plt.plot(data['x'], data['y'])
# x축의 값을 조정 (rotation = 각도)
plt.xticks(rotation = 30)
# 각 축에 레이블 출력
plt.xlabel('x')
plt.ylabel('y')
# 그래프 타이틀 출력
plt.title('Graph')
plt.show()
plt.plot(data['x'], data['y’],
color='green’,
linestyle='dotted’,
marker='o')
plt.show()
color = 'red', 'green', 'blue', 'r', 'g', 'b' 등
linestyle = 'solid', 'dashed', 'dashdot', '-', '--', '-.' 등
marker = '.', ',', 'o', 'v', 등
참고 : https://matplotlib.org/2.1.2/api/_as_gen/matplotlib.pyplot.plot.html
plt.plot(data['Date'], data['Ozone’]
, marker='o')
plt.plot(data['Date'], data['Temp’]
, marker='s')
plt.legend()
plt.grid()
plt.show()
차트를 겹쳐서 표현 가능
legend()를 통해 범례 출력
gird()를 통해 그리드 출력
df.plot(x = 'x', y = ['y1','y2']
, title = 'Graph’)
plt.show()
데이터프레임.plot() 함수를 사용하면 순쉽게 차트를 그릴 수 있다
plt.plot()를 그릴 때 지정해야 하는 설정이 기본적으로 제공
추가적인 옵션을 지정할 수 있다
참고 : https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.html
숫자로 요약하기
# 넘파이 함수 이용
np.mean(data['변수'])
np.median(data['변수'])
np.mode(data['변수'])
# 판다스의 메소드 이용
data['변수'].mead()
data['변수'].mdian()
data['변수'].mode()
df.describe() : 데이터 프레임의 숫자형 변수들에 대해 기초 통계량 출력
data.describe()
plt.hist(data.변수, bins = 30
, edgecolor = 'gray')
plt.xlabel('Fare')
plt.ylabel('Frequency')
plt.show()
bins : 구간 수
sns.kdeplot(data['변수'])
plt.show()
밀도함수 그래프 출력
plt.boxplot(data['변수'], vert = False)
plt.grid()
plt.show()
plt.boxplot()은 반드시 NaN을 제외 (sns에서는 자동으로 제외)
vert 옵션으로 가로(False) 세로(True)로 그래프를 그릴 수 있음

범주별 빈도수
data['변수'].value_counts()
범주별 비율
data['변수'].value_counts() / data.shape[0]
sns.countplot(titanic['data['변수']'])
plt.grid()
plt.show()
범주별 빈도수를 계산하고 bar plot으로 나타냄
전처리 3가지 요건
df.dropna(inplace=True)
결측치가 포함된 행 제거
df.fillna(value=None, method=None, axis=None, inplace=False,)
value : 결측치를 채울 값을 설정
method : 결측치를 채울 방식 설정('ffill', 'bfill'... 등)
참고 : https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.fillna.html
추정해서 채우기
컴퓨터가 이해할 수 있도록 범주형 데이터를 숫자려 변환
이를 가변수화 혹은 One-Hot-Encoding라고 함
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
X_train = encoder.fit_transform(X_train)
X_test = encoder.transform(X_test)
거리를 계산하는 알고리즘(KNN, SVM, K-mearns등)
범위가 큰 변수가 거리에 영향을 미치기 때문에 값의 범위를 조절한다