Amit-kr26's picture
HF Spaces deployment
c9f187d
Raw
History Blame Contribute Delete
2.51 kB
"""Extract raw Olist CSV files into DataFrames."""
from pathlib import Path
import pandas as pd
class OlistExtractor:
"""Reads each Olist CSV file from the raw data directory."""
CSV_MAP = {
"orders": "olist_orders_dataset.csv",
"order_items": "olist_order_items_dataset.csv",
"order_payments": "olist_order_payments_dataset.csv",
"order_reviews": "olist_order_reviews_dataset.csv",
"customers": "olist_customers_dataset.csv",
"sellers": "olist_sellers_dataset.csv",
"products": "olist_products_dataset.csv",
"category_translations": "product_category_name_translation.csv",
"geolocation": "olist_geolocation_dataset.csv",
}
def __init__(self, raw_dir: str | Path) -> None:
self.raw_dir = Path(raw_dir)
def _read(self, key: str, **kwargs) -> pd.DataFrame:
path = self.raw_dir / self.CSV_MAP[key]
if not path.exists():
raise FileNotFoundError(f"Expected CSV not found: {path}")
return pd.read_csv(path, dtype=str, keep_default_na=False, **kwargs)
def extract_orders(self) -> pd.DataFrame:
return self._read("orders")
def extract_order_items(self) -> pd.DataFrame:
return self._read("order_items")
def extract_order_payments(self) -> pd.DataFrame:
return self._read("order_payments")
def extract_order_reviews(self) -> pd.DataFrame:
return self._read("order_reviews")
def extract_customers(self) -> pd.DataFrame:
return self._read("customers")
def extract_sellers(self) -> pd.DataFrame:
return self._read("sellers")
def extract_products(self) -> pd.DataFrame:
return self._read("products")
def extract_category_translations(self) -> pd.DataFrame:
return self._read("category_translations")
def extract_geolocation(self) -> pd.DataFrame:
return self._read("geolocation")
def extract_all(self) -> dict[str, pd.DataFrame]:
return {
"orders": self.extract_orders(),
"order_items": self.extract_order_items(),
"order_payments": self.extract_order_payments(),
"order_reviews": self.extract_order_reviews(),
"customers": self.extract_customers(),
"sellers": self.extract_sellers(),
"products": self.extract_products(),
"category_translations": self.extract_category_translations(),
"geolocation": self.extract_geolocation(),
}