wolframko/pipes-lie-embargo-dominus
Betty Dota 2 Pro Matches Dataset 9,388 professional Dota 2 matches parsed from replay files with per-second game state snapshots and combat log events. Dataset Structure matches.parquet (9,388 rows) One row per match. Contains metadata, STRATZ player statistics, and draft data. Column Type Description match_id int64 Dota 2 match ID league_name string Tournament name league_tier string PROFESSIONAL, MAJOR, etc. duration_sec int64… See the full description on the dataset page: https://huggingface.co/datasets/wolframko/pipes-lie-embargo-dominus.
Betty Dota 2 Pro Matches Dataset
9,388 professional Dota 2 matches parsed from replay files with per-second game state snapshots and combat log events.
Dataset Structure
matches.parquet (9,388 rows)
One row per match. Contains metadata, STRATZ player statistics, and draft data.
ticks/ (189,120,930 rows)
One row per game-tick per hero. ~1,500 ticks per match x 10 heroes. Per-second snapshots of full game state.
events/ (295,810,843 rows)
One row per combat log event. Damage, kills, gold gains, XP, healing, purchases.
Statistics
- Matches: 9,388 professional games from 2025
- Ticks: 189,120,930 per-second hero state snapshots
- Events: 295,810,843 combat log entries
- Size: 5.97 GB compressed Parquet (from 103 GB JSON)
- Source: Valve replay files (.dem) parsed with manta + STRATZ API metadata
Usage
from datasets import load_dataset
# Load matches metadata
matches = load_dataset("wolframko/pipes-lie-embargo-dominus", data_files="matches.parquet", split="train")
# Load ticks (large - use streaming)
ticks = load_dataset("wolframko/pipes-lie-embargo-dominus", data_files="ticks/*.parquet", split="train", streaming=True)
# Load events
events = load_dataset("wolframko/pipes-lie-embargo-dominus", data_files="events/*.parquet", split="train", streaming=True)import pandas as pd
# Quick analysis with pandas
matches_df = pd.read_parquet("hf://datasets/wolframko/pipes-lie-embargo-dominus/matches.parquet")
print(f"Matches: {len(matches_df)}, Radiant winrate: {matches_df.radiant_win.mean():.1%}")Data Pipeline
- Fetch: Match IDs from STRATZ GraphQL API (pro leagues 2025)
- Download: Replay files (.dem.bz2) from Valve CDN
- Parse: Per-second hero states + combat log via manta (Go)
- Enrich: Player/team stats from STRATZ API
- Convert: JSON to Parquet with full validation
License
MIT
