본문 바로가기
[업무 지식]/Python

[기본 탐색] 기본 데이터 확인 코드

by 에디터 윤슬 2025. 1. 8.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import StandardScaler

# 1. 데이터 로드
data = {df}.copy()
print("Data Shape:", data.shape)

# 2. 데이터 기본 정보 확인
print("\n=== Head of the Data ===")
print(data.head())
print("\n=== Data Info ===")
print(data.info())
print("\n=== Basic Statistics ===")
print(data.describe())

# 3. 결측치 탐색 및 처리
print("\n=== Missing Values ===")
print(data.isnull().sum())

# 결측치 시각화
plt.figure(figsize=(10, 6))
sns.heatmap(data.isnull(), cbar=False, cmap='viridis', linewidths=0.5)
plt.title("Missing Data Heatmap")
plt.show()

# 결측치 처리 예시
data.fillna(method='ffill', inplace=True)

# 4. 데이터 분포 확인
print("\n=== Unique Values Per Column ===")
print(data.nunique())

# 수치형 데이터 분포 (히스토그램)
data.hist(bins=30, figsize=(15, 10), color='teal', edgecolor='black')
plt.suptitle("Numeric Columns Distribution", fontsize=16)
plt.show()

# KDE 플롯으로 분포 확인
for column in data.select_dtypes(include=['float64', 'int64']).columns:
    plt.figure(figsize=(10, 5))
    sns.kdeplot(data[column], fill=True, color='skyblue')
    plt.title(f"KDE Plot for {column}")
    plt.show()

# 5. 이상치 탐색
numeric_columns = data.select_dtypes(include=['float64', 'int64']).columns
for column in numeric_columns:
    plt.figure(figsize=(10, 5))
    sns.boxplot(data[column], color='coral')
    plt.title(f"Boxplot for {column}")
    plt.show()

# 6. 상관관계 분석
correlation_matrix = data.corr()
plt.figure(figsize=(12, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=".2f", linewidths=0.5)
plt.title("Correlation Matrix")
plt.show()

# 7. 범주형 데이터 탐색
categorical_columns = data.select_dtypes(include='object').columns
for column in categorical_columns:
    plt.figure(figsize=(12, 6))
    sns.countplot(x=data[column], order=data[column].value_counts().index, palette='viridis')
    plt.title(f"Value Counts for {column}")
    plt.xticks(rotation=45)
    plt.show()

# 8. 수치형 데이터 간 관계 탐색 (Pairplot)
sns.pairplot(data.select_dtypes(include=['float64', 'int64']), diag_kind="kde", corner=True)
plt.suptitle("Pairplot of Numeric Features", y=1.02, fontsize=16)
plt.show()

# 9. 수치형 변수와 범주형 변수 간 관계 탐색
for cat_col in categorical_columns:
    for num_col in numeric_columns:
        plt.figure(figsize=(12, 6))
        sns.boxplot(x=data[cat_col], y=data[num_col], palette='coolwarm')
        plt.title(f"{num_col} Distribution by {cat_col}")
        plt.xticks(rotation=45)
        plt.show()