🏏
Project Setup & Dataset
Dataset: IPL Complete Dataset (Kaggle)
- Matches: 950+ IPL matches (2008-2025)
- Deliveries: 240K+ ball-by-ball records
- Download: Kaggle IPL Dataset
Setup:
code.pyPython
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# Load datasets
matches = pd.read_csv('matches.csv')
deliveries = pd.read_csv('deliveries.csv')
print(f"Matches: {len(matches)}, Deliveries: {len(deliveries)}")
print(matches.head())📊
Analysis 1: Team Performance
Win Rate by Team:
code.pyPython
team_wins = matches['winner'].value_counts()
total_matches = matches.groupby('team1').size() + matches.groupby('team2').size()
win_rate = (team_wins / total_matches * 100).sort_values(ascending=False)
print(win_rate.head(10))
# Visualize
plt.figure(figsize=(12,6))
win_rate.head(8).plot(kind='bar', color='skyblue')
plt.title('IPL Win Rate by Team', fontsize=14, fontweight='bold')
plt.ylabel('Win %')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()Insight: Mumbai Indians (MI) has highest win rate at 58%.
🏆
Analysis 2: Player Statistics
Top Run Scorers:
code.pyPython
batting_stats = deliveries.groupby('batsman').agg({
'batsman_runs': 'sum',
'match_id': 'nunique'
}).rename(columns={'batsman_runs': 'total_runs', 'match_id': 'matches'})
batting_stats['avg_per_match'] = batting_stats['total_runs'] / batting_stats['matches']
top_scorers = batting_stats.sort_values('total_runs', ascending=False).head(10)
print(top_scorers)⚠️ CheckpointQuiz error: Missing or invalid options array
📈
Advanced Visualizations
Toss Impact:
code.pyPython
toss_wins = matches.groupby('toss_decision')['winner'].count()
print(f"Bat first wins: {(matches[matches['toss_decision']=='bat']['winner'] == matches[matches['toss_decision']=='bat']['toss_winner']).sum()}")⚠️ FinalQuiz error: Missing or invalid questions array
⚠️ SummarySection error: Missing or invalid items array
Received: {"hasItems":false,"isArray":false}