Spaces:
Sleeping
Sleeping
| """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(), | |
| } | |