Skip to content

Collect Player Bios

Collect the historical player index and one season bio table:

uv run nba-fetch-player-bios 2025-26

This is a synchronous two-request operation. Prefect is unnecessary because the workflow does not fan out by player.

Outputs

data/raw/playerindex/2025-26.json
data/raw/playerindex/2025-26.meta.json
data/raw/leaguedashplayerbiostats/2025-26/regular.json
data/raw/leaguedashplayerbiostats/2025-26/regular.meta.json
data/catalog/players.parquet
data/curated/player_seasons/2025-26/regular/_manifest.json
data/curated/player_seasons/2025-26/regular/part-00000.parquet

Validated caches are reused by default. Bypass both with:

uv run nba-fetch-player-bios 2025-26 --refresh

The player catalog is a complete replacement from the historical index. The player-season partition is atomically published through a validated temporary directory and replacement.

Other season types

The CLI accepts:

uv run nba-fetch-player-bios 2025-26 --season-type playoffs

Supported values are regular, playoffs, preseason, and all_star. The historical player catalog remains common; each season type has an independent raw response and normalized partition.

Read the data

import pandas as pd

players = pd.read_parquet("data/catalog/players.parquet")
bios = pd.read_parquet(
    "data/curated/player_seasons/2025-26/regular"
)

Player IDs, team IDs, height, weight, and numeric draft values use nullable 64-bit integers. The part is self-contained and retains explicit season fields.

See Player bios for source mapping, missing-value semantics, and the same-season leakage policy.