
프로젝트의 진행으로 데이터 분석을 진행하기 앞서 기본적인 분석 과정을 정리해 보고자 한다.
Python과 pandas, scikit-learn 등의 라이브러리를 사용하는 것을 기준으로 작성하였다.
1. 라이브러리 불러오기
먼저 데이터 분석을 시작하기 전에 필요한 라이브러리를 불러와야 한다. 데이터 분석에는 pandas, numpy, matplotlib, seaborn, scikit-learn 등이 주로 사용된다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
2. 데이터 불러오기
데이터를 불러와서 DataFrame 형태로 저장한다. 여기서는 pandas의 read_csv 함수를 사용하여 CSV 파일을 불러온다.
df = pd.read_csv('data.csv')
3. EDA(Exploratory Data Analysis, 탐색적 데이터 분석)
데이터를 확인하고 데이터의 분포, 결측치, 이상치 등을 파악한다.
# 데이터의 처음 5행을 출력
print(df.head())
# 데이터 타입 파악
print(df.info())
# 데이터 row,column 파악
df.shape()
# 데이터의 기술 통계량 확인
print(df.describe())
# 결측치 확인
print(df.isnull().sum())
# 시각화를 통한 데이터 분포 확인
sns.pairplot(df)
plt.show()
4. 데이터 전처리
결측치 처리, 이상치 처리, 데이터 표준화/정규화 등 데이터를 모델링에 적합한 형태로 만든다.
# 결측치 대체 예시
df.fillna(df.mean(), inplace=True)
# 만약 특정 칼럼의 값만 대체하고 싶으면
df['A'].fillna(df['A'].mean(), inplace=True)
# 결측치 삭제 예시 axis=1 행, axis=0 열
df.drop(axis=1)
# 데이터 표준화 예시
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)
5. 피처 엔지니어링
모델의 성능을 향상시키기 위해 기존 변수를 조합하거나 새로운 변수를 생성한다.
# 새로운 피처 생성 예시
df['new_feature'] = df['feature1'] + df['feature2']
6. 모델링
선택한 알고리즘으로 모델을 학습시키고 평가한다. 여기서는 선형 회귀 모델을 예시로 들고자 한다.
X = df.drop('target', axis=1)
y = df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LinearRegression()
model.fit(X_train, y_train)
# 모델 성능 평가
print(model.score(X_test, y_test))
7. csv 파일로 저장
모델을 사용하여 예측한 결과를 CSV 파일로 저장한다.
predictions = model.predict(X_test)
output = pd.DataFrame({'Id': X_test.index, 'Prediction': predictions})
output.to_csv('predictions.csv', index=False)
'IT > 데이터분석 도전하기' 카테고리의 다른 글
| [상관계수] 피어슨 상관계수와 스피어만 상관계수의 이해: 언제 어떤 것을 사용해야 할까? (0) | 2024.02.20 |
|---|---|
| [다중공선성] 다중공선성 문제와 해결 방법 (0) | 2024.02.16 |
| [인코딩] 원핫 인코딩(One-Hot Encoding) / 라벨 인코딩(Label Encoding) (0) | 2024.01.30 |
| [데이터 정제] 데이터 정규화(Normalization) 및 표준화(Standardization) (0) | 2024.01.29 |
| [변수] 독립변수와 종속변수가 무엇일까? (0) | 2024.01.27 |