본문 바로가기
Python/빅데이터

빅데이터 예제 : 타이타닉 데이터 로 보는 나이와 성별에 따른 생존율

by P_eli 2024. 9. 24.
728x90
반응형

Python의 Pandas, NumPy, Matplotlib, Seaborn 라이브러리를 활용해 데이터를 분석하고, koreanize_matplotlib를 통해 그래프에 한글 폰트를 적용합니다.

1. 라이브러리 임포트

우선 필요한 라이브러리를 임포트합니다.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import koreanize_matplotlib
import seaborn as sns

 

2. 데이터셋 로드

타이타닉 데이터셋을 로드합니다. 이 데이터셋은 타이타닉호에서의 승객 정보와 생존 여부를 포함하고 있습니다.

url = 'https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv'
data = pd.read_csv(url)

 

 

3. 데이터 확인

데이터의 상위 5행을 출력하여 데이터 구조를 확인합니다.

print("데이터 상위 5행:")
print(data.head())

 

데이터 정보와 결측치 개수도 확인합니다.

 

print("\n데이터 정보:")
print(data.info())

print("\n결측치 개수 확인:")
print(data.isnull().sum())

 

4. 결측치 처리

나이(Age) 열의 결측치를 나이의 평균으로 채웁니다. 이는 데이터 분석의 기본적인 전처리 과정입니다.

data['Age'].fillna(data['Age'].mean(), inplace=True)

 

5. 기본 통계 정보 확인

describe() 함수를 사용하여 수치형 데이터의 기본 통계 정보를 확인합니다.

print("\n기본 통계 정보:")
print(data.describe())

 

6. 나이에 따른 생존율 시각화

나이에 따른 생존율을 시각화합니다. hue 매개변수를 사용하여 생존 여부에 따라 색상을 구분합니다.

plt.figure(figsize=(10,6))
sns.histplot(data=data, x='Age', hue='Survived', multiple='stack', palette='Set2')
plt.title('나이에 따른 생존율 분포')
plt.xlabel('나이')
plt.ylabel('인원 수')
plt.show()

 

7. 성별에 따른 생존율 시각화

성별에 따른 생존율을 시각화합니다. countplot을 사용하여 성별에 따른 생존 여부를 시각적으로 나타냅니다.

plt.figure(figsize=(8,6))
sns.countplot(data=data, x='Sex', hue='Survived', palette='Set1')
plt.title('성별에 따른 생존율')
plt.xlabel('성별')
plt.ylabel('인원 수')
plt.show()

 

8. 상관관계 분석

데이터의 상관관계를 분석합니다. corr() 함수를 사용하여 상관 행렬을 생성합니다.

corr_matrix = data.corr()
print("\n상관 행렬:")
print(corr_matrix)

 

9. 상관 행렬 히트맵 시각화

상관 행렬을 히트맵으로 시각화하여 변수 간의 관계를 한눈에 볼 수 있도록 합니다.

plt.figure(figsize=(10,8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', linewidths=0.5)
plt.title('상관 행렬')
plt.show()

 

 

 

 

타이타닉 데이터셋을 통해 나이와 성별에 따른 생존율을 분석하고, 시각화하는 방법을 살펴보았습니다.

이러한 분석을 통해 데이터의 패턴을 이해하고, 의사 결정에 활용할 수 있습니다.

데이터 분석의 기초를 다지기 위해 반복적으로 실습해보시길 권장합니다.

 

전체코드

# 라이브러리 임포트
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import koreanize_matplotlib
import seaborn as sns

# 데이터셋 로드 (예: 타이타닉 데이터)
url = 'https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv'
data = pd.read_csv(url)

# 데이터 상위 5행 출력 (데이터 확인)
print("데이터 상위 5행:")
print(data.head())

# 데이터 기본 정보 확인
print("\n데이터 정보:")
print(data.info())

# 결측치 확인
print("\n결측치 개수 확인:")
print(data.isnull().sum())

# 나이(Age) 열의 결측치를 나이의 평균으로 채우기
data['Age'].fillna(data['Age'].mean(), inplace=True)

# 간단한 통계 정보 확인 (describe() 함수 사용)
print("\n기본 통계 정보:")
print(data.describe())

# 나이에 따른 생존율 시각화
plt.figure(figsize=(10,6))
sns.histplot(data=data, x='Age', hue='Survived', multiple='stack', palette='Set2')
plt.title('나이에 따른 생존율 분포')
plt.xlabel('나이')
plt.ylabel('인원 수')
plt.show()

# 성별에 따른 생존율 시각화
plt.figure(figsize=(8,6))
sns.countplot(data=data, x='Sex', hue='Survived', palette='Set1')
plt.title('성별에 따른 생존율')
plt.xlabel('성별')
plt.ylabel('인원 수')
plt.show()

# 상관관계 분석 (상관 행렬)
corr_matrix = data.corr()
print("\n상관 행렬:")
print(corr_matrix)

# 상관 행렬 히트맵 시각화
plt.figure(figsize=(10,8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', linewidths=0.5)
plt.title('상관 행렬')
plt.show()
728x90
반응형