A full-featured Streamlit analytics dashboard exploring global video game sales from 1980 to 2016 across platforms, regions, genres, and review scores. Sprint 5 escalates from Sprint 4's univariate tests to multivariate analysis — linear regression, correlation matrices, cross-regional breakdowns, and platform lifecycle modeling.
The dashboard models a complete market analysis: Who sells the most? Where? For how long? Do reviews drive sales?
- Searchable table of total worldwide sales per title (NA + EU + JP + Other)
- Filters live as you type — no page reload
| Analysis | Description |
|---|---|
| Histogram | Games released per year, 1980–2016 |
| Time series (platform) | Sales trajectory of each platform over its lifecycle |
| Scatter (platform slope) | Linear regression slope of platform sales trend via scipy.stats.linregress |
| Box plot | Global sales distribution per platform — outlier detection |
- Stacked bar: NA / EU / JP / Other sales by platform
- Interactive region selector → top 5 platforms and top 5 genres per region
- ESRB rating vs. cumulative regional sales
| Metric | Method |
|---|---|
| Critic score vs. sales | Seaborn scatter + OLS regression line |
| User score vs. sales | Seaborn scatter + OLS regression line |
| R² comparison | Critic reviews explain more variance in sales than user reviews |
Pearson correlation heatmap across: NA sales, EU sales, JP sales, other sales, total sales, user score, critic score.
| Test | H₀ | Method | Result |
|---|---|---|---|
| Xbox One vs. PC user ratings | Mean ratings are equal | Independent two-sample t-test (scipy.stats.ttest_ind) |
p reported; reject/fail based on α = 0.05 |
| Action vs. Sports genre ratings | Mean ratings are equal | Independent two-sample t-test | p reported; reject/fail based on α = 0.05 |
Data Engineering
├── Multi-column groupby + pivot tables
├── Handling missing values (NaN, 'tbd' strings)
├── Cross-join of platform lifecycle data
└── Region segmentation (4 markets)
Statistical Analysis
├── Linear regression: scipy.stats.linregress
├── Pearson correlation matrix
├── Independent two-sample t-test
├── Platform trend slope analysis
└── R² coefficient of determination
Visualization
├── Matplotlib: histogram, bar, stacked bar, line, box plot
├── Seaborn: scatter with regression, correlation heatmap
└── Streamlit: interactive selectbox, text search, dataframe display
| Tool | Version | Purpose |
|---|---|---|
| Streamlit | 1.25.0 | Dashboard framework |
| Pandas | 2.0.3 | Data wrangling, groupby, pivot |
| Matplotlib | 3.7.1 | Core plotting |
| Seaborn | 0.12.2 | Statistical scatter, heatmap |
| SciPy | 1.11.1 | linregress, ttest_ind |
| NumPy | 1.24.1 | Array ops, NaN handling |
git clone https://github.com/vicknentura/tripleten5.git
cd tripleten5
pip install -r requirements.txt
streamlit run app.pytripleten5/
├── app.py # Full Streamlit dashboard
├── games.csv # Video game sales data, 1980–2016
├── requirements.txt
├── config.toml # Streamlit theming
└── viz pack 2 # Supplemental visualization assets
The platform lifecycle analysis mirrors cohort survival analysis — each platform is a cohort entering the market at a defined time and declining toward zero sales. The linear regression on platform sales trajectory is structurally equivalent to:
- eQTL mapping: testing whether a SNP's effect on expression persists across time/conditions
- Longitudinal omics: modeling how expression levels trend across time points
The correlation matrix and multivariate breakdown also preview the feature engineering workflows used in supervised ML and multi-omics integration.