Sarvarbek13's picture
Add src pipeline code
2d2a96b
Raw
History Blame Contribute Delete
3.36 kB
import pandas as pd
from pathlib import Path
import sys
sys.path.append(str(Path(__file__).resolve().parents[3]))
from src.logger import get_logger
logger = get_logger("home_credit.loader")
ROOT_DIR = Path(__file__).resolve().parents[3]
RAW_DIR = ROOT_DIR / "data" / "raw" / "home_credit"
def load_application(split: str = "train") -> pd.DataFrame:
"""Load application train or test CSV."""
path = RAW_DIR / f"application_{split}.csv"
logger.info(f"Loading {path.name}...")
df = pd.read_csv(path)
logger.info(f" Shape : {df.shape}")
logger.info(f" Memory : {df.memory_usage(deep=True).sum() / 1024**2:.1f} MB")
if "TARGET" in df.columns:
logger.info(f" Default rate : {df['TARGET'].mean()*100:.2f}%")
logger.info(f" Imbalance : {(1 - df['TARGET'].mean()) / df['TARGET'].mean():.1f}:1")
else:
logger.info(" TARGET not present (test set β€” expected)")
return df
def load_bureau() -> pd.DataFrame:
"""Load bureau.csv β€” external credit history."""
path = RAW_DIR / "bureau.csv"
logger.info(f"Loading {path.name}...")
df = pd.read_csv(path)
logger.info(f" bureau shape : {df.shape}")
return df
def load_bureau_balance() -> pd.DataFrame:
"""Load bureau_balance.csv β€” monthly bureau status."""
path = RAW_DIR / "bureau_balance.csv"
logger.info(f"Loading {path.name}...")
df = pd.read_csv(path)
logger.info(f" bureau_balance shape : {df.shape}")
return df
def load_previous_application() -> pd.DataFrame:
"""Load previous_application.csv β€” prior loan applications."""
path = RAW_DIR / "previous_application.csv"
logger.info(f"Loading {path.name}...")
df = pd.read_csv(path)
logger.info(f" previous_application shape : {df.shape}")
return df
def load_pos_cash() -> pd.DataFrame:
"""Load POS_CASH_balance.csv β€” POS and cash loan monthly snapshots."""
path = RAW_DIR / "POS_CASH_balance.csv"
logger.info(f"Loading {path.name}...")
df = pd.read_csv(path)
logger.info(f" POS_CASH_balance shape : {df.shape}")
return df
def load_credit_card() -> pd.DataFrame:
"""Load credit_card_balance.csv β€” credit card monthly snapshots."""
path = RAW_DIR / "credit_card_balance.csv"
logger.info(f"Loading {path.name}...")
df = pd.read_csv(path)
logger.info(f" credit_card_balance shape : {df.shape}")
return df
def load_installments() -> pd.DataFrame:
"""Load installments_payments.csv β€” repayment history."""
path = RAW_DIR / "installments_payments.csv"
logger.info(f"Loading {path.name}...")
df = pd.read_csv(path)
logger.info(f" installments_payments shape : {df.shape}")
return df
def load_supplementary() -> dict:
"""Load all supplementary tables (bureau through installments).
Application is loaded separately via load_application()."""
logger.info("=" * 50)
logger.info("LOADING SUPPLEMENTARY TABLES")
tables = {
"bureau": load_bureau(),
"bureau_balance": load_bureau_balance(),
"previous_app": load_previous_application(),
"pos_cash": load_pos_cash(),
"credit_card": load_credit_card(),
"installments": load_installments(),
}
logger.info("ALL SUPPLEMENTARY TABLES LOADED")
logger.info("=" * 50)
return tables