-
Pandas를 활용한 실전 데이터 분석 예제pandas 2025. 1. 30. 22:34728x90
이번 포스팅에서는 실제 데이터셋을 활용하여 데이터 분석을 진행해보겠습니다.
예제로 타이타닉(Titanic) 데이터셋을 사용하여 생존자 분석을 수행하겠습니다.
1. 데이터 불러오기
타이타닉 데이터는 Seaborn 라이브러리에서 제공하는 데이터셋 중 하나입니다.
import pandas as pd import seaborn as sns # 타이타닉 데이터셋 불러오기 df = sns.load_dataset("titanic") # 데이터 확인 print(df.head()) # 상위 5개 행 출력 print(df.info()) # 데이터 정보 확인
출력 결과:
survived pclass sex age sibsp parch fare embarked class ... 0 0 3 male 22.0 1 0 7.2500 S Third ... 1 1 1 female 38.0 1 0 71.2833 C First ...
- survived: 생존 여부 (0 = 사망, 1 = 생존)
- pclass: 객실 등급 (1 = 일등석, 2 = 이등석, 3 = 삼등석)
- sex: 성별
- age: 나이
- sibsp: 함께 탑승한 형제/배우자 수
- parch: 함께 탑승한 부모/자녀 수
- fare: 요금
- embarked: 탑승 항구 (C = Cherbourg, Q = Queenstown, S = Southampton)
2. 데이터 전처리
(1) 결측값 확인 및 처리
print(df.isnull().sum()) # 결측값 개수 확인
age, embarked 등에 결측값이 존재하는 경우, 이를 채워야 합니다.
df['age'].fillna(df['age'].median(), inplace=True) # 나이의 결측값을 중앙값으로 채우기 df['embarked'].fillna(df['embarked'].mode()[0], inplace=True) # 탑승 항구 결측값을 최빈값으로 채우기
(2) 불필요한 열 제거
df.drop(columns=['deck', 'alive'], inplace=True) # 필요 없는 열 제거
(3) 범주형 데이터를 숫자로 변환
Pandas의 map()과 get_dummies()를 활용하여 범주형 데이터를 숫자로 변환할 수 있습니다.
df['sex'] = df['sex'].map({'male': 0, 'female': 1}) # 성별을 숫자로 변환 df = pd.get_dummies(df, columns=['embarked'], drop_first=True) # 원-핫 인코딩 적용
3. 데이터 분석 및 시각화
(1) 생존률 분석
print(df['survived'].value_counts(normalize=True) * 100) # 생존률 계산
(2) 객실 등급에 따른 생존률
import matplotlib.pyplot as plt import seaborn as sns sns.barplot(x='pclass', y='survived', data=df) plt.xlabel('객실 등급') plt.ylabel('생존률') plt.title('객실 등급에 따른 생존률') plt.show()
(3) 성별에 따른 생존률
sns.barplot(x='sex', y='survived', data=df) plt.xlabel('성별 (0: 남성, 1: 여성)') plt.ylabel('생존률') plt.title('성별에 따른 생존률') plt.show()
여성 승객이 남성보다 생존 확률이 높은 것을 확인할 수 있습니다.
(4) 나이 분포 및 생존자 분석
sns.histplot(df['age'], bins=30, kde=True, hue=df['survived']) plt.xlabel('나이') plt.title('나이에 따른 생존자 분포') plt.show()
4. 상관관계 분석
데이터 간의 상관관계를 분석하면 어떤 변수가 생존에 영향을 미치는지 알 수 있습니다.
import seaborn as sns corr_matrix = df.corr() sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt='.2f') plt.title('변수 간 상관관계') plt.show()
- 생존(survived)과 가장 높은 상관관계를 보이는 변수 확인
- pclass, sex, fare 등이 생존에 영향을 미치는 주요 변수임을 알 수 있음
5. 마무리
이번 포스팅에서는 타이타닉 데이터셋을 활용하여 데이터 분석을 진행했습니다.
다음 글에서는 Pandas와 Scikit-Learn을 활용한 머신러닝 모델 만들기에 대해 다룰 예정이니 기대해 주세요! 😊728x90'pandas' 카테고리의 다른 글
다양한 머신러닝 알고리즘 비교 및 하이퍼파라미터 튜닝 (0) 2025.01.31 Pandas와 Scikit-Learn을 활용한 머신러닝 모델 만들기 (0) 2025.01.30 Pandas를 활용한 데이터 분석 및 시각화 (0) 2025.01.30 Pandas를 활용한 데이터 전처리 및 정리 (0) 2025.01.30 Pandas로 데이터 불러오기 및 저장하기 (0) 2025.01.30