Topic 88 of

Cricket Analytics with Python — IPL Data Analysis Project

Cricket + data = perfect portfolio project for India. Analyze 15+ years of IPL data to find insights like 'Batsmen average 15% higher in Chennai vs Mumbai' — engaging topic that showcases your Python skills.

📚Intermediate
⏱️18 min
5 quizzes
🏏

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}