Spaces:
Running
Running
File size: 1,496 Bytes
51dde21 5fcca14 51dde21 213c9db 51dde21 213c9db 51dde21 213c9db 51dde21 213c9db 51dde21 213c9db 51dde21 213c9db 5fcca14 51dde21 | 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 | """Data loading, lazy frame, and data-derived input constants."""
from pathlib import Path
from string import Template
import polars as pl
BASE_DIR = Path(__file__).resolve().parent.parent
INTRO_MD: str = (BASE_DIR / "md_files" / "intro.md").read_text(encoding="utf-8")
_ABOUT_TEMPLATE: str = (BASE_DIR / "md_files" / "about.md").read_text(encoding="utf-8")
DATA_PATH = BASE_DIR / "data" / "scb_months_lvl1.parquet"
lf = (
pl.read_parquet(DATA_PATH)
.rename({"sex": "gender"})
.with_columns(pl.col("month").str.strptime(pl.Date, "%Y-%b").alias("month_date"))
.lazy()
)
# Query metadata in parallel using collect_all
lf_occs = lf.select(pl.col("occupation").unique().sort())
lf_genders = lf.select(pl.col("gender").unique().sort())
lf_years = lf.select(pl.col("year").unique().sort())
lf_months = lf.select(["month", "month_date"]).unique().sort("month_date")
_meta_dfs = pl.collect_all([lf_occs, lf_genders, lf_years, lf_months])
OCCS: list[str] = _meta_dfs[0].to_series().to_list()
OCC_CHOICES: dict[str, str] = {o: o for o in OCCS}
GENDERS: list[str] = _meta_dfs[1].to_series().to_list()
YEARS: list[int] = _meta_dfs[2].to_series().to_list()
_months_sorted = _meta_dfs[3]
MONTH_EARLIEST: str = _months_sorted.head(1)["month"][0]
MONTH_LATEST: str = _months_sorted.tail(1)["month"][0]
YEAR_MIN: int = min(YEARS)
YEAR_MAX: int = max(YEARS)
ABOUT_MD: str = Template(_ABOUT_TEMPLATE).safe_substitute(
MONTH_EARLIEST=MONTH_EARLIEST,
MONTH_LATEST=MONTH_LATEST,
)
|