A comprehensive Business Intelligence project analyzing historical Tour de France data from 1903-2020, featuring interactive dashboards, anomaly detection, and predictive modeling.
This project transforms over a century of Tour de France historical data into actionable insights through:
- Interactive Power BI Dashboard
- Machine Learning Models (Anomaly Detection & Victory Prediction)
- Data Warehouse Design
- Comprehensive ETL Pipeline
- Identify performance factors over time (distance, duration, speed)
- Analyze winner distribution by country
- Study participation trends (number of finishers)
- Track evolution of total distance and average time
- Create a historical dashboard for sports analysts and media
France_tour/ ├── Documents/ │ └── Project Presentation.pdf ├── EDA/ │ └── Exploratory Data Analysis notebooks ├── ML algorithms/ │ ├── anomaly_detection.py │ └── victory_prediction.py ├── PowerBI Dashboard and webservice/ │ └── Tour_de_France_Dashboard.pbix └── .gitattributes
- Data Analysis: Python (Pandas, NumPy)
- Machine Learning: Scikit-learn (Isolation Forest, Random Forest)
- Data Visualization: Power BI
- Data Processing: ETL with Python
- Version Control: Git/GitHub
- Overall Metrics: Editions count, participants, winner speed/time, nations diversity
- Country Analysis: Wins, riders, stage victories, finishers
- Rider Analysis: Performance metrics, podium rates, competitiveness
- Team Analysis: Victory rates, stage wins, team performance
- Stage Analysis: Distance by type, stage composition, winner dominance
- Algorithm: Isolation Forest
- Purpose: Identify unusual Tour editions
- Features: Distance, stages count, starters, finishers
- Results: Detected 5 anomalous editions (1903-1905, 1919, 2020)
- Algorithm: Random Forest
- Purpose: Predict stage winners
- Performance: AUC 0.85, Precision 82%
- Key Insight: Distance is the most important factor
Dim Stage(stage details, type, locations)Dim Winner(rider statistics, performance metrics)Dim Tour(edition overview, dates, participants)Dim Finisher(rider rankings, country, team)
df_finishers(9,895 rows) - Time normalization, missing value handlingdf_stages(2,341 rows) - Location separation, distance normalizationdf_tours(109 rows) - Date separation, distance processingdf_winners(102 rows) - Time correction, unit standardization
- Complex time format conversion (
94h 33' 14"→ seconds) - Geographical data separation
- Missing value imputation
- Unit standardization
- Published Dashboard: Power BI Online Service
- Features: Interactive visualizations, dynamic filters, multi-page navigation
- Access: Secure web link for authorized users
- Race Organizers (ASO): Event evolution visualization
- Sports Journalists: Enriched analytical content
- Sponsors: Country-specific visibility analysis
- Cycling Fans: Historical trend exploration
- Python 3.8+
- Power BI Desktop
- Required Python packages: pandas, scikit-learn, numpy
git clone https://github.com/Hajer5503/France_tour.git
cd France_tour
pip install -r requirements.txt