Pandas를 사용하여 타이타닉 데이터를 불러오고 기본적인 전처리를 수행합니다. (이전 Seaborn 예제와 데이터 준비 과정은 동일)
예시 코드: (데이터 로딩 및 전처리)
import pandas as pd
import numpy as np
import plotly.express as px
# Kaggle의 타이타닉 데이터셋 URL (또는 로컬 경로)
# 실제 URL 대신 Plotly Express의 내장 데이터로 일부 대체하거나,
# 사용자가 직접 데이터를 로드할 수 있도록 안내할 수 있습니다.
# 여기서는 이전과 동일하게 URL을 사용하되, Plotly Express는 웹 접근에 제약이 있을 수 있으므로
# 로컬 파일로 저장 후 로드하는 것을 권장합니다.
# 여기서는 px.data.tips() 처럼 직접 로드할 수 있는 데이터가 아니므로 pandas로 로드합니다.
try:
df = pd.read_csv('https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv')
except Exception as e:
print(f"Error loading data: {e}. Using a fallback sample.")
data_dict = {'Survived': [0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1],
'Pclass': [3, 1, 3, 1, 3, 3, 1, 3, 3, 2, 2, 1],
'Sex': ['male', 'female', 'female', 'female', 'male', 'male', 'male', 'male', 'female', 'female', 'male', 'female'],
'Age': [22, 38, 26, 35, 35, np.nan, 54, 2, 27, 14, 30, 58],
'Fare': [7.25,71.28,7.92,53.1,8.05,8.45,51.86,21.07,11.13,30.07, 13.0, 26.55],
'Embarked': ['S', 'C', 'S', 'S', 'S', 'Q', 'S', 'S', 'S', 'C', 'S', 'S'],
'SibSp': [1,1,0,1,0,0,0,3,0,1,0,0], 'Parch': [0,0,0,0,0,0,0,1,2,0,0,0]}
df = pd.DataFrame(data_dict)
# Age 결측치를 평균으로 채우기
df['Age'].fillna(df['Age().mean(), inplace=True)
# Embarked 결측치를 최빈값으로 채우기
if 'Embarked' in df.columns and df['Embarked'].isnull().any():
df['Embarked'].fillna(df['Embarked'].mode()[0], inplace=True)
# Survived를 문자열로 변환하여 범주형으로 명확히 인식시키기 (Plotly 색상 구분에 용이)
df['Survived_cat'] = df['Survived'].map({0: 'Died', 1: 'Survived'})
print("--- 데이터 준비 완료 (처음 3개 행) ---")
print(df.head(3))
예상 결과:
--- 데이터 준비 완료 (처음 3개 행) ---
Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked Survived_cat
0 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S Died
1 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C Survived
2 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S Survived
(실제 데이터 로드 결과에 따라 다를 수 있으며, 'Survived_cat' 열이 추가됩니다.)