Spaces:
Sleeping
Sleeping
File size: 1,450 Bytes
2d2a96b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 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("ieee_cis.loader")
ROOT_DIR = Path(__file__).resolve().parents[3]
RAW_DIR = ROOT_DIR / "data" / "raw" / "ieee_cis"
def load_transaction(split: str = "train") -> pd.DataFrame:
path = RAW_DIR / f"{split}_transaction.csv"
logger.info(f"Loading {path.name}...")
df = pd.read_csv(path)
logger.info(f" {split}_transaction shape: {df.shape}")
return df
def load_identity(split: str = "train") -> pd.DataFrame:
path = RAW_DIR / f"{split}_identity.csv"
logger.info(f"Loading {path.name}...")
df = pd.read_csv(path)
logger.info(f" {split}_identity shape: {df.shape}")
return df
def load_and_merge(split: str = "train") -> pd.DataFrame:
logger.info("=" * 50)
logger.info(f"LOADING & MERGING: {split}")
txn = load_transaction(split)
idn = load_identity(split)
df = txn.merge(idn, on="TransactionID", how="left")
logger.info(f" Merged shape : {df.shape}")
logger.info(f" Memory usage : {df.memory_usage(deep=True).sum() / 1024**2:.1f} MB")
if "isFraud" in df.columns:
logger.info(f" Fraud rate : {df['isFraud'].mean()*100:.2f}%")
else:
logger.info(f" isFraud column not present (test set — expected)")
logger.info("LOADING COMPLETE")
logger.info("=" * 50)
return df |