머신러닝(Machine Learning) 실전 탐색적 데이터 분석(EDA)

728x90
반응형

 

서론

 

데이터 분석의 세계에서, 이론과 실습은 중요한 기초를 마련해주지만, 실전에서의 데이터 처리는 그 자체로 별도의 도전이 될 수 있습니다. 데이터는 '실제 세계'의 복잡성을 반영하기 때문에, 이론적인 배경 지식만으로는 충분하지 않을 때가 많습니다. 이런 상황에서는 탐색적 데이터 분석(EDA)이 매우 유용한 도구가 될 수 있습니다.

 

머신러닝(Machine Learning) 실전 탐색적 데이터 분석(EDA) 글에서는 이전에 배운 EDA의 기본적인 개념과 실습을 바탕으로, 실전에서의 데이터 분석에 직면할 때 어떻게 EDA를 활용할 수 있는지에 대해 알아보겠습니다. 복잡하고 어려운 현실 세계의 데이터에 직면했을 때, 우리는 어떻게 아이디어를 찾아내고, 어떤 방향으로 분석을 진행해야 하는지에 대한 통찰을 얻을 수 있을 것입니다. 이를 위해 Python의 pandas, matplotlib, seaborn 라이브러리를 활용한 실전 EDA 기법에 초점을 맞추어 설명하겠습니다.

 

EDA(Exploratory Data Analysis, 탐색적 데이터 분석)

 

는 데이터를 파악하는 데 필요한 여러가지 방법들을 포함하고 있습니다. Python에서는 주로 pandas, matplotlib, seaborn 등의 라이브러리를 활용합니다. 여기서는 pandas와 matplotlib, seaborn을 사용한 EDA 코드에 대해 설명드리겠습니다.

1. 데이터 불러오기와 확인

 

: pandas 라이브러리를 사용하여 데이터를 불러오고, 기본적인 정보를 확인할 수 있습니다.

import pandas as pd

df = pd.read_csv('file.csv')  # CSV 파일 불러오기
df.head()  # 처음 5행 보기
df.tail()  # 마지막 5행 보기


2. 데이터 정보 확인

 

: 데이터의 크기, 열의 이름, 각 열의 데이터 타입 등을 확인할 수 있습니다.

df.shape  # 데이터의 행과 열의 수 확인
df.columns  # 열 이름 확인
df.info()  # 각 열의 데이터 타입과 null이 아닌 값의 수 확인
df.describe()  # 수치형 열의 기술통계량 확인 (평균, 표준편차, 최소값, 중앙값, 최대값 등)


3. 결측치 확인

 

: 데이터에 결측치가 있는지 확인할 수 있습니다.

df.isnull().sum()  # 각 열의 결측치 개수 확인


4. 데이터 분포 확인

 

: matplotlib 또는 seaborn을 사용하여 데이터의 분포를 시각화할 수 있습니다.

import matplotlib.pyplot as plt
import seaborn as sns
plt.hist(df['column_name'])  # 히스토그램으로 분포 확인
sns.boxplot(x='column_name', data=df)  # 박스플롯으로 분포 확인


5. 상관관계 확인

 

: 두 변수간의 상관관계를 확인할 수 있습니다.

df.corr()  # 변수간의 상관계수 확인
sns.heatmap(df.corr())  # 히트맵으로 상관계수 시각화


6. 범주형 데이터 확인

 

: 범주형 데이터의 각 범주별 개수를 확인할 수 있습니다.

df['column_name'].value_counts()  # 각 범주의 개수 확인
sns.countplot(x='column_name', data=df)  # 각 범주의 개수를 막대그래프로 시각화


7. 데이터 그룹화

 

: 특정 열을 기준으로 데이터를 그룹화하고, 그룹별 통계량을 계산할 수 있습니다.

df.groupby('column_name').mean()  # 특정 열을 기준으로 그룹화하고, 그룹별 평균 계산


위와 같은 코드들을 통해 EDA를 수행하고, 데이터에 대한 통찰을 얻을 수 있습니다. 이와 같이 EDA는 데이터를 이해하는 데 큰 도움을 주며, 이후 데이터 전처리 및 모델링 방향을 결정하는 데 필요한 중요한 단계입니다.

 

예시1

 

탐색적 데이터 분석(EDA)의 필요성과 활용 예시를 설명하기 위해 캐글(Kaggle)에서 제공하는 '타이타닉 생존자' 데이터셋을 사용하겠습니다. 이 데이터셋은 타이타닉호의 승객 정보와 생존 여부가 담겨 있어, 데이터 분석의 기본적인 과정을 쉽게 이해할 수 있게 해줍니다. 먼저, pandas 라이브러리를 사용하여 데이터를 불러옵니다:

 

import pandas as pd

df = pd.read_csv('titanic.csv')

 

데이터를 불러온 후에는 가장 먼저 데이터의 기본적인 정보를 확인합니다.

 

df.info()

 

이를 통해 각 열의 데이터 타입과 null이 아닌 값의 수를 확인할 수 있습니다. 예를 들어, 'Age' 열에는 결측치가 많이 있음을 알 수 있습니다. 이는 이후 데이터 전처리 단계에서 결측치를 어떻게 처리할지 결정하는 데 도움이 됩니다.

 

다음으로, seaborn 라이브러리를 사용하여 '성별(Sex)'과 '생존(Survived)' 간의 관계를 시각화해봅니다.

 

import seaborn as sns 

sns.countplot(x='Sex', hue='Survived', data=df)

코드 실행 시

이를 통해 여성 승객이 남성 승객에 비해 생존 확률이 훨씬 높았음을 알 수 있습니다. 이러한 정보는 '성별'이 생존 여부를 예측하는 데 중요한 변수일 수 있음을 알려줍니다.

 

마지막으로, pandas의 `groupby` 함수를 사용하여 'Pclass(티켓 클래스)'와 'Survived' 간의 관계를 확인해봅니다.

 

python df.groupby('Pclass')['Survived'].mean()

 

이를 통해 1등급 티켓을 가진 승객이 생존 확률이 가장 높았음을 알 수 있습니다. 이는 'Pclass' 역시 생존 여부를 예측하는 데 중요한 변수일 수 있음을 알려줍니다. 이처럼 EDA는 데이터에 숨겨진 패턴을 찾아내고, 그 패턴이 결과에 어떤 영향을 미치는지 이해하는 데 도움을 줍니다. 이를 바탕으로 데이터 전처리 방향을 설정하거나, 모델링을 할 때 어떤 변수를 사용할지 결정할 수 있습니다. 따라서 EDA는 데이터 분석 과정에서 매우 중요한 단계입니다.

 

예시2

 

이번에는 캐글에서 제공하는 'Boston Housing Dataset'을 이용해 EDA의 필요성과 활용 예시를 설명하겠습니다. 이 데이터셋은 보스턴 지역의 주택 가격과 관련된 정보를 담고 있습니다.

 

우선, pandas 라이브러리를 사용하여 데이터를 불러옵니다.

 

import pandas as pd

df = pd.read_csv('boston_housing.csv')

 

데이터를 불러온 후에는 가장 먼저 데이터의 기본적인 정보를 확인합니다.

 

python df.info()

 

이를 통해 각 열의 데이터 타입과 null이 아닌 값의 수를 확인할 수 있습니다. 이를 통해 각 열에 결측치가 없음을 확인할 수 있습니다.

 

matplotlib를 사용하여 'RM(방의 개수)'과 'MEDV(중간 주택 가격)'의 관계를 시각화해봅니다.

 

import matplotlib.pyplot as plt

plt.scatter(df['RM'], df['MEDV'])
plt.xlabel('Number of Rooms')
plt.ylabel('Median House Price')
plt.title('Relation between RM and MEDV')
plt.show()

 

코드 실행 시 그래프

 

이를 통해 방의 개수가 많을수록 주택 가격이 상승하는 경향을 확인할 수 있습니다. 이 정보는 'RM'이 주택 가격을 예측하는데 중요한 변수일 수 있음을 알려줍니다.

 

마지막으로, seaborn 라이브러리를 사용하여 모든 변수들 간의 상관관계를 확인합니다.

 

import seaborn as sns

plt.figure(figsize=(10,10))

sns.heatmap(df.corr(), annot=True, cmap='coolwarm')

 

코드 실행 시 상관관계 그래프

 

이를 통해 각 변수들 간의 상관관계를 한 눈에 확인할 수 있습니다. 이 정보는 변수 선택이나 다중 공선성 문제를 해결하는데 도움이 됩니다. 이처럼 EDA는 데이터를 이해하고, 분석 방향을 설정하는 데 중요한 도구입니다. 이를 통해 데이터에 숨겨진 패턴을 찾아내고, 이후 모델링 단계에서 어떤 변수를 사용할지 결정할 수 있습니다.

 

결론

 

탐색적 데이터 분석(EDA)는 데이터 분석의 첫 단계로, 데이터를 깊게 이해하는 데 중요한 역할을 합니다. 이번 분석에서 사용한 'Boston Housing Dataset'은 캐글에서 제공하는 보스턴 지역의 주택 가격과 관련된 데이터셋입니다. 우리는 데이터의 기본적인 정보를 확인하고, 변수들 간의 관계를 시각화하는 등의 방법으로 데이터를 탐색하였습니다. 이 과정에서 'RM(방의 개수)'이 'MEDV(중간 주택 가격)'에 큰 영향을 미치는 것을 확인할 수 있었습니다. 또한, 모든 변수들 간의 상관관계를 한 눈에 볼 수 있는 heatmap을 통해 변수 선택이나 다중 공선성 문제를 해결하는 데 도움이 되었습니다.

 

이처럼 EDA는 데이터에 숨겨진 패턴을 찾아내고, 이후 모델링 단계에서 어떤 변수를 사용할지 결정하는 데 중요한 도구입니다. 또한, 데이터의 노이즈나 이상치, 결측치 등을 발견하고 이를 적절히 처리하는 데도 중요한 역할을 합니다. 결론적으로, EDA는 데이터 분석의 성공을 위해 반드시 거쳐야 하는 과정으로, 분석자가 데이터를 잘 이해하고 이를 바탕으로 효과적인 모델을 만들어내는 데 큰 도움을 줍니다. 이번 분석을 통해 EDA의 중요성을 다시 한번 확인할 수 있었습니다. 이 분석이 EDA에 대해 공부하는 분들에게 조금이나마 도움이 되었기를 바랍니다.

반응형