anshumanSingh-tech commited on
Commit
fad7dff
·
0 Parent(s):

IPL Analytics Platform — complete with 2025/2026 data

Browse files
Files changed (46) hide show
  1. .gitattributes +4 -0
  2. .gitignore +29 -0
  3. dashboard/app.py +58 -0
  4. dashboard/assets/style.css +89 -0
  5. dashboard/callbacks.py +686 -0
  6. dashboard/layout.py +416 -0
  7. data/processed/batting_features.csv +461 -0
  8. data/processed/bowling_features.csv +403 -0
  9. data/processed/charts/01_wins_per_season.html +7 -0
  10. data/processed/charts/02_venue_heatmap.html +7 -0
  11. data/processed/charts/03_toss_impact.html +7 -0
  12. data/processed/charts/04_batting_scatter.html +7 -0
  13. data/processed/charts/05_bowling_phase.html +7 -0
  14. data/processed/charts/06_head_to_head.html +7 -0
  15. data/processed/charts/07_runs_per_over.html +7 -0
  16. data/processed/charts/08_dismissal_types.html +7 -0
  17. data/processed/deliveries_clean.csv +3 -0
  18. data/processed/ipl.db +3 -0
  19. data/processed/match_summary.csv +0 -0
  20. data/processed/matches_clean.csv +0 -0
  21. data/processed/models/auction_features.json +1 -0
  22. data/processed/models/auction_model.pkl +3 -0
  23. data/processed/models/player_valuations.csv +629 -0
  24. data/processed/models/shap_auction_beeswarm.png +3 -0
  25. data/processed/models/shap_win_beeswarm.png +3 -0
  26. data/processed/models/win_prob_dataset.csv +0 -0
  27. data/processed/models/win_prob_features.json +1 -0
  28. data/processed/models/win_prob_model.pkl +3 -0
  29. data/processed/models/win_prob_model_uncalibrated.pkl +3 -0
  30. data/processed/sanity_check.png +3 -0
  31. data/processed/team_season_stats.csv +167 -0
  32. data/processed/win_prob_features.csv +0 -0
  33. notebooks/01_setup_and_inspection.ipynb +475 -0
  34. notebooks/02_cleaning_and_features.ipynb +503 -0
  35. notebooks/03_eda_visualisations.ipynb +0 -0
  36. notebooks/04_ml_models.ipynb +0 -0
  37. render.yaml +6 -0
  38. requirements.txt +14 -0
  39. src/__init__.py +1 -0
  40. src/clean.py +187 -0
  41. src/diagnose_cricsheet.py +24 -0
  42. src/features.py +159 -0
  43. src/fix_raw_ids.py +99 -0
  44. src/models.py +240 -0
  45. src/update_dataset.py +399 -0
  46. waitress_server.py +15 -0
.gitattributes ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ data/processed/deliveries_clean.csv filter=lfs diff=lfs merge=lfs -text
2
+ data/processed/ipl.db filter=lfs diff=lfs merge=lfs -text
3
+ *.pkl filter=lfs diff=lfs merge=lfs -text
4
+ *.png filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Raw data — too large for GitHub
2
+ data/raw/
3
+
4
+ # Virtual environment
5
+ venv/
6
+ .venv/
7
+
8
+ # Python cache
9
+ __pycache__/
10
+ *.pyc
11
+ *.pyo
12
+ .ipynb_checkpoints/
13
+
14
+ # VS Code
15
+ .vscode/
16
+
17
+ # Jupyter
18
+ .ipynb_checkpoints/
19
+
20
+ # OS
21
+ .DS_Store
22
+ Thumbs.db
23
+
24
+ # Logs
25
+ *.log
26
+
27
+ # Keep processed data and models — needed for deployment
28
+ !data/processed/
29
+ !data/processed/models/
dashboard/app.py ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # dashboard/app.py
2
+ import sys
3
+ from pathlib import Path
4
+
5
+ ROOT = Path(__file__).parent.parent
6
+ DASHBOARD = Path(__file__).parent
7
+ sys.path.insert(0, str(ROOT))
8
+ sys.path.insert(0, str(DASHBOARD))
9
+
10
+ import dash
11
+ from dash import Input, Output, html, dcc
12
+ import dash_bootstrap_components as dbc
13
+
14
+ from layout import (make_navbar,
15
+ layout_team_stats,
16
+ layout_player_explorer,
17
+ layout_win_predictor,
18
+ layout_auction_simulator)
19
+ from callbacks import register_callbacks
20
+
21
+ # ── Initialise app ────────────────────────────────────────────────────
22
+ app = dash.Dash(
23
+ __name__,
24
+ external_stylesheets=[dbc.themes.BOOTSTRAP],
25
+ suppress_callback_exceptions=True,
26
+ meta_tags=[{"name": "viewport",
27
+ "content": "width=device-width, initial-scale=1"}],
28
+ )
29
+ app.title = "IPL Analytics Platform"
30
+ server = app.server
31
+
32
+ # ── Root layout ───────────────────────────────────────────────────────
33
+ # dcc.Location MUST be first child — it triggers the routing callback
34
+ app.layout = html.Div([
35
+ dcc.Location(id="url", refresh=False),
36
+ make_navbar(),
37
+ html.Div(id="page-content"),
38
+ ])
39
+
40
+ # ── Page routing callback ─────────────────────────────────────────────
41
+ @app.callback(
42
+ Output("page-content", "children"),
43
+ Input("url", "pathname"),
44
+ )
45
+ def render_page(pathname):
46
+ print(f"render_page called with pathname: {pathname}")
47
+ if pathname == "/players":
48
+ return layout_player_explorer()
49
+ if pathname == "/predict":
50
+ return layout_win_predictor()
51
+ if pathname == "/auction":
52
+ return layout_auction_simulator()
53
+ return layout_team_stats()
54
+
55
+ register_callbacks(app)
56
+
57
+ if __name__ == "__main__":
58
+ app.run(debug=True, port=8050)
dashboard/assets/style.css ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body {
2
+ font-family: "Segoe UI", Arial, sans-serif;
3
+ background-color: #f8f8f8;
4
+ }
5
+
6
+ .metric-card {
7
+ background: white;
8
+ border-radius: 10px;
9
+ padding: 18px 20px;
10
+ border: 0.5px solid #e0e0e0;
11
+ text-align: center;
12
+ }
13
+
14
+ .metric-value {
15
+ font-size: 28px;
16
+ font-weight: 600;
17
+ color: #1a1a1a;
18
+ margin: 0;
19
+ }
20
+
21
+ .metric-label {
22
+ font-size: 12px;
23
+ color: #888;
24
+ text-transform: uppercase;
25
+ letter-spacing: 0.05em;
26
+ margin: 4px 0 0 0;
27
+ }
28
+
29
+ .section-title {
30
+ font-size: 16px;
31
+ font-weight: 600;
32
+ color: #222;
33
+ margin: 24px 0 12px 0;
34
+ padding-bottom: 6px;
35
+ border-bottom: 2px solid #7F77DD;
36
+ display: inline-block;
37
+ }
38
+
39
+ .insight-box {
40
+ background: #E1F5EE;
41
+ border-left: 3px solid #1D9E75;
42
+ border-radius: 0 8px 8px 0;
43
+ padding: 10px 16px;
44
+ font-size: 13px;
45
+ color: #085041;
46
+ margin: 12px 0 20px 0;
47
+ line-height: 1.6;
48
+ }
49
+
50
+ .page-header {
51
+ background: white;
52
+ border-bottom: 0.5px solid #e8e8e8;
53
+ padding: 16px 28px;
54
+ margin-bottom: 24px;
55
+ }
56
+
57
+ .page-title {
58
+ font-size: 22px;
59
+ font-weight: 600;
60
+ color: #1a1a1a;
61
+ margin: 0;
62
+ }
63
+
64
+ .page-subtitle {
65
+ font-size: 13px;
66
+ color: #888;
67
+ margin: 3px 0 0 0;
68
+ }
69
+
70
+ .prediction-result {
71
+ background: white;
72
+ border-radius: 12px;
73
+ padding: 24px;
74
+ border: 0.5px solid #e0e0e0;
75
+ text-align: center;
76
+ margin-top: 16px;
77
+ }
78
+
79
+ .win-team {
80
+ font-size: 26px;
81
+ font-weight: 700;
82
+ color: #085041;
83
+ }
84
+
85
+ .win-prob {
86
+ font-size: 44px;
87
+ font-weight: 700;
88
+ color: #1D9E75;
89
+ }
dashboard/callbacks.py ADDED
@@ -0,0 +1,686 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from dash import Input, Output, State, callback, no_update, dash_table
2
+ import pandas as pd
3
+ import numpy as np
4
+ import plotly.express as px
5
+ import plotly.graph_objects as go
6
+ from plotly.subplots import make_subplots
7
+ from dash import html
8
+ import dash_bootstrap_components as dbc
9
+ from pathlib import Path
10
+ import sys
11
+ sys.path.insert(0, str(Path(__file__).parent.parent))
12
+
13
+ from src.models import predict_winner, predict_auction_value
14
+
15
+ PROCESSED = Path("E:/ipl-analytics/data/processed")
16
+ MODELS = Path("E:/ipl-analytics/data/processed/models")
17
+
18
+ matches = pd.read_csv(PROCESSED / "matches_clean.csv", parse_dates=["date"])
19
+ batting = pd.read_csv(PROCESSED / "batting_features.csv")
20
+ bowling = pd.read_csv(PROCESSED / "bowling_features.csv")
21
+ deliveries = pd.read_csv(PROCESSED / "deliveries_clean.csv", low_memory=False)
22
+ valuations = pd.read_csv(MODELS / "player_valuations.csv")
23
+ summary = pd.read_csv(PROCESSED / "match_summary.csv", parse_dates=["date"])
24
+ print("batting_first_won in summary:", "batting_first_won" in summary.columns)
25
+ print("summary shape:", summary.shape)
26
+
27
+ TEAM_COLORS = {
28
+ "Mumbai Indians" : "#004BA0",
29
+ "Chennai Super Kings" : "#F9CD05",
30
+ "Royal Challengers Bangalore": "#EC1C24",
31
+ "Kolkata Knight Riders" : "#3A225D",
32
+ "Sunrisers Hyderabad" : "#F7A721",
33
+ "Delhi Capitals" : "#0078BC",
34
+ "Punjab Kings" : "#ED1B24",
35
+ "Rajasthan Royals" : "#254AA5",
36
+ }
37
+ DEFAULT_C = "#7F77DD"
38
+
39
+ def tc(team): return TEAM_COLORS.get(team, DEFAULT_C)
40
+
41
+ CHART_LAYOUT = dict(
42
+ plot_bgcolor="white",
43
+ paper_bgcolor="white",
44
+ font_family="Segoe UI, Arial",
45
+ margin=dict(t=40, b=40, l=40, r=20),
46
+ )
47
+
48
+
49
+
50
+ def register_callbacks(app):
51
+
52
+ @app.callback(
53
+ Output("team-metric-cards", "children"),
54
+ Output("wins-per-season-chart","figure"),
55
+ Output("win-pct-chart", "figure"),
56
+ Output("toss-chart", "figure"),
57
+ Output("runs-per-over-chart", "figure"),
58
+ Input("team-filter", "value"),
59
+ Input("season-range", "value"),
60
+ )
61
+ def update_team_stats(selected_teams, season_range):
62
+
63
+ print(f"update_team_stats called")
64
+ print(f" selected_teams : {selected_teams}")
65
+ print(f" season_range : {season_range}")
66
+ print(f" matches shape : {matches.shape}")
67
+
68
+ if not selected_teams:
69
+ selected_teams = ["Mumbai Indians", "Chennai Super Kings"]
70
+
71
+ s_min, s_max = season_range
72
+ df = matches[
73
+ (matches["season"] >= s_min) &
74
+ (matches["season"] <= s_max)
75
+ ].copy()
76
+
77
+ # ── Metric cards ──────────────────────────────────────────
78
+ total_matches = len(df)
79
+ total_seasons = df["season"].nunique()
80
+ total_sixes = int(deliveries[
81
+ deliveries["match_id"].isin(df["match_id"])
82
+ ]["is_six"].sum())
83
+ avg_score = deliveries[
84
+ deliveries["match_id"].isin(df["match_id"])
85
+ ].groupby("match_id")["total_runs"].sum().mean()
86
+
87
+ def metric_card(value, label):
88
+ return dbc.Col(html.Div([
89
+ html.P(str(value), className="metric-value"),
90
+ html.P(label, className="metric-label"),
91
+ ], className="metric-card"), xs=6, md=3)
92
+
93
+ cards = [
94
+ metric_card(total_matches, "total matches"),
95
+ metric_card(total_seasons, "seasons"),
96
+ metric_card(f"{total_sixes:,}", "total sixes"),
97
+ metric_card(f"{avg_score:.0f}", "avg match score"),
98
+ ]
99
+
100
+ # ── Wins per season ───────────────────────────────────────
101
+ wins = (
102
+ df[df["winner"].isin(selected_teams)]
103
+ .groupby(["season", "winner"])
104
+ .size()
105
+ .reset_index(name="wins")
106
+ .rename(columns={"winner": "team"})
107
+ )
108
+ fig_wins = px.bar(
109
+ wins, x="season", y="wins", color="team",
110
+ barmode="group",
111
+ color_discrete_map={t: tc(t) for t in wins["team"].unique()},
112
+ labels={"wins": "wins", "season": "season"},
113
+ )
114
+ fig_wins.update_layout(**CHART_LAYOUT)
115
+ fig_wins.update_layout(
116
+ xaxis=dict(tickmode="linear", dtick=1, tickangle=-45),
117
+ legend=dict(orientation="h", y=-0.25, font_size=11),
118
+ )
119
+ fig_wins.update_traces(marker_line_width=0)
120
+
121
+ # ── Win percentage ────────────────────────────────────────
122
+ records = []
123
+ for team in selected_teams:
124
+ played = df[(df["team1"] == team) | (df["team2"] == team)]
125
+ won = df[df["winner"] == team]
126
+ if len(played) > 0:
127
+ records.append({
128
+ "team" : team,
129
+ "win_pct": round(len(won) / len(played) * 100, 1),
130
+ "played" : len(played),
131
+ })
132
+ wp_df = pd.DataFrame(records).sort_values("win_pct", ascending=True)
133
+ fig_wp = px.bar(
134
+ wp_df, x="win_pct", y="team", orientation="h",
135
+ color="team",
136
+ color_discrete_map={t: tc(t) for t in wp_df["team"].unique()},
137
+ labels={"win_pct": "win %", "team": ""},
138
+ text="win_pct",
139
+ )
140
+ fig_wp.update_traces(texttemplate="%{text:.1f}%", textposition="outside",
141
+ marker_line_width=0)
142
+ fig_wp.update_layout(**CHART_LAYOUT)
143
+ fig_wp.update_layout(showlegend=False, xaxis=dict(range=[0, 100]))
144
+
145
+ # ── Toss decisions ────────────────────────────────────────
146
+ toss_df = (
147
+ df[df["toss_winner"].isin(selected_teams)]
148
+ .groupby(["toss_winner", "toss_decision"])
149
+ .size()
150
+ .reset_index(name="count")
151
+ .rename(columns={"toss_winner": "team"})
152
+ )
153
+ fig_toss = px.bar(
154
+ toss_df, x="team", y="count", color="toss_decision",
155
+ barmode="group",
156
+ color_discrete_map={"bat": "#7F77DD", "field": "#1D9E75"},
157
+ labels={"count": "times chosen", "toss_decision": "decision"},
158
+ )
159
+ fig_toss.update_layout(**CHART_LAYOUT)
160
+ fig_toss.update_layout(
161
+ xaxis_tickangle=-30,
162
+ legend=dict(orientation="h", y=-0.3, font_size=11),
163
+ )
164
+ fig_toss.update_traces(marker_line_width=0)
165
+
166
+ # ── Runs per over ─────────────────────────────────────────
167
+ over_avg = (
168
+ deliveries[deliveries["match_id"].isin(df["match_id"])]
169
+ .groupby("over")["total_runs"]
170
+ .mean()
171
+ .round(2)
172
+ .reset_index()
173
+ )
174
+ PHASE_BG = [
175
+ dict(type="rect", xref="x", yref="paper",
176
+ x0=0.5, x1=6.5, y0=0, y1=1,
177
+ fillcolor="#EEEDFE", opacity=0.3, layer="below", line_width=0),
178
+ dict(type="rect", xref="x", yref="paper",
179
+ x0=6.5, x1=15.5, y0=0, y1=1,
180
+ fillcolor="#E1F5EE", opacity=0.3, layer="below", line_width=0),
181
+ dict(type="rect", xref="x", yref="paper",
182
+ x0=15.5, x1=20.5, y0=0, y1=1,
183
+ fillcolor="#FAECE7", opacity=0.3, layer="below", line_width=0),
184
+ ]
185
+ fig_rpo = go.Figure()
186
+ fig_rpo.add_trace(go.Bar(
187
+ x=over_avg["over"], y=over_avg["total_runs"],
188
+ marker_color="#B5D4F4", name="avg runs",
189
+ ))
190
+ for label, xpos in [("Powerplay", 3.5), ("Middle", 11), ("Death", 18)]:
191
+ fig_rpo.add_annotation(
192
+ x=xpos, y=over_avg["total_runs"].max() * 1.08,
193
+ text=label, showarrow=False,
194
+ font=dict(size=10, color="#444"),
195
+ )
196
+ fig_rpo.update_layout(
197
+ **CHART_LAYOUT,
198
+ shapes=PHASE_BG,
199
+ xaxis=dict(title="over", tickmode="linear", dtick=1),
200
+ yaxis_title="avg runs/over",
201
+ showlegend=False,
202
+ )
203
+
204
+ return cards, fig_wins, fig_wp, fig_toss, fig_rpo
205
+
206
+
207
+ # ════════════════════════════════════════════════════════════════
208
+ # PAGE 2 CALLBACKS — PLAYER EXPLORER
209
+ # ════════════════════════════════════════════════════════════════
210
+
211
+ @app.callback(
212
+ Output("batting-metric-cards", "children"),
213
+ Output("batting-scatter-chart","figure"),
214
+ Output("phase-sr-chart", "figure"),
215
+ Input("batsman-search", "value"),
216
+ Input("batsman-compare", "value"),
217
+ )
218
+ def update_batting(player1, player2):
219
+ players = [p for p in [player1, player2] if p]
220
+
221
+ # ── Metric cards for primary player ───────────────────────
222
+ p1 = batting[batting["batter"] == player1].iloc[0]
223
+
224
+ def bat_card(value, label):
225
+ return dbc.Col(html.Div([
226
+ html.P(str(value), className="metric-value"),
227
+ html.P(label, className="metric-label"),
228
+ ], className="metric-card"), xs=6, md=2)
229
+
230
+ cards = [
231
+ bat_card(f"{p1['total_runs']:,.0f}", "career runs"),
232
+ bat_card(f"{p1['batting_average']:.1f}","average"),
233
+ bat_card(f"{p1['strike_rate']:.1f}", "strike rate"),
234
+ bat_card(int(p1["hundreds"]), "100s"),
235
+ bat_card(int(p1["fifties"]), "50s"),
236
+ bat_card(f"{p1['boundary_rate']:.1f}%", "boundary %"),
237
+ ]
238
+
239
+ # ── Batting scatter: all players, highlight selected ──────
240
+ plot_df = batting[batting["balls_faced"] >= 200].copy()
241
+ plot_df["highlight"] = plot_df["batter"].apply(
242
+ lambda x: x if x in players else "others"
243
+ )
244
+ plot_df = plot_df.sort_values(
245
+ "highlight",
246
+ key=lambda s: s.map({"others": 0}).fillna(1)
247
+ )
248
+ color_map = {"others": "#D3D1C7"}
249
+ colors = ["#7F77DD", "#D85A30"]
250
+ for i, p in enumerate(players):
251
+ color_map[p] = colors[i % len(colors)]
252
+
253
+ fig_scatter = px.scatter(
254
+ plot_df,
255
+ x="batting_average", y="strike_rate",
256
+ color="highlight",
257
+ color_discrete_map=color_map,
258
+ size="total_runs", size_max=22,
259
+ hover_name="batter",
260
+ hover_data={"total_runs": True, "highlight": False},
261
+ labels={
262
+ "batting_average": "batting average",
263
+ "strike_rate" : "strike rate",
264
+ "highlight" : "player",
265
+ },
266
+ )
267
+ fig_scatter.update_layout(**CHART_LAYOUT)
268
+ fig_scatter.update_layout(
269
+ legend=dict(orientation="h", y=-0.2, font_size=11)
270
+ )
271
+ fig_scatter.update_traces(marker_line_width=0.5,
272
+ marker_line_color="white")
273
+
274
+ # ── Phase SR comparison ────────────────────────────────────
275
+ phase_data = []
276
+ for p in players:
277
+ row = batting[batting["batter"] == p]
278
+ if row.empty:
279
+ continue
280
+ row = row.iloc[0]
281
+ for phase in ["powerplay", "middle", "death"]:
282
+ col = f"sr_{phase}"
283
+ if col in row and pd.notna(row[col]):
284
+ phase_data.append({
285
+ "player": p,
286
+ "phase" : phase.capitalize(),
287
+ "SR" : round(row[col], 1),
288
+ })
289
+
290
+ if phase_data:
291
+ ph_df = pd.DataFrame(phase_data)
292
+ fig_phase = px.bar(
293
+ ph_df, x="phase", y="SR", color="player",
294
+ barmode="group",
295
+ color_discrete_map={players[0]: "#7F77DD",
296
+ players[1] if len(players) > 1 else "": "#D85A30"},
297
+ labels={"SR": "strike rate", "phase": "match phase"},
298
+ text="SR",
299
+ )
300
+ fig_phase.update_traces(texttemplate="%{text:.1f}", textposition="outside",
301
+ marker_line_width=0)
302
+ fig_phase.update_layout(**CHART_LAYOUT)
303
+ fig_phase.update_layout(
304
+ legend=dict(orientation="h", y=-0.2, font_size=11)
305
+ )
306
+ else:
307
+ fig_phase = go.Figure()
308
+ fig_phase.update_layout(**CHART_LAYOUT)
309
+
310
+ return cards, fig_scatter, fig_phase
311
+
312
+
313
+ @app.callback(
314
+ Output("bowling-metric-cards","children"),
315
+ Output("bowling-phase-chart", "figure"),
316
+ Input("bowler-search", "value"),
317
+ )
318
+ def update_bowling(player):
319
+ row = bowling[bowling["bowler"] == player]
320
+ if row.empty:
321
+ return [], go.Figure()
322
+ row = row.iloc[0]
323
+
324
+ def bowl_card(value, label):
325
+ return dbc.Col(html.Div([
326
+ html.P(str(value), className="metric-value"),
327
+ html.P(label, className="metric-label"),
328
+ ], className="metric-card"), xs=6, md=2)
329
+
330
+ cards = [
331
+ bowl_card(int(row["wickets"]), "career wickets"),
332
+ bowl_card(f"{row['economy_rate']:.2f}", "economy rate"),
333
+ bowl_card(f"{row['bowling_average']:.1f}", "bowling avg"),
334
+ bowl_card(f"{row['bowling_sr']:.1f}", "bowling SR"),
335
+ bowl_card(f"{row['dot_ball_pct']:.1f}%", "dot ball %"),
336
+ bowl_card(int(row["three_wkt_hauls"]) if "three_wkt_hauls" in row else "—",
337
+ "3-wkt hauls"),
338
+ ]
339
+
340
+ phases = ["powerplay", "middle", "death"]
341
+ econ_vals = [row.get(f"economy_{p}", np.nan) for p in phases]
342
+
343
+ fig = go.Figure(go.Bar(
344
+ x=[p.capitalize() for p in phases],
345
+ y=[round(e, 2) if pd.notna(e) else 0 for e in econ_vals],
346
+ marker_color=["#7F77DD", "#1D9E75", "#D85A30"],
347
+ text=[f"{e:.2f}" if pd.notna(e) else "N/A" for e in econ_vals],
348
+ textposition="outside",
349
+ ))
350
+ fig.add_hline(y=8.0, line_dash="dot", line_color="#888",
351
+ annotation_text="8.0 benchmark")
352
+ fig.update_layout(
353
+ **CHART_LAYOUT,
354
+ title=f"{player} — economy by phase",
355
+ yaxis_title="economy rate",
356
+ xaxis_title="match phase",
357
+ showlegend=False,
358
+ )
359
+
360
+ return cards, fig
361
+
362
+
363
+ @app.callback(
364
+ Output("player-table", "data"),
365
+ Output("player-table", "columns"),
366
+ Input("leaderboard-type", "value"),
367
+ )
368
+ def update_player_table(table_type):
369
+ if table_type == "batting":
370
+ cols = ["batter", "total_runs", "batting_average",
371
+ "strike_rate", "hundreds", "fifties",
372
+ "boundary_rate", "matches_batted"]
373
+ df = batting[cols].copy().rename(columns={"batter": "player"})
374
+ df = df.sort_values("total_runs", ascending=False).round(2)
375
+ else:
376
+ cols = ["bowler", "wickets", "economy_rate",
377
+ "bowling_average", "bowling_sr",
378
+ "dot_ball_pct", "matches_bowled"]
379
+ df = bowling[cols].copy().rename(columns={"bowler": "player"})
380
+ df = df.sort_values("wickets", ascending=False).round(2)
381
+
382
+ columns = [{"name": c.replace("_", " ").title(),
383
+ "id": c, "type": "numeric",
384
+ "format": {"specifier": ",.2f"}}
385
+ for c in df.columns]
386
+ return df.to_dict("records"), columns
387
+
388
+
389
+ # ════════════════════════════════════════════════════════════════
390
+ # PAGE 3 CALLBACKS — WIN PREDICTOR
391
+ # ════════════════════════════════════════════════════════════════
392
+
393
+ @app.callback(
394
+ Output("prediction-output", "children"),
395
+ Output("win-prob-gauge", "figure"),
396
+ Output("historical-h2h", "children"),
397
+ Input("predict-btn", "n_clicks"),
398
+ State("pred-team1", "value"),
399
+ State("pred-team2", "value"),
400
+ State("pred-venue", "value"),
401
+ State("pred-toss-winner", "value"),
402
+ State("pred-toss-decision", "value"),
403
+ prevent_initial_call=True,
404
+ )
405
+ def run_prediction(n, team1, team2, venue, toss_winner, toss_decision):
406
+ result = predict_winner(
407
+ team1=team1, team2=team2, venue=venue,
408
+ toss_winner=toss_winner, toss_decision=toss_decision,
409
+ )
410
+
411
+ team_A = result["toss_winner"]
412
+ team_B = result["other_team"]
413
+ p_toss = result["toss_winner_prob"]
414
+ p_other = result["other_team_prob"]
415
+ winner = result["predicted_winner"]
416
+
417
+ # ── Result card ───────────────────────────────────────────
418
+ result_card = html.Div([
419
+ html.P("Predicted winner", style={"color": "#888", "fontSize": "13px",
420
+ "marginBottom": "4px"}),
421
+ html.P(winner, className="win-team"),
422
+ html.Div([
423
+ html.Span(f"{team_A}: ", style={"fontWeight": 600}),
424
+ html.Span(f"{p_toss}%",
425
+ style={"color": tc(team1), "fontWeight": 700,
426
+ "fontSize": "18px"}),
427
+ html.Span(" vs ", style={"color": "#ccc"}),
428
+ html.Span(f"{team_B}: ", style={"fontWeight": 600}),
429
+ html.Span(f"{p_other}%",
430
+ style={"color": tc(team_B), "fontWeight": 700,
431
+ "fontSize": "18px"}),
432
+ ], style={"marginTop": "8px"}),
433
+ ], className="prediction-result")
434
+
435
+ # ── Gauge chart ───────────────────────────────────────────
436
+ fig_gauge = go.Figure(go.Indicator(
437
+ mode="gauge+number",
438
+ value=p_toss,
439
+ number={"suffix": "%", "font": {"size": 36, "color": tc(team_A)}},
440
+ title={"text": f"{team_A} win probability", "font": {"size": 13}},
441
+ gauge={
442
+ "axis" : {"range": [0, 100]},
443
+ "bar" : {"color": tc(team_A)},
444
+ "steps" : [
445
+ {"range": [0, 40], "color": "#FCEBEB"},
446
+ {"range": [40, 60], "color": "#F1EFE8"},
447
+ {"range": [60, 100],"color": "#E1F5EE"},
448
+ ],
449
+ "threshold" : {
450
+ "line" : {"color": "#1D9E75", "width": 3},
451
+ "thickness": 0.75,
452
+ "value": 50,
453
+ },
454
+ },
455
+ ))
456
+ fig_gauge.update_layout(
457
+ paper_bgcolor="white",
458
+ font_family="Segoe UI, Arial",
459
+ margin=dict(t=60, b=20, l=30, r=30),
460
+ )
461
+
462
+ # ── Historical H2H ────────────────────────────────────────
463
+ h2h = matches[
464
+ ((matches["team1"] == team_A) & (matches["team2"] == team_B)) |
465
+ ((matches["team1"] == team_B) & (matches["team2"] == team_A))
466
+ ]
467
+ h2h = h2h[h2h["winner"].isin([team_A, team_B])]
468
+ tA_wins = int((h2h["winner"] == team_A).sum())
469
+ tB_wins = int((h2h["winner"] == team_B).sum())
470
+
471
+ h2h_card = dbc.Card(dbc.CardBody([
472
+ html.H6("Historical head-to-head",
473
+ style={"fontWeight": 600, "marginBottom": "12px"}),
474
+ html.Div([
475
+ html.Div([
476
+ html.P(str(tA_wins), style={"fontSize": "32px",
477
+ "fontWeight": 700,
478
+ "color": tc(team_A),
479
+ "margin": 0}),
480
+ html.P(team_A, style={"fontSize": "12px", "color": "#888"}),
481
+ ], style={"textAlign": "center", "flex": 1}),
482
+ html.Div([
483
+ html.P(f"{len(h2h)} played",
484
+ style={"fontSize": "13px", "color": "#aaa",
485
+ "margin": 0}),
486
+ ], style={"textAlign": "center", "flex": 1,
487
+ "display": "flex", "alignItems": "center",
488
+ "justifyContent": "center"}),
489
+ html.Div([
490
+ html.P(str(tB_wins), style={"fontSize": "32px",
491
+ "fontWeight": 700,
492
+ "color": tc(team_B),
493
+ "margin": 0}),
494
+ html.P(team_B, style={"fontSize": "12px", "color": "#888"}),
495
+ ], style={"textAlign": "center", "flex": 1}),
496
+ ], style={"display": "flex", "marginTop": "8px"}),
497
+ ]), style={"border": "0.5px solid #e0e0e0", "marginTop": "16px"})
498
+
499
+ venue_h2h = matches[
500
+ (
501
+ ((matches["team1"] == team_A) & (matches["team2"] == team_B)) |
502
+ ((matches["team1"] == team_B) & (matches["team2"] == team_A))
503
+ ) &
504
+ (matches["venue"] == venue)
505
+ ]
506
+ venue_h2h = venue_h2h[venue_h2h["winner"].isin([team_A, team_B])]
507
+ vA_wins = int((venue_h2h["winner"] == team_A).sum())
508
+ vB_wins = int((venue_h2h["winner"] == team_B).sum())
509
+ total_venue = len(venue_h2h)
510
+
511
+ venue_card = dbc.Card(dbc.CardBody([
512
+ html.H6(f"Head-to-Head at {venue.split(',')[0]}",
513
+ style={"fontWeight": 600, "marginBottom": "12px"}),
514
+ html.Div([
515
+ html.Div([
516
+ html.P(str(vA_wins),
517
+ style={"fontSize": "28px", "fontWeight": 700,
518
+ "color": tc(team_A), "margin": 0}),
519
+ html.P(team_A, style={"fontSize": "11px", "color": "#888" }),
520
+ ], style={"textAlign": "center", "flex": 1}),
521
+ html.Div([
522
+ html.P(f"{total_venue} played" if total_venue > 0
523
+ else "No matches\nat this value",
524
+ style={"fontSize": "12px", "color": "#aaa",
525
+ "margin": 0, "textAlign": "center"}),
526
+ ], style={"flex": 1, "display": "flex",
527
+ "alignItems": "center", "justifyContent": "center"}),
528
+ html.Div([
529
+ html.P(str(vB_wins),
530
+ style={"fontSize": "28px", "fontWeight": 700,
531
+ "color": tc(team_B), "margin": 0}),
532
+ html.P(team_B, style={"fontSize": "11px", "color": "#888"}),
533
+ ], style={"textAlign": "center", "flex": 1}),
534
+ ], style={"display": "flex"}),
535
+ html.P(
536
+ "No historical data at this venue - result based on overall form only."
537
+ if total_venue == 0 else
538
+ f"Sample size: {total_venue} matches. "
539
+ + ("Reliable Signal." if total_venue >= 10 else "Small sample - treat with caution"),
540
+ style={"fontSize": "11px", "color": "#aaa",
541
+ "marginTop": "8px", "marginBottom": 0}
542
+ ),
543
+ ]), style={"border": "0.5px solid #e0e0e0", "marginTop": "12px"})
544
+
545
+ return result_card, fig_gauge, html.Div([h2h_card, venue_card])
546
+
547
+
548
+ # ════════════════════════════════════════════════════════════════
549
+ # PAGE 4 CALLBACKS — AUCTION SIMULATOR
550
+ # ════════════════════════════════════════════════════════════════
551
+
552
+ # Slider output labels
553
+ SLIDER_LABEL_MAP = {
554
+ "sl-runs" : "sl-runs-out", "sl-avg" : "sl-avg-out",
555
+ "sl-sr" : "sl-sr-out", "sl-100s" : "sl-100s-out",
556
+ "sl-50s" : "sl-50s-out", "sl-br" : "sl-br-out",
557
+ "sl-pp-sr" : "sl-pp-sr-out", "sl-death-sr": "sl-death-sr-out",
558
+ "sl-wkts" : "sl-wkts-out", "sl-econ" : "sl-econ-out",
559
+ "sl-bowl-avg": "sl-bowl-avg-out", "sl-dot" : "sl-dot-out",
560
+ "sl-d-econ" : "sl-d-econ-out", "sl-pp-econ" : "sl-pp-econ-out",
561
+ "sl-mbowled" : "sl-mbowled-out",
562
+ }
563
+
564
+ @app.callback(
565
+ [Output(v, "children") for v in SLIDER_LABEL_MAP.values()] +
566
+ [
567
+ Output("auction-price-display", "children"),
568
+ Output("auction-gauge", "figure"),
569
+ Output("similar-players-table", "children"),
570
+ Output("valuation-chart", "figure"),
571
+ ],
572
+ [Input(k, "value") for k in SLIDER_LABEL_MAP.keys()],
573
+ )
574
+ def update_auction(runs, avg, sr, h100, h50, br, pp_sr, death_sr,
575
+ wkts, econ, bowl_avg, dot, d_econ, pp_econ, mbowled):
576
+
577
+ labels = [runs, avg, sr, h100, h50, br, pp_sr, death_sr,
578
+ wkts, econ, bowl_avg, dot, d_econ, pp_econ, mbowled]
579
+
580
+ stats = {
581
+ "total_runs" : runs, "batting_average" : avg,
582
+ "strike_rate" : sr, "hundreds" : h100,
583
+ "fifties" : h50, "boundary_rate" : br,
584
+ "sr_powerplay" : pp_sr, "sr_death" : death_sr,
585
+ "wickets" : wkts, "economy_rate" : econ,
586
+ "bowling_average" : bowl_avg, "dot_ball_pct" : dot,
587
+ "economy_death" : d_econ, "economy_powerplay": pp_econ,
588
+ "matches_bowled" : mbowled, "matches_batted" : max(runs // 30, 1),
589
+ "bowling_sr" : 30.0,
590
+ }
591
+ result = predict_auction_value(stats)
592
+ price = result["predicted_price_cr"]
593
+ tier = result["tier"]
594
+
595
+ tier_color = {
596
+ "Icon (12 cr+)" : "#085041",
597
+ "Premium (7–12 cr)": "#1D9E75",
598
+ "Standard (3–7 cr)": "#7F77DD",
599
+ "Emerging (< 3 cr)": "#888780",
600
+ }.get(tier, "#888780")
601
+
602
+ price_display = html.Div([
603
+ html.P(f"₹ {price:.2f} Cr",
604
+ style={"fontSize": "42px", "fontWeight": 700,
605
+ "color": tier_color, "margin": 0}),
606
+ html.Span(tier, style={
607
+ "fontSize": "13px", "padding": "4px 14px",
608
+ "background": tier_color, "color": "white",
609
+ "borderRadius": "999px", "fontWeight": 500,
610
+ }),
611
+ ], style={"textAlign": "center", "padding": "16px 0"})
612
+
613
+ # ── Gauge ──────────────────────────────────────────────────
614
+ fig_g = go.Figure(go.Indicator(
615
+ mode="gauge+number",
616
+ value=min(price, 20),
617
+ number={"prefix": "₹ ", "suffix": " Cr",
618
+ "font": {"size": 28, "color": tier_color}},
619
+ gauge={
620
+ "axis" : {"range": [0, 20],
621
+ "tickvals": [0, 3, 7, 12, 20],
622
+ "ticktext": ["0", "3cr", "7cr", "12cr", "20cr+"]},
623
+ "bar" : {"color": tier_color},
624
+ "steps": [
625
+ {"range": [0, 3], "color": "#F1EFE8"},
626
+ {"range": [3, 7], "color": "#EEEDFE"},
627
+ {"range": [7, 12], "color": "#E1F5EE"},
628
+ {"range": [12, 20], "color": "#9FE1CB"},
629
+ ],
630
+ },
631
+ ))
632
+ fig_g.update_layout(
633
+ paper_bgcolor="white",
634
+ font_family="Segoe UI, Arial",
635
+ margin=dict(t=20, b=10, l=30, r=30),
636
+ height=220,
637
+ )
638
+
639
+ # ── Similar players ────────────────────────────────────────
640
+ sim = valuations.copy()
641
+ sim = sim[
642
+ (sim["predicted_price_cr"] >= price * 0.75) &
643
+ (sim["predicted_price_cr"] <= price * 1.25)
644
+ ].nlargest(5, "predicted_price_cr")[
645
+ ["player", "total_runs", "wickets", "predicted_price_cr"]
646
+ ].round(2)
647
+
648
+ sim_table = dash_table.DataTable(
649
+ data=sim.to_dict("records"),
650
+ columns=[
651
+ {"name": "Player", "id": "player"},
652
+ {"name": "Runs", "id": "total_runs"},
653
+ {"name": "Wickets", "id": "wickets"},
654
+ {"name": "Est. Price (Cr)", "id": "predicted_price_cr"},
655
+ ],
656
+ style_header={"backgroundColor": "#1a1a2e", "color": "white",
657
+ "fontSize": "11px", "fontWeight": 600},
658
+ style_cell={"fontSize": "12px", "padding": "6px 10px",
659
+ "border": "0.5px solid #f0f0f0"},
660
+ style_data_conditional=[
661
+ {"if": {"row_index": "odd"}, "backgroundColor": "#fafafa"}
662
+ ],
663
+ )
664
+
665
+ # ── Valuation leaderboard chart ────────────────────────────
666
+ top_v = valuations.nlargest(25, "predicted_price_cr")[
667
+ ["player", "predicted_price_cr", "total_runs", "wickets"]
668
+ ].sort_values("predicted_price_cr")
669
+
670
+ fig_val = px.bar(
671
+ top_v, x="predicted_price_cr", y="player",
672
+ orientation="h",
673
+ color="predicted_price_cr",
674
+ color_continuous_scale=["#EEEDFE", "#7F77DD", "#3C3489"],
675
+ labels={"predicted_price_cr": "est. price (₹ Cr)", "player": ""},
676
+ text="predicted_price_cr",
677
+ )
678
+ fig_val.update_traces(texttemplate="₹%{text:.1f}Cr",
679
+ textposition="outside")
680
+ fig_val.update_layout(
681
+ **CHART_LAYOUT,
682
+ coloraxis_showscale=False,
683
+ title="Top 25 most valuable IPL players (model estimate)",
684
+ )
685
+
686
+ return labels + [price_display, fig_g, sim_table, fig_val]
dashboard/layout.py ADDED
@@ -0,0 +1,416 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from dash import dcc, html, dash_table
2
+ import dash_bootstrap_components as dbc
3
+ import pandas as pd
4
+ import json
5
+ from pathlib import Path
6
+ import sys
7
+ sys.path.insert(0, str(Path(__file__).parent.parent))
8
+
9
+
10
+ from src.models import get_available_teams, get_available_venues
11
+
12
+
13
+ MODELS = Path("E:/ipl-analytics/data/processed/models")
14
+ PROCESSED = Path("E:/ipl-analytics/data/processed")
15
+
16
+ # ── Load static data for dropdowns ───────────────────────────────────
17
+ team_season = pd.read_csv(PROCESSED / "team_season_stats.csv")
18
+ matches = pd.read_csv(PROCESSED / "matches_clean.csv")
19
+ batting = pd.read_csv(PROCESSED / "batting_features.csv")
20
+ bowling = pd.read_csv(PROCESSED / "bowling_features.csv")
21
+ valuations = pd.read_csv(MODELS / "player_valuations.csv")
22
+
23
+ ALL_VENUES = get_available_venues()
24
+ ALL_TEAMS = get_available_teams()
25
+ ALL_SEASONS = sorted(matches["season"].unique().tolist())
26
+
27
+
28
+ TOP_TEAMS = [
29
+ "Mumbai Indians", "Chennai Super Kings",
30
+ "Royal Challengers Bangalore", "Kolkata Knight Riders",
31
+ "Sunrisers Hyderabad", "Delhi Capitals",
32
+ "Punjab Kings", "Rajasthan Royals",
33
+ ]
34
+
35
+ # ════════════════════════════════════════════════════════════════════
36
+ # NAVBAR
37
+ # ════════════════════════════════════════════════════════════════════
38
+
39
+ def make_navbar():
40
+ return dbc.Navbar(
41
+ dbc.Container([
42
+ dbc.NavbarBrand(
43
+ [html.Span("IPL", style={"color": "#F9CD05", "fontWeight": 700}),
44
+ html.Span(" Analytics Platform", style={"color": "white"})],
45
+ style={"fontSize": "18px"},
46
+ ),
47
+ dbc.Nav([
48
+ dbc.NavItem(dbc.NavLink("Team Stats", href="/", active="exact")),
49
+ dbc.NavItem(dbc.NavLink("Player Explorer", href="/players", active="exact")),
50
+ dbc.NavItem(dbc.NavLink("Win Predictor", href="/predict", active="exact")),
51
+ dbc.NavItem(dbc.NavLink("Auction Simulator",href="/auction", active="exact")),
52
+ ], navbar=True, className="ms-auto"),
53
+ ], fluid=True),
54
+ color="#1a1a2e",
55
+ dark=True,
56
+ sticky="top",
57
+ style={"marginBottom": "0px"},
58
+ )
59
+
60
+
61
+ # ════════════════════════════════════════════════════════════════════
62
+ # PAGE 1 — TEAM STATS
63
+ # ════════════════════════════════════════════════════════════════════
64
+
65
+ def layout_team_stats():
66
+ return html.Div([
67
+ html.Div([
68
+ html.H1("Team Statistics", className="page-title"),
69
+ html.P("Season-by-season performance, head-to-head records, and venue analysis.",
70
+ className="page-subtitle"),
71
+ ], className="page-header"),
72
+
73
+ dbc.Container([
74
+ # ── Filters ───────────────────────────────────────────
75
+ dbc.Row([
76
+ dbc.Col([
77
+ html.Label("Select teams", style={"fontWeight": 500, "fontSize": "13px"}),
78
+ dcc.Dropdown(
79
+ id="team-filter",
80
+ options=[{"label": t, "value": t} for t in ALL_TEAMS],
81
+ value=TOP_TEAMS[:6],
82
+ multi=True,
83
+ placeholder="Select teams...",
84
+ ),
85
+ ], md=8),
86
+ dbc.Col([
87
+ html.Label("Season range", style={"fontWeight": 500, "fontSize": "13px"}),
88
+ dcc.RangeSlider(
89
+ id="season-range",
90
+ min=min(ALL_SEASONS), max=max(ALL_SEASONS),
91
+ value=[min(ALL_SEASONS), max(ALL_SEASONS)],
92
+ marks={s: str(s) for s in ALL_SEASONS[::2]},
93
+ step=1,
94
+ tooltip={"placement": "bottom", "always_visible": False},
95
+ ),
96
+ ], md=4),
97
+ ], className="mb-4"),
98
+
99
+ # ── Metric cards ──────────────────────────────────────
100
+ dbc.Row(id="team-metric-cards", className="mb-4 g-3"),
101
+
102
+ # ── Charts ────────────────────────────────────────────
103
+ dbc.Row([
104
+ dbc.Col([
105
+ html.P("Wins per season", className="section-title"),
106
+ dcc.Graph(id="wins-per-season-chart", style={"height": "380px"}),
107
+ ], md=7),
108
+ dbc.Col([
109
+ html.P("Win percentage by team", className="section-title"),
110
+ dcc.Graph(id="win-pct-chart", style={"height": "380px"}),
111
+ ], md=5),
112
+ ], className="mb-4"),
113
+
114
+ dbc.Row([
115
+ dbc.Col([
116
+ html.P("Toss decision trends", className="section-title"),
117
+ dcc.Graph(id="toss-chart", style={"height": "340px"}),
118
+ ], md=6),
119
+ dbc.Col([
120
+ html.P("Runs per over (all seasons)", className="section-title"),
121
+ dcc.Graph(id="runs-per-over-chart", style={"height": "340px"}),
122
+ ], md=6),
123
+ ], className="mb-4"),
124
+
125
+ ], fluid=True),
126
+ ])
127
+
128
+
129
+
130
+
131
+ def layout_player_explorer():
132
+ return html.Div([
133
+ html.Div([
134
+ html.H1("Player Explorer", className="page-title"),
135
+ html.P("Search and compare individual player career statistics.",
136
+ className="page-subtitle"),
137
+ ], className="page-header"),
138
+
139
+ dbc.Container([
140
+ dbc.Row([
141
+ dbc.Col([
142
+ html.Label("Search batsman", style={"fontWeight": 500, "fontSize": "13px"}),
143
+ dcc.Dropdown(
144
+ id="batsman-search",
145
+ options=[{"label": p, "value": p}
146
+ for p in sorted(batting["batter"].unique())],
147
+ value=batting.nlargest(1, "total_runs")["batter"].iloc[0],
148
+ placeholder="Select a batsman...",
149
+ clearable=False,
150
+ ),
151
+ ], md=4),
152
+ dbc.Col([
153
+ html.Label("Compare with (optional)", style={"fontWeight": 500, "fontSize": "13px"}),
154
+ dcc.Dropdown(
155
+ id="batsman-compare",
156
+ options=[{"label": p, "value": p}
157
+ for p in sorted(batting["batter"].unique())],
158
+ placeholder="Add a second player...",
159
+ ),
160
+ ], md=4),
161
+ dbc.Col([
162
+ html.Label("Search bowler", style={"fontWeight": 500, "fontSize": "13px"}),
163
+ dcc.Dropdown(
164
+ id="bowler-search",
165
+ options=[{"label": p, "value": p}
166
+ for p in sorted(bowling["bowler"].unique())],
167
+ value=bowling.nlargest(1, "wickets")["bowler"].iloc[0],
168
+ placeholder="Select a bowler...",
169
+ clearable=False,
170
+ ),
171
+ ], md=4),
172
+ ], className="mb-4"),
173
+
174
+ # ── Batting stats ──────────────────────────────────────
175
+ html.P("Batting profile", className="section-title"),
176
+ dbc.Row(id="batting-metric-cards", className="mb-3 g-3"),
177
+ dbc.Row([
178
+ dbc.Col([
179
+ dcc.Graph(id="batting-scatter-chart", style={"height": "400px"}),
180
+ ], md=7),
181
+ dbc.Col([
182
+ dcc.Graph(id="phase-sr-chart", style={"height": "400px"}),
183
+ ], md=5),
184
+ ], className="mb-4"),
185
+
186
+ # ── Bowling stats ──────────────────────────────────────
187
+ html.P("Bowling profile", className="section-title"),
188
+ dbc.Row(id="bowling-metric-cards", className="mb-3 g-3"),
189
+ dcc.Graph(id="bowling-phase-chart", style={"height": "360px"}),
190
+
191
+ # ── Player table ───────────────────────────────────────
192
+ html.P("Full leaderboard", className="section-title"),
193
+ dbc.Row([
194
+ dbc.Col([
195
+ dcc.RadioItems(
196
+ id="leaderboard-type",
197
+ options=[
198
+ {"label": " Batting", "value": "batting"},
199
+ {"label": " Bowling", "value": "bowling"},
200
+ ],
201
+ value="batting",
202
+ inline=True,
203
+ style={"fontSize": "13px", "marginBottom": "10px"},
204
+ ),
205
+ ]),
206
+ ]),
207
+ dash_table.DataTable(
208
+ id="player-table",
209
+ page_size=15,
210
+ sort_action="native",
211
+ filter_action="native",
212
+ style_table={"overflowX": "auto"},
213
+ style_header={
214
+ "backgroundColor": "#1a1a2e",
215
+ "color": "white",
216
+ "fontWeight": 600,
217
+ "fontSize": "12px",
218
+ "border": "none",
219
+ },
220
+ style_cell={
221
+ "fontSize": "12px",
222
+ "padding": "8px 12px",
223
+ "border": "0.5px solid #f0f0f0",
224
+ "fontFamily": "Segoe UI, Arial",
225
+ },
226
+ style_data_conditional=[
227
+ {"if": {"row_index": "odd"},
228
+ "backgroundColor": "#fafafa"},
229
+ ],
230
+ ),
231
+ ], fluid=True),
232
+ ])
233
+
234
+
235
+ # ════════════════════════════════════════════════════════════════════
236
+ # PAGE 3 — WIN PREDICTOR
237
+ # ════════════════════════════════════════════════════════════════════
238
+
239
+ def layout_win_predictor():
240
+ return html.Div([
241
+ html.Div([
242
+ html.H1("Win Probability Predictor", className="page-title"),
243
+ html.P("Pre-match win probability powered by XGBoost — trained on 15 seasons of IPL data.",
244
+ className="page-subtitle"),
245
+ ], className="page-header"),
246
+
247
+ dbc.Container([
248
+ dbc.Row([
249
+ # ── Input form ────────────────────────────────────
250
+ dbc.Col([
251
+ dbc.Card([
252
+ dbc.CardBody([
253
+ html.H5("Match setup", style={"fontWeight": 600, "marginBottom": "20px"}),
254
+
255
+ html.Label("Team 1 (batting side)", style={"fontSize": "13px", "fontWeight": 500}),
256
+ dcc.Dropdown(
257
+ id="pred-team1",
258
+ options=[{"label": t, "value": t} for t in sorted(ALL_TEAMS)],
259
+ value="Mumbai Indians",
260
+ clearable=False,
261
+ style={"marginBottom": "14px"},
262
+ ),
263
+
264
+ html.Label("Team 2", style={"fontSize": "13px", "fontWeight": 500}),
265
+ dcc.Dropdown(
266
+ id="pred-team2",
267
+ options=[{"label": t, "value": t} for t in sorted(ALL_TEAMS)],
268
+ value="Chennai Super Kings",
269
+ clearable=False,
270
+ style={"marginBottom": "14px"},
271
+ ),
272
+
273
+ html.Label("Venue", style={"fontSize": "13px", "fontWeight": 500}),
274
+ dcc.Dropdown(
275
+ id="pred-venue",
276
+ options=[{"label": v, "value": v} for v in ALL_VENUES],
277
+ value=ALL_VENUES[0] if ALL_VENUES else None,
278
+ clearable=False,
279
+ style={"marginBottom": "14px"},
280
+ ),
281
+
282
+ html.Label("Toss winner", style={"fontSize": "13px", "fontWeight": 500}),
283
+ dcc.Dropdown(
284
+ id="pred-toss-winner",
285
+ options=[{"label": t, "value": t} for t in sorted(ALL_TEAMS)],
286
+ value="Mumbai Indians",
287
+ clearable=False,
288
+ style={"marginBottom": "14px"},
289
+ ),
290
+
291
+ html.Label("Toss decision", style={"fontSize": "13px", "fontWeight": 500}),
292
+ dcc.RadioItems(
293
+ id="pred-toss-decision",
294
+ options=[
295
+ {"label": " Bat first", "value": "bat"},
296
+ {"label": " Field first", "value": "field"},
297
+ ],
298
+ value="field",
299
+ inline=True,
300
+ style={"fontSize": "13px", "marginBottom": "20px"},
301
+ ),
302
+
303
+ dbc.Button(
304
+ "Predict outcome",
305
+ id="predict-btn",
306
+ color="primary",
307
+ style={"width": "100%",
308
+ "background": "#7F77DD",
309
+ "border": "none",
310
+ "fontWeight": 600},
311
+ ),
312
+ ])
313
+ ], style={"border": "0.5px solid #e0e0e0"}),
314
+ ], md=4),
315
+
316
+ # ── Result panel ──────────────────────────────────
317
+ dbc.Col([
318
+ html.Div(id="prediction-output"),
319
+ dcc.Graph(id="win-prob-gauge", style={"height": "320px"}),
320
+ html.Div(id="historical-h2h"),
321
+ ], md=8),
322
+ ]),
323
+ ], fluid=True),
324
+ ])
325
+
326
+
327
+ # ════════════════════════════════════════════════════════════════════
328
+ # PAGE 4 — AUCTION SIMULATOR
329
+ # ════════════════════════════════════════════════════════════════════
330
+
331
+ def layout_auction_simulator():
332
+ def stat_slider(label, id_, min_, max_, value, step=1):
333
+ return html.Div([
334
+ html.Div([
335
+ html.Span(label, style={"fontSize": "13px", "fontWeight": 500}),
336
+ html.Span(id=f"{id_}-out", style={"fontSize": "13px",
337
+ "color": "#7F77DD",
338
+ "fontWeight": 600,
339
+ "float": "right"}),
340
+ ], style={"display": "flex", "justifyContent": "space-between"}),
341
+ dcc.Slider(
342
+ id=id_, min=min_, max=max_, value=value, step=step,
343
+ marks=None,
344
+ tooltip={"placement": "bottom", "always_visible": False},
345
+ ),
346
+ ], style={"marginBottom": "18px"})
347
+
348
+ return html.Div([
349
+ html.Div([
350
+ html.H1("Auction Value Simulator", className="page-title"),
351
+ html.P("Adjust player stats with the sliders to see predicted IPL auction price in real-time.",
352
+ className="page-subtitle"),
353
+ ], className="page-header"),
354
+
355
+ dbc.Container([
356
+ dbc.Row([
357
+ # ── Sliders ───────────────────────────────────────
358
+ dbc.Col([
359
+ dbc.Card([
360
+ dbc.CardBody([
361
+ html.H5("Batting stats",
362
+ style={"fontWeight": 600, "marginBottom": "16px"}),
363
+ stat_slider("Career runs", "sl-runs", 0, 8000, 2000, 50),
364
+ stat_slider("Batting average","sl-avg", 0, 80, 28, 0.5),
365
+ stat_slider("Strike rate", "sl-sr", 60, 220, 130, 0.5),
366
+ stat_slider("Centuries", "sl-100s", 0, 10, 1, 1),
367
+ stat_slider("Half-centuries", "sl-50s", 0, 60, 10, 1),
368
+ stat_slider("Boundary rate (%)", "sl-br", 0, 30, 12, 0.5),
369
+ stat_slider("Powerplay SR", "sl-pp-sr", 0, 220, 130, 0.5),
370
+ stat_slider("Death SR", "sl-death-sr",0, 300, 160, 0.5),
371
+ ])
372
+ ], style={"border": "0.5px solid #e0e0e0", "marginBottom": "16px"}),
373
+
374
+ dbc.Card([
375
+ dbc.CardBody([
376
+ html.H5("Bowling stats",
377
+ style={"fontWeight": 600, "marginBottom": "16px"}),
378
+ stat_slider("Career wickets", "sl-wkts", 0, 200, 30, 1),
379
+ stat_slider("Economy rate", "sl-econ", 5, 14, 8.5, 0.1),
380
+ stat_slider("Bowling average", "sl-bowl-avg", 10, 60, 35, 0.5),
381
+ stat_slider("Dot ball %", "sl-dot", 0, 60, 20, 0.5),
382
+ stat_slider("Death economy", "sl-d-econ", 5, 16, 9.5, 0.1),
383
+ stat_slider("Powerplay economy", "sl-pp-econ", 5, 14, 8.0, 0.1),
384
+ stat_slider("Matches bowled", "sl-mbowled", 0, 150, 40, 1),
385
+ ])
386
+ ], style={"border": "0.5px solid #e0e0e0"}),
387
+ ], md=5),
388
+
389
+ # ── Live result ───────────────────────────────────
390
+ dbc.Col([
391
+ dbc.Card([
392
+ dbc.CardBody([
393
+ html.H5("Predicted auction value",
394
+ style={"fontWeight": 600,
395
+ "textAlign": "center",
396
+ "marginBottom": "20px"}),
397
+ html.Div(id="auction-price-display",
398
+ style={"textAlign": "center"}),
399
+ dcc.Graph(id="auction-gauge",
400
+ style={"height": "260px"},
401
+ config={"displayModeBar": False}),
402
+ html.Hr(),
403
+ html.P("Similar players at this price",
404
+ className="section-title"),
405
+ html.Div(id="similar-players-table"),
406
+ ])
407
+ ], style={"border": "0.5px solid #e0e0e0", "position": "sticky", "top": "70px"}),
408
+ ], md=7),
409
+ ]),
410
+
411
+ html.Br(),
412
+ html.P("All-time player valuations leaderboard", className="section-title"),
413
+ dcc.Graph(id="valuation-chart", style={"height": "420px"}),
414
+
415
+ ], fluid=True),
416
+ ])
data/processed/batting_features.csv ADDED
@@ -0,0 +1,461 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ batter,total_runs,balls_faced,matches_batted,innings,fours,sixes,dot_balls,dismissals,strike_rate,batting_average,boundary_rate,dot_ball_pct,runs_per_match,sr_powerplay,sr_middle,sr_death,fifties,hundreds
2
+ V Kohli,9022,6743,267,6761,811,306,2226,237,133.8,38.07,16.57,33.01,33.79,123.74,130.9,202.63,66,8
3
+ RG Sharma,7185,5417,270,5435,653,311,2056,249,132.64,28.86,17.8,37.95,26.61,123.0,125.79,198.0,48,2
4
+ S Dhawan,6769,5304,221,5326,768,153,1970,193,127.62,35.07,17.36,37.14,30.63,121.69,131.26,165.78,51,2
5
+ DA Warner,6567,4682,184,4702,663,236,1715,164,140.26,40.04,19.2,36.63,35.69,136.32,141.07,179.65,62,4
6
+ KL Rahul,5593,4048,143,4059,489,227,1347,123,138.17,45.47,17.69,33.28,39.11,126.16,141.54,186.58,42,6
7
+ SK Raina,5536,4025,200,4046,506,204,1334,167,137.54,33.15,17.64,33.14,27.68,129.17,136.82,173.37,39,1
8
+ MS Dhoni,5439,3944,241,3966,375,264,1336,158,137.91,34.42,16.2,33.87,22.57,76.6,106.66,187.23,24,0
9
+ AM Rahane,5194,4158,191,4162,523,133,1519,174,124.92,29.85,15.78,36.53,27.19,120.32,126.02,164.96,34,2
10
+ AB de Villiers,5181,3400,170,3411,414,253,1039,125,152.38,41.45,19.62,30.56,30.48,118.41,140.96,235.26,40,3
11
+ SV Samson,5008,3556,179,3569,412,234,1223,157,140.83,31.9,18.17,34.39,27.98,127.86,141.65,195.83,26,5
12
+ CH Gayle,4997,3331,141,3346,408,359,1462,127,150.02,39.35,23.03,43.89,35.44,135.29,165.09,209.33,31,6
13
+ RV Uthappa,4954,3784,197,3801,481,182,1464,182,130.92,27.22,17.52,38.69,25.15,123.26,133.21,177.35,27,0
14
+ KD Karthik,4843,3570,233,3580,466,161,1219,187,135.66,25.9,17.56,34.15,20.79,100.69,124.7,188.55,22,0
15
+ F du Plessis,4773,3515,147,3522,440,174,1203,135,135.79,35.36,17.47,34.22,32.47,133.23,129.92,199.04,39,0
16
+ SA Yadav,4468,3017,158,3029,471,172,1030,130,148.09,34.37,21.31,34.14,28.28,135.1,145.68,195.47,30,2
17
+ JC Buttler,4391,2937,127,2948,439,196,1075,112,149.51,39.21,21.62,36.6,34.57,138.78,151.08,193.84,26,7
18
+ AT Rayudu,4348,3391,185,3409,359,173,1185,152,128.22,28.61,15.69,34.95,23.5,104.46,127.87,172.64,22,1
19
+ G Gambhir,4217,3394,151,3404,492,59,1235,134,124.25,31.47,16.23,36.39,27.93,121.43,127.63,139.84,36,0
20
+ Shubman Gill,4196,3025,121,3035,402,133,959,104,138.71,40.35,17.69,31.7,34.68,130.55,145.71,157.21,29,4
21
+ SS Iyer,4044,2993,138,2999,333,174,1019,119,135.12,33.98,16.94,34.05,29.3,110.18,139.33,193.13,31,0
22
+ MK Pandey,3951,3241,160,3250,340,116,1163,134,121.91,29.49,14.07,35.88,24.69,111.87,121.32,159.89,22,1
23
+ SR Watson,3880,2801,141,2813,377,190,1164,125,138.52,31.04,20.24,41.56,27.52,115.16,159.95,187.9,21,4
24
+ RR Pant,3756,2567,131,2576,339,176,884,113,146.32,33.24,20.06,34.44,28.67,119.41,142.62,203.87,20,2
25
+ Q de Kock,3444,2557,118,2563,334,143,992,110,134.69,31.31,18.65,38.8,29.19,129.2,138.81,206.1,24,3
26
+ KA Pollard,3437,2315,168,2329,221,224,842,129,148.47,26.64,19.22,36.37,20.46,92.13,126.89,184.05,16,0
27
+ RA Jadeja,3392,2608,200,2621,251,118,830,125,130.06,27.14,14.15,31.83,16.96,104.79,112.09,159.37,5,0
28
+ Ishan Kishan,3310,2347,120,2354,323,150,885,108,141.03,30.65,20.15,37.71,27.58,131.39,144.78,193.15,20,1
29
+ YK Pathan,3222,2233,153,2245,263,161,781,110,144.29,29.29,18.99,34.98,21.06,146.44,135.17,167.91,13,1
30
+ DA Miller,3200,2309,140,2316,232,144,729,92,138.59,34.78,16.28,31.57,22.86,90.66,129.08,172.81,13,1
31
+ N Rana,3022,2205,118,2211,282,149,881,110,137.05,27.47,19.55,39.95,25.61,113.26,146.37,188.76,22,0
32
+ WP Saha,2934,2296,143,2300,296,87,865,118,127.79,24.86,16.68,37.67,20.52,128.72,117.18,156.94,13,1
33
+ BB McCullum,2882,2176,109,2190,293,130,938,106,132.44,27.19,19.44,43.11,26.44,128.29,131.81,216.44,13,2
34
+ HH Pandya,2855,1949,146,1958,219,152,656,103,146.49,27.72,19.04,33.66,19.55,106.47,130.72,181.14,10,0
35
+ PA Patel,2848,2350,136,2358,365,49,993,127,121.19,22.43,17.62,42.26,20.94,121.27,119.57,140.0,13,0
36
+ GJ Maxwell,2820,1815,134,1823,238,161,653,117,155.37,24.1,21.98,35.98,21.04,134.12,157.43,182.52,18,0
37
+ MA Agarwal,2764,2055,125,2067,275,100,769,118,134.5,23.42,18.25,37.42,22.11,122.57,145.73,214.44,13,1
38
+ Yuvraj Singh,2754,2115,126,2122,218,149,890,109,130.21,25.27,17.35,42.08,21.86,97.41,124.92,181.02,13,0
39
+ V Sehwag,2728,1740,104,1755,334,106,650,98,156.78,27.84,25.29,37.36,26.23,146.67,178.78,235.71,16,2
40
+ RD Gaikwad,2680,1970,78,1979,248,101,698,68,136.04,39.41,17.72,35.43,34.36,126.1,144.54,183.76,21,2
41
+ AD Russell,2655,1518,114,1534,187,223,608,92,174.9,28.86,27.01,40.05,23.29,215.38,155.17,204.71,12,0
42
+ M Vijay,2619,2148,105,2150,247,91,927,96,121.93,27.28,15.74,43.16,24.94,113.01,141.36,168.18,13,2
43
+ SPD Smith,2495,1931,93,1945,226,60,602,78,129.21,31.99,14.81,31.18,26.83,120.71,120.26,173.67,11,1
44
+ SE Marsh,2489,1866,69,1871,269,78,693,65,133.39,38.29,18.6,37.14,36.07,112.66,150.74,163.46,20,1
45
+ YBK Jaiswal,2472,1627,75,1632,295,105,647,69,151.94,35.83,24.59,39.77,32.96,156.53,138.05,225.0,18,2
46
+ JH Kallis,2427,2213,95,2222,255,44,909,89,109.67,27.27,13.51,41.08,25.55,103.58,102.87,194.23,17,0
47
+ DR Smith,2385,1755,88,1764,245,117,787,81,135.9,29.44,20.63,44.84,27.1,125.0,153.65,155.41,17,0
48
+ N Pooran,2375,1488,94,1490,163,171,545,76,159.61,31.25,22.45,36.63,25.27,138.65,157.79,173.04,14,0
49
+ SR Tendulkar,2334,1941,78,1948,296,29,773,71,120.25,32.87,16.74,39.82,29.92,114.85,123.22,169.23,13,1
50
+ RA Tripathi,2291,1655,98,1662,229,85,603,86,138.43,26.64,18.97,36.44,23.38,137.7,135.18,168.0,12,0
51
+ Abhishek Sharma,2196,1325,82,1329,210,129,488,75,165.74,29.28,25.58,36.83,26.78,166.29,165.88,160.78,12,2
52
+ R Dravid,2174,1878,82,1882,269,28,780,77,115.76,28.23,15.81,41.53,26.51,106.81,119.63,179.78,11,0
53
+ MP Stoinis,2136,1452,104,1458,168,114,498,75,147.11,28.48,19.42,34.3,20.54,118.18,133.0,190.83,10,1
54
+ KS Williamson,2132,1692,76,1697,187,64,583,59,126.0,36.14,14.83,34.46,28.05,98.48,134.63,168.66,18,0
55
+ B Sai Sudharsan,2115,1447,48,1455,215,70,443,43,146.16,49.19,19.7,30.62,44.06,134.7,148.56,210.99,14,3
56
+ AJ Finch,2092,1626,90,1635,214,78,683,84,128.66,24.9,17.96,42.0,23.24,116.13,140.13,162.4,15,0
57
+ AC Gilchrist,2069,1483,80,1495,239,92,673,76,139.51,27.22,22.32,45.38,25.86,133.79,152.54,208.0,11,2
58
+ D Padikkal,2048,1564,81,1568,214,72,612,77,130.95,26.6,18.29,39.13,25.28,129.85,130.86,144.29,14,1
59
+ JP Duminy,2029,1631,75,1636,126,79,516,49,124.4,41.41,12.57,31.64,27.05,98.35,108.75,182.1,14,0
60
+ S Dube,2009,1428,83,1430,122,128,512,66,140.69,30.44,17.51,35.85,24.2,100.0,137.41,159.26,10,0
61
+ MEK Hussey,1977,1610,58,1612,198,52,606,52,122.8,38.02,15.53,37.64,34.09,105.78,136.47,188.51,15,1
62
+ AR Patel,1947,1462,129,1466,133,94,485,94,133.17,20.71,15.53,33.17,15.09,102.59,121.59,157.98,3,0
63
+ PP Shaw,1892,1280,79,1283,238,61,483,77,147.81,24.57,23.36,37.73,23.95,143.43,163.24,163.64,14,0
64
+ H Klaasen,1829,1124,53,1130,123,103,289,43,162.72,42.53,20.11,25.71,34.51,128.92,154.62,191.48,10,2
65
+ SP Narine,1820,1118,122,1119,191,120,519,98,162.79,18.57,27.82,46.42,14.92,164.78,184.56,92.38,7,1
66
+ DPMD Jayawardene,1808,1462,78,1464,200,40,560,64,123.67,28.25,16.42,38.3,23.18,115.99,115.97,180.92,10,1
67
+ KH Pandya,1792,1358,117,1359,156,67,503,82,131.96,21.85,16.42,37.04,15.32,99.13,125.06,157.14,2,0
68
+ Mandeep Singh,1706,1385,97,1388,176,38,523,84,123.18,20.31,15.45,37.76,17.59,115.21,118.44,160.59,6,0
69
+ P Simran Singh,1701,1095,59,1096,178,88,425,58,155.34,29.33,24.29,38.81,28.83,151.78,161.3,172.5,12,1
70
+ KK Nair,1699,1296,77,1298,186,49,501,73,131.1,23.27,18.13,38.66,22.06,124.69,126.38,190.09,11,0
71
+ MK Tiwary,1695,1444,83,1449,156,40,530,60,117.38,28.25,13.57,36.7,20.42,95.72,110.53,155.11,7,0
72
+ KC Sangakkara,1687,1385,68,1392,195,27,515,69,121.81,24.45,16.03,37.18,24.81,112.03,124.8,157.78,10,0
73
+ R Parag,1687,1209,81,1212,120,94,429,68,139.54,24.81,17.7,35.48,20.83,119.73,135.41,161.73,7,0
74
+ Tilak Varma,1680,1157,58,1160,134,81,369,44,145.2,38.18,18.58,31.89,28.97,123.4,138.0,196.32,8,1
75
+ JM Bairstow,1674,1145,52,1149,173,74,445,50,146.2,33.48,21.57,38.86,32.19,145.82,146.21,155.17,9,2
76
+ AK Markram,1633,1208,63,1211,130,67,380,55,135.18,29.69,16.31,31.46,25.92,125.81,131.9,186.07,10,0
77
+ DJ Bravo,1560,1196,110,1204,120,66,452,69,130.43,22.61,15.55,37.79,14.18,98.68,97.92,190.02,5,0
78
+ SO Hetmyer,1560,1056,84,1061,98,96,363,58,147.73,26.9,18.37,34.38,18.57,105.63,125.0,178.65,5,0
79
+ NV Ojha,1554,1308,94,1313,121,79,599,74,118.81,21.0,15.29,45.8,16.53,99.63,127.74,144.24,6,0
80
+ MR Marsh,1504,1087,57,1087,122,86,430,54,138.36,27.85,19.14,39.56,26.39,144.17,128.69,155.45,10,1
81
+ VR Iyer,1497,1089,57,1090,137,67,418,50,137.47,29.94,18.73,38.38,26.26,130.65,137.37,182.5,12,1
82
+ DJ Hooda,1497,1170,101,1175,98,62,389,81,127.95,18.48,13.68,33.25,14.82,94.47,130.83,150.21,8,0
83
+ SS Tiwary,1494,1235,73,1244,111,50,428,49,120.97,30.49,13.04,34.66,20.47,109.63,114.12,151.59,8,0
84
+ S Badrinath,1441,1208,65,1212,154,28,458,48,119.29,30.02,15.07,37.91,22.17,82.17,123.23,163.68,11,0
85
+ EJG Morgan,1406,1147,74,1148,112,64,478,61,122.58,23.05,15.34,41.67,19.0,93.36,117.2,168.33,5,0
86
+ BJ Hodge,1400,1112,63,1118,122,43,399,46,125.9,30.43,14.84,35.88,22.22,92.57,116.16,169.76,6,0
87
+ SC Ganguly,1349,1257,56,1263,137,42,594,54,107.32,24.98,14.24,47.26,24.09,97.7,109.78,175.38,7,0
88
+ RM Patidar,1349,851,45,852,88,91,270,42,158.52,32.12,21.03,31.73,29.98,119.55,173.71,162.07,11,1
89
+ TM Head,1332,825,45,828,148,63,303,41,161.45,32.49,25.58,36.73,29.6,169.57,137.5,195.83,8,1
90
+ CA Lynn,1329,941,42,945,132,66,387,39,141.23,34.08,21.04,41.13,31.64,144.39,135.46,136.36,10,0
91
+ DJ Hussey,1322,1070,61,1075,90,60,397,48,123.55,27.54,14.02,37.1,21.67,103.73,116.6,177.56,5,0
92
+ RK Singh,1318,920,58,926,108,64,311,41,143.26,32.15,18.7,33.8,22.72,127.27,114.26,191.96,6,0
93
+ PD Salt,1258,729,40,733,138,67,267,38,172.57,33.11,28.12,36.63,31.45,168.92,179.5,218.18,12,0
94
+ V Shankar,1233,952,63,954,88,48,308,46,129.52,26.8,14.29,32.35,19.57,91.72,121.2,172.84,7,0
95
+ KM Jadhav,1208,969,81,981,102,40,341,54,124.66,22.37,14.65,35.19,14.91,88.43,121.41,143.38,4,0
96
+ MM Ali,1167,834,59,837,95,67,328,50,139.93,23.34,19.42,39.33,19.78,122.08,140.08,176.52,6,0
97
+ R Tewatia,1161,857,82,861,94,55,310,51,135.47,22.76,17.39,36.17,14.16,92.86,99.76,171.0,1,0
98
+ TM Dilshan,1153,1001,50,1007,140,24,451,41,115.18,28.12,16.38,45.05,23.06,108.15,108.5,188.37,9,0
99
+ IK Pathan,1150,947,82,950,88,38,336,52,121.44,22.12,13.31,35.48,14.02,113.79,96.83,158.15,1,0
100
+ A Badoni,1135,832,54,833,91,44,275,44,136.42,25.8,16.23,33.05,21.02,96.88,122.94,170.73,7,0
101
+ ML Hayden,1107,799,32,806,121,44,332,27,138.55,41.0,20.65,41.55,34.59,133.2,141.43,200.0,8,0
102
+ M Vohra,1083,828,51,829,104,43,358,48,130.8,22.56,17.75,43.24,21.24,124.75,142.31,200.0,3,0
103
+ DP Conway,1080,776,28,779,117,34,271,25,139.18,43.2,19.46,34.92,38.57,124.15,156.29,154.17,11,0
104
+ LMP Simmons,1079,848,29,852,109,44,372,27,127.24,39.96,18.04,43.87,37.21,118.47,141.4,128.0,11,1
105
+ LS Livingstone,1066,687,49,694,70,76,249,41,155.17,26.0,21.25,36.24,21.76,130.32,145.74,219.01,7,0
106
+ JM Sharma,1053,690,53,692,82,65,256,45,152.61,23.4,21.3,37.1,19.87,84.62,145.07,181.95,1,0
107
+ TH David,1029,590,51,592,66,75,184,28,174.41,36.75,23.9,31.19,20.18,,134.29,202.9,2,0
108
+ LRPL Taylor,1017,818,54,822,66,46,307,41,124.33,24.8,13.69,37.53,18.83,126.45,113.07,165.93,3,0
109
+ KP Pietersen,1001,742,36,743,91,40,275,28,134.91,35.75,17.65,37.06,27.81,130.19,129.14,200.0,4,1
110
+ MC Henriques,1000,785,54,788,87,28,269,38,127.39,26.32,14.65,34.27,18.52,123.76,110.05,175.76,5,0
111
+ SM Curran,997,731,53,735,85,41,256,41,136.39,24.32,17.24,35.02,18.81,110.06,121.07,186.8,6,0
112
+ Y Venugopal Rao,985,832,52,836,77,37,324,42,118.39,23.45,13.7,38.94,18.94,82.64,111.67,157.87,3,0
113
+ JA Morkel,975,683,67,687,61,55,226,40,142.75,24.38,16.98,33.09,14.55,121.74,120.13,164.55,3,0
114
+ A Symonds,974,745,36,750,74,41,273,26,130.74,37.46,15.44,36.64,27.06,104.58,126.69,168.31,5,1
115
+ CL White,971,757,45,760,76,38,260,35,128.27,27.74,15.06,34.35,21.58,89.17,121.24,191.22,6,0
116
+ BA Stokes,935,695,43,698,81,32,231,41,134.53,22.8,16.26,33.24,21.74,129.13,133.91,150.59,2,2
117
+ Dhruv Jurel,928,619,44,619,76,48,199,30,149.92,30.93,20.03,32.15,21.09,140.74,131.0,178.39,7,0
118
+ T Stubbs,912,585,37,586,66,44,144,20,155.9,45.6,18.8,24.62,24.65,121.88,118.67,216.74,5,0
119
+ C Green,903,593,36,596,78,42,181,26,152.28,34.73,20.24,30.52,25.08,146.31,149.65,170.75,3,1
120
+ HH Gibbs,886,805,36,807,83,31,378,32,110.06,27.69,14.16,46.96,24.61,103.93,112.54,174.29,6,0
121
+ STR Binny,880,682,66,683,66,35,251,44,129.03,20.0,14.81,36.8,13.33,69.39,120.57,160.0,0,0
122
+ Shashank Singh,843,539,38,539,62,47,159,20,156.4,42.15,20.22,29.5,22.18,137.14,123.13,197.03,5,0
123
+ Harbhajan Singh,833,599,88,604,79,42,251,56,139.07,14.88,20.2,41.9,9.47,114.06,106.55,158.31,1,0
124
+ R Ashwin,833,704,93,705,64,29,257,62,118.32,13.44,13.21,36.51,8.96,102.38,106.19,134.5,1,0
125
+ Priyansh Arya,828,430,25,430,81,57,155,25,192.56,33.12,32.09,36.05,33.12,189.62,200.89,,5,1
126
+ Abdul Samad,815,558,56,561,52,51,196,46,146.06,17.72,18.46,35.13,14.55,120.0,120.96,174.43,0,0
127
+ MS Bisla,798,700,39,702,93,23,339,37,114.0,21.57,16.57,48.43,20.46,106.33,128.11,160.0,4,0
128
+ Shakib Al Hasan,795,635,52,639,73,21,212,39,125.2,20.38,14.8,33.39,15.29,88.46,118.45,150.55,2,0
129
+ N Wadhera,784,566,36,566,64,43,217,31,138.52,25.29,18.9,38.34,21.78,115.25,139.35,152.0,4,0
130
+ ST Jayasuriya,768,529,30,532,84,39,251,29,145.18,26.48,23.25,47.45,25.6,139.85,160.74,,4,1
131
+ M Shahrukh Khan,767,521,52,521,48,52,187,32,147.22,23.97,19.19,35.89,14.75,112.12,133.33,171.84,2,0
132
+ SN Khan,746,544,43,548,86,20,194,36,137.13,20.72,19.49,35.66,17.35,137.78,110.61,184.83,2,0
133
+ GC Smith,739,664,29,668,94,9,295,30,111.3,24.63,15.51,44.43,25.48,95.59,137.91,163.64,4,0
134
+ AD Mathews,724,573,41,575,44,29,183,31,126.35,23.35,12.74,31.94,17.66,68.75,114.46,154.07,1,0
135
+ Abishek Porel,691,479,30,480,68,27,162,29,144.26,23.83,19.83,33.82,23.03,143.15,136.84,206.9,3,0
136
+ TL Suman,676,573,39,575,55,26,241,30,117.98,22.53,14.14,42.06,17.33,102.5,125.0,131.51,2,0
137
+ AM Nayar,672,573,50,577,55,20,223,39,117.28,17.23,13.09,38.92,13.44,84.04,108.53,161.15,0,0
138
+ A Raghuvanshi,672,477,26,477,70,23,160,23,140.88,29.22,19.5,33.54,25.85,140.88,140.08,144.44,4,0
139
+ Washington Sundar,668,521,51,522,60,20,178,37,128.21,18.05,15.36,34.17,13.1,117.65,111.81,153.27,1,0
140
+ GJ Bailey,663,541,36,544,59,19,198,29,122.55,22.86,14.42,36.6,18.42,99.38,95.13,187.58,2,0
141
+ Nithish Kumar Reddy,657,478,29,478,40,39,167,24,137.45,27.38,16.53,34.94,22.66,89.0,141.16,182.14,3,0
142
+ E Lewis,654,477,26,477,62,36,212,24,137.11,27.25,20.55,44.44,25.15,140.26,128.57,160.0,4,0
143
+ V Suryavanshi,652,303,16,303,52,61,116,16,215.18,40.75,37.29,38.28,40.75,218.4,207.69,,3,2
144
+ PP Chawla,624,561,86,563,56,20,245,57,111.23,10.95,13.55,43.67,7.26,114.29,91.52,124.77,0,0
145
+ CH Morris,618,397,49,398,41,35,119,29,155.67,21.31,19.14,29.97,12.61,211.11,113.6,173.76,2,0
146
+ JJ Roy,614,441,21,443,75,21,178,18,139.23,34.11,21.77,40.36,29.24,131.17,155.75,170.0,4,0
147
+ Rashid Khan,613,389,69,395,44,41,155,45,157.58,13.62,21.85,39.85,8.88,,130.0,165.89,1,0
148
+ PJ Cummins,612,400,48,402,39,41,154,33,153.0,18.55,20.0,38.5,12.75,20.0,145.88,161.33,3,0
149
+ JD Ryder,604,455,29,458,69,19,191,29,132.75,20.83,19.34,41.98,20.83,132.28,131.46,147.37,4,0
150
+ HM Amla,577,406,16,407,60,21,139,13,142.12,44.38,19.95,34.24,36.06,124.89,150.35,213.16,3,2
151
+ Shahbaz Ahmed,560,462,39,464,30,25,160,30,121.21,18.67,11.9,34.63,14.36,80.56,107.86,156.85,1,0
152
+ Naman Dhir,546,324,26,325,52,29,101,20,168.52,27.3,25.0,31.17,21.0,151.14,152.88,192.42,2,0
153
+ CJ Anderson,538,421,29,423,40,31,185,22,127.79,24.45,16.86,43.94,18.55,79.27,123.97,197.22,3,0
154
+ RS Bopara,531,453,22,453,39,16,160,19,117.22,27.95,12.14,35.32,24.14,94.44,118.31,161.54,3,0
155
+ JP Faulkner,527,385,45,390,36,23,127,28,136.88,18.82,15.32,32.99,11.71,70.0,93.94,166.95,0,0
156
+ MK Lomror,527,372,35,373,33,30,120,29,141.67,18.17,16.94,32.26,15.06,80.85,156.48,138.53,1,0
157
+ RD Rickelton,525,355,19,355,56,29,157,18,147.89,29.17,23.94,44.23,27.63,149.61,145.45,50.0,4,0
158
+ D Brevis,519,359,20,359,35,37,146,20,144.57,25.95,20.06,40.67,25.95,108.89,148.33,224.14,2,0
159
+ M Manhas,514,470,38,470,43,10,181,24,109.36,21.42,11.28,38.51,13.53,86.11,99.6,136.91,0,0
160
+ Gurkeerat Singh,511,422,32,422,55,11,156,27,121.09,18.93,15.64,36.97,15.97,90.57,107.38,160.8,2,0
161
+ OA Shah,506,388,22,389,34,23,133,13,130.41,38.92,14.69,34.28,23.0,107.14,120.7,151.88,4,0
162
+ PC Valthaty,505,414,23,418,61,20,215,22,121.98,22.95,19.57,51.93,21.96,109.76,146.15,207.69,2,1
163
+ SW Billings,503,385,27,388,40,20,139,26,130.65,19.35,15.58,36.1,18.63,125.64,126.13,165.22,3,0
164
+ SE Rutherford,500,368,26,368,29,37,156,22,135.87,22.73,17.93,42.39,19.23,26.32,136.02,148.47,1,0
165
+ R Powell,486,347,28,347,31,35,147,24,140.06,20.25,19.02,42.36,17.36,115.38,109.5,188.06,1,0
166
+ RR Rossouw,473,306,22,308,45,25,115,21,154.58,22.52,22.88,37.58,21.5,130.43,161.82,215.38,2,0
167
+ WG Jacks,463,303,19,304,38,29,111,16,152.81,28.94,22.11,36.63,24.37,144.44,160.76,100.0,2,1
168
+ DT Christian,460,394,41,398,23,19,134,28,116.75,16.43,10.66,34.01,11.22,35.71,100.52,139.57,0,0
169
+ A Mhatre,441,250,13,250,51,23,89,12,176.4,36.75,29.6,35.6,33.92,179.74,180.46,90.0,3,0
170
+ Ashutosh Sharma,426,270,20,273,27,30,95,17,157.78,25.06,21.11,35.19,21.3,,139.29,170.89,2,0
171
+ NLTC Perera,424,306,30,309,23,26,112,24,138.56,17.67,16.01,36.6,14.13,137.5,116.15,166.67,0,0
172
+ SA Asnodkar,423,337,19,339,56,10,149,19,125.52,22.26,19.58,44.21,22.26,128.21,119.42,,2,0
173
+ JR Hopes,417,305,19,306,49,11,111,17,136.72,24.53,19.67,36.39,21.95,126.0,148.31,143.24,4,0
174
+ R Ravindra,413,289,18,290,40,16,99,16,142.91,25.81,19.38,34.26,22.94,136.19,147.14,266.67,2,0
175
+ J Botha,409,358,28,359,39,5,133,22,114.25,18.59,12.29,37.15,14.61,80.28,114.81,137.76,1,0
176
+ LR Shukla,405,350,33,350,33,16,144,29,115.71,13.97,14.0,41.14,12.27,58.33,100.97,144.27,0,0
177
+ AL Menaria,401,354,23,356,24,18,140,22,113.28,18.23,11.86,39.55,17.43,88.0,111.52,131.67,0,0
178
+ MV Boucher,394,307,23,309,32,13,107,15,128.34,26.27,14.66,34.85,17.13,93.1,110.59,165.74,1,0
179
+ CA Pujara,390,390,22,391,50,4,187,18,100.0,21.67,13.85,47.95,17.73,93.78,103.33,137.93,1,0
180
+ Azhar Mahmood,388,303,21,303,39,13,116,19,128.05,20.42,17.16,38.28,18.48,90.91,126.57,152.38,2,0
181
+ J Fraser-McGurk,385,192,15,194,39,30,83,14,200.52,27.5,35.94,43.23,25.67,213.16,152.5,,4,0
182
+ Sameer Rizvi,381,273,16,273,30,22,110,13,139.56,29.31,19.05,40.29,23.81,56.25,141.05,186.27,3,0
183
+ A Mishra,381,417,55,419,31,5,177,30,91.37,12.7,8.63,42.45,6.93,83.33,68.37,113.4,0,0
184
+ KR Mayers,379,258,13,263,38,22,124,13,146.9,29.15,23.26,48.06,29.15,141.98,169.57,,4,0
185
+ DB Ravi Teja,375,315,25,317,35,9,116,20,119.05,18.75,13.97,36.83,15.0,94.2,118.24,140.23,1,0
186
+ S Sohal,368,289,20,292,34,18,136,18,127.34,20.44,17.99,47.06,18.4,128.45,137.5,44.44,2,0
187
+ P Negi,365,288,35,289,27,16,112,26,126.74,14.04,14.93,38.89,10.43,62.5,108.94,143.95,0,0
188
+ Rahmanullah Gurbaz,363,270,18,271,34,22,134,17,134.44,21.35,20.74,49.63,20.17,127.88,156.45,,2,0
189
+ KV Sharma,352,295,40,295,20,17,113,25,119.32,14.08,12.54,38.31,8.8,71.43,95.0,141.61,0,0
190
+ DJ Mitchell,351,267,15,267,28,10,75,13,131.46,27.0,14.23,28.09,23.4,137.76,127.14,131.03,2,0
191
+ R Bhatia,342,284,47,284,24,13,104,29,120.42,11.79,13.03,36.62,7.28,100.0,82.35,155.78,0,0
192
+ P Kumar,340,312,57,314,22,17,148,34,108.97,10.0,12.5,47.44,5.96,75.0,100.0,112.45,0,0
193
+ AP Tare,339,272,27,273,40,11,129,24,124.63,14.12,18.75,47.43,12.56,114.62,158.97,161.9,1,0
194
+ SN Thakur,339,256,42,257,31,13,96,28,132.42,12.11,17.19,37.5,8.07,0.0,128.7,139.42,1,0
195
+ B Kumar,332,361,73,362,32,3,166,37,91.97,8.97,9.7,45.98,4.55,,64.56,99.65,0,0
196
+ JEC Franklin,327,300,16,301,25,9,115,11,109.0,29.73,11.33,38.33,20.44,84.31,110.88,152.94,1,0
197
+ RN ten Doeschate,326,235,21,235,26,15,77,17,138.72,19.18,17.45,32.77,15.52,85.71,110.0,173.87,1,0
198
+ Anuj Rawat,318,267,21,267,26,14,114,14,119.1,22.71,14.98,42.7,15.14,97.92,93.27,189.55,1,0
199
+ R Vinay Kumar,310,274,42,274,21,9,103,26,113.14,11.92,10.95,37.59,7.38,,91.03,121.94,0,0
200
+ Aniket Verma,309,197,19,197,17,25,76,14,156.85,22.07,21.32,38.58,16.26,100.0,147.52,181.01,1,0
201
+ Lalit Yadav,305,285,21,290,27,7,116,15,107.02,20.33,11.93,40.7,14.52,70.45,109.6,125.0,0,0
202
+ DB Das,304,260,22,261,23,16,117,12,116.92,25.33,15.0,45.0,13.82,115.79,108.2,130.86,0,0
203
+ C de Grandhomme,303,224,21,225,18,18,82,15,135.27,20.2,16.07,36.61,14.43,11.11,141.88,138.78,0,0
204
+ LA Pomersbach,302,243,16,246,25,13,102,11,124.28,27.45,15.64,41.98,18.88,133.33,104.1,173.53,1,0
205
+ UBT Chand,300,299,20,300,32,9,155,20,100.33,15.0,13.71,51.84,15.0,94.8,109.32,87.5,1,0
206
+ Ramandeep Singh,299,206,26,208,17,19,71,16,145.15,18.69,17.48,34.47,11.5,80.0,115.93,186.36,0,0
207
+ DJG Sammy,295,241,20,241,15,18,98,15,122.41,19.67,13.69,40.66,14.75,155.56,105.62,155.56,1,0
208
+ SP Goswami,293,293,21,295,32,3,131,20,100.0,14.65,11.95,44.71,13.95,97.3,108.51,78.57,1,0
209
+ A Manohar,292,236,20,236,23,14,92,19,123.73,15.37,15.68,38.98,14.6,66.67,110.61,166.23,0,0
210
+ Y Nagar,285,259,20,259,20,9,101,15,110.04,19.0,11.2,39.0,14.25,45.45,90.34,144.66,0,0
211
+ GH Vihari,284,319,23,321,23,1,136,20,89.03,14.2,7.52,42.63,12.35,71.03,95.62,105.77,0,0
212
+ VVS Laxman,282,266,20,267,33,5,119,16,106.02,17.62,14.29,44.74,14.1,100.0,130.0,50.0,1,0
213
+ JO Holder,282,219,28,221,14,20,92,21,128.77,13.43,15.53,42.01,10.07,61.9,126.67,141.46,0,0
214
+ A Ashish Reddy,280,193,23,193,16,15,58,15,145.08,18.67,16.06,30.05,12.17,83.33,138.33,151.18,0,0
215
+ B Chipli,280,250,21,251,28,7,104,16,112.0,17.5,14.0,41.6,13.33,77.65,112.4,177.27,1,0
216
+ JP Inglis,278,177,11,177,26,16,69,10,157.06,27.8,23.73,38.98,25.27,162.03,154.43,147.37,1,0
217
+ MJ Lumb,278,191,12,194,45,6,89,10,145.55,27.8,26.7,46.6,23.17,147.62,130.43,,1,0
218
+ PBB Rajapaksa,277,190,13,191,22,15,70,12,145.79,23.08,19.47,36.84,21.31,158.11,141.07,50.0,1,0
219
+ JC Archer,275,191,34,195,15,18,71,20,143.98,13.75,17.28,37.17,8.09,0.0,119.15,156.43,0,0
220
+ HV Patel,274,234,43,234,17,15,99,28,117.09,9.79,13.68,42.31,6.37,,95.6,130.77,0,0
221
+ PK Garg,273,238,19,241,16,9,86,19,114.71,14.37,10.5,36.13,14.37,98.31,107.38,183.33,1,0
222
+ MJ Guptill,271,196,13,197,24,15,88,12,138.27,22.58,19.9,44.9,20.85,138.46,137.04,,1,0
223
+ C Connolly,270,165,7,165,24,18,61,6,163.64,45.0,25.45,36.97,38.57,115.0,189.36,209.09,2,0
224
+ R Sathish,270,230,24,231,22,6,87,16,117.39,16.88,12.17,37.83,11.25,0.0,102.42,144.44,0,0
225
+ Atharva Taide,260,179,10,179,30,8,65,9,145.25,28.89,21.23,36.31,26.0,153.39,129.51,,2,0
226
+ M Kaif,259,249,22,250,22,6,111,16,104.02,16.19,11.24,44.58,11.77,69.39,111.83,116.13,0,0
227
+ K Rabada,250,232,32,233,19,11,106,19,107.76,13.16,12.93,45.69,7.81,60.0,75.27,132.09,0,0
228
+ K Gowtham,247,148,27,148,15,17,51,18,166.89,13.72,21.62,34.46,9.15,114.29,142.62,190.0,0,0
229
+ Harpreet Brar,244,203,26,203,19,10,82,13,120.2,18.77,14.29,40.39,9.38,,87.5,138.17,0,0
230
+ SM Katich,241,185,11,186,26,8,80,10,130.27,24.1,18.38,43.24,21.91,129.75,131.37,130.77,2,0
231
+ BCJ Cutting,238,141,17,141,15,19,53,11,168.79,21.64,24.11,37.59,14.0,50.0,96.67,190.83,0,0
232
+ MD Mishra,237,206,17,208,24,8,97,15,115.05,15.8,15.53,47.09,13.94,108.27,120.69,153.33,0,0
233
+ R Shepherd,224,112,16,113,15,19,35,10,200.0,22.4,30.36,31.25,14.0,,135.71,238.57,1,0
234
+ Mohammad Nabi,221,151,19,152,18,12,55,17,146.36,13.0,19.87,36.42,11.63,164.71,140.0,147.3,0,0
235
+ K Goel,218,231,16,231,17,9,122,13,94.37,16.77,11.26,52.81,13.62,97.62,73.17,109.09,0,0
236
+ AA Jhunjhunwala,217,209,15,210,19,5,89,14,103.83,15.5,11.48,42.58,14.47,59.62,111.76,139.47,1,0
237
+ R Dhawan,210,187,22,187,18,7,84,10,112.3,21.0,13.37,44.92,9.55,,81.4,138.61,0,0
238
+ Kuldeep Yadav,210,255,41,255,18,3,128,15,82.35,14.0,8.24,50.2,5.12,,60.61,89.95,0,0
239
+ UT Yadav,208,201,48,201,16,9,96,20,103.48,10.4,12.44,47.76,4.33,,60.0,114.29,0,0
240
+ CA Ingram,205,179,15,180,22,5,74,12,114.53,17.08,15.08,41.34,13.67,70.37,113.68,151.43,0,0
241
+ PD Collingwood,203,156,7,156,9,13,57,4,130.13,50.75,14.1,36.54,29.0,116.13,114.77,178.38,3,0
242
+ JD Unadkat,201,169,28,169,16,7,67,14,118.93,14.36,13.61,39.64,7.18,,96.08,128.81,0,0
243
+ KS Bharat,199,161,8,163,12,8,56,7,123.6,28.43,12.42,34.78,24.88,110.26,124.29,200.0,1,0
244
+ SK Warne,198,213,27,214,14,6,100,19,92.96,10.42,9.39,46.95,7.33,,82.0,102.65,0,0
245
+ SP Fleming,196,162,10,165,27,3,78,9,120.99,21.78,18.52,48.15,19.6,116.0,137.84,,0,0
246
+ AS Raut,194,167,16,167,13,7,62,11,116.17,17.64,11.98,37.13,12.12,83.33,97.47,140.79,0,0
247
+ Salman Butt,193,160,7,161,30,2,75,7,120.62,27.57,20.0,46.88,27.57,110.28,139.22,200.0,1,0
248
+ BJ Rohrer,193,141,8,141,21,5,52,7,136.88,27.57,18.44,36.88,24.12,50.0,109.17,243.33,1,0
249
+ YV Takawale,192,177,10,178,26,3,95,8,108.47,24.0,16.38,53.67,19.2,92.14,136.0,241.67,0,0
250
+ D Ferreira,191,132,9,132,19,10,55,8,144.7,23.88,21.97,41.67,21.22,116.67,148.61,145.83,2,0
251
+ HC Brook,190,153,11,154,23,4,65,9,124.18,21.11,17.65,42.48,17.27,109.78,146.34,145.0,0,1
252
+ SB Dubey,189,109,13,109,15,12,31,7,173.39,27.0,24.77,28.44,14.54,233.33,114.29,198.53,0,0
253
+ Bipul Sharma,187,123,17,123,11,9,33,6,152.03,31.17,16.26,26.83,11.0,,134.62,156.7,0,0
254
+ MS Wade,183,177,14,177,23,2,85,13,103.39,14.08,14.12,48.02,13.07,110.81,90.91,,0,0
255
+ SD Hope,183,122,9,122,12,12,45,8,150.0,22.88,19.67,36.89,20.33,138.57,175.56,100.0,0,0
256
+ FY Fazal,183,172,11,173,22,1,67,9,106.4,20.33,13.37,38.95,16.64,98.86,111.11,120.0,0,0
257
+ Sikandar Raza,182,136,9,136,12,8,52,7,133.82,26.0,14.71,38.24,20.22,129.41,136.96,125.93,1,0
258
+ CR Brathwaite,181,110,14,111,10,16,44,14,164.55,12.93,23.64,40.0,12.93,,100.0,201.43,0,0
259
+ AC Voges,181,143,7,143,15,3,44,6,126.57,30.17,12.59,30.77,25.86,84.62,120.93,150.0,0,0
260
+ S Gopal,180,169,22,169,19,2,67,13,106.51,13.85,12.43,39.64,8.18,42.86,78.38,135.23,0,0
261
+ AB Agarkar,179,151,18,154,13,5,53,8,118.54,22.38,11.92,35.1,9.94,153.85,84.75,137.97,0,0
262
+ MF Maharoof,177,123,14,123,12,9,43,10,143.9,17.7,17.07,34.96,12.64,50.0,104.26,171.62,0,0
263
+ C Munro,177,141,11,141,19,8,65,9,125.53,19.67,19.15,46.1,16.09,132.38,109.68,80.0,0,0
264
+ DH Yagnik,170,133,17,137,23,2,55,9,127.82,18.89,18.8,41.35,10.0,0.0,120.0,139.39,0,0
265
+ CM Gautam,169,149,13,150,17,6,75,9,113.42,18.78,15.44,50.34,13.0,111.94,108.89,121.62,0,0
266
+ MG Johnson,167,163,28,164,10,7,76,14,102.45,11.93,10.43,46.63,5.96,,69.23,108.76,0,0
267
+ MN van Wyk,167,131,5,132,19,1,41,3,127.48,55.67,15.27,31.3,33.4,110.34,120.9,154.29,1,0
268
+ DW Steyn,167,160,33,160,14,3,69,22,104.38,7.59,10.62,43.12,5.06,,39.13,115.33,0,0
269
+ PA Reddy,164,160,10,160,15,2,65,10,102.5,16.4,10.62,40.62,16.4,96.49,109.09,300.0,0,0
270
+ N Jagadeesan,162,147,10,147,21,2,65,9,110.2,18.0,15.65,44.22,16.2,104.0,122.95,81.82,0,0
271
+ MN Samuels,161,172,14,172,9,7,84,12,93.6,13.42,9.3,48.84,11.5,37.84,104.07,158.33,0,0
272
+ RE van der Merwe,159,141,15,141,11,8,63,11,112.77,14.45,13.48,44.68,10.6,102.56,109.09,130.56,0,0
273
+ R McLaren,159,171,13,171,14,1,69,8,92.98,19.88,8.77,40.35,12.23,73.91,86.14,117.02,1,0
274
+ MD Choudhary,156,109,8,109,9,12,44,5,143.12,31.2,19.27,40.37,19.5,,128.95,150.7,1,0
275
+ V Nigam,154,89,9,89,18,8,32,6,173.03,25.67,29.21,35.96,17.11,250.0,155.88,172.34,0,0
276
+ MW Short,153,131,8,131,18,4,60,8,116.79,19.12,16.79,45.8,19.12,123.16,102.86,0.0,0,0
277
+ J Overton,151,98,8,98,14,7,33,5,154.08,30.2,21.43,33.67,18.88,,151.61,155.22,0,0
278
+ M Jansen,151,144,22,144,8,7,60,13,104.86,11.62,10.42,41.67,6.86,100.0,107.5,103.88,0,0
279
+ AD Hales,148,117,6,118,13,6,47,6,126.5,24.67,16.24,40.17,24.67,135.23,100.0,,0,0
280
+ D Wiese,148,100,11,101,12,7,30,6,148.0,24.67,19.0,30.0,13.45,,125.81,157.97,0,0
281
+ P Nissanka,147,101,7,101,19,5,39,7,145.54,21.0,23.76,38.61,21.0,156.98,80.0,,0,0
282
+ SM Pollock,147,111,8,111,12,8,42,8,132.43,18.38,18.02,37.84,18.38,50.0,106.06,205.71,0,0
283
+ S Vidyut,145,109,8,109,21,3,49,8,133.03,18.12,22.02,44.95,18.12,131.71,137.04,,1,0
284
+ Sachin Baby,144,115,11,118,11,5,44,10,125.22,14.4,13.91,38.26,13.09,0.0,89.39,184.78,0,0
285
+ N Saini,140,140,10,141,16,0,65,11,100.0,12.73,11.43,46.43,14.0,94.68,112.5,100.0,1,0
286
+ Anmolpreet Singh,139,115,9,115,19,3,53,9,120.87,15.44,19.13,46.09,15.44,125.25,93.75,,0,0
287
+ S Anirudha,136,112,12,113,9,7,45,8,121.43,17.0,14.29,40.18,11.33,106.45,95.0,158.54,1,0
288
+ MJ Santner,136,125,21,126,9,6,53,8,108.8,17.0,12.0,42.4,6.48,83.33,91.43,127.27,0,0
289
+ GD Phillips,132,111,13,112,7,8,48,11,118.92,12.0,13.51,43.24,10.15,57.89,97.83,165.22,0,0
290
+ SB Styris,131,132,10,133,10,3,51,7,99.24,18.71,9.85,38.64,13.1,73.91,102.2,116.67,0,0
291
+ W Jaffer,130,121,8,121,14,3,56,7,107.44,18.57,14.05,46.28,16.25,86.46,188.0,,1,0
292
+ RD Chahar,129,124,22,124,13,5,67,16,104.03,8.06,14.52,54.03,5.86,,80.65,111.83,0,0
293
+ Kamran Akmal,128,77,6,78,13,8,33,4,166.23,32.0,27.27,42.86,21.33,124.39,237.5,166.67,1,0
294
+ P Dogra,127,138,12,138,4,5,60,12,92.03,10.58,6.52,43.48,10.58,,80.21,119.05,0,0
295
+ TK Curran,127,107,10,107,10,3,36,5,118.69,25.4,12.15,33.64,12.7,,109.52,131.82,1,0
296
+ UT Khawaja,127,99,6,100,14,3,37,5,128.28,25.4,17.17,37.37,21.17,137.5,89.47,,0,0
297
+ M Morkel,126,89,20,90,11,5,32,11,141.57,11.45,17.98,35.96,6.3,,71.43,154.67,0,0
298
+ SS Prabhudessai,126,105,10,106,11,4,48,9,120.0,14.0,14.29,45.71,12.6,87.5,132.26,121.05,0,0
299
+ MC Juneja,125,128,7,128,11,1,48,7,97.66,17.86,9.38,37.5,17.86,96.3,102.17,55.56,0,0
300
+ MM Sharma,125,136,30,136,9,4,67,17,91.91,7.35,9.56,49.26,4.17,,85.0,97.37,0,0
301
+ BB Samantray,125,113,8,113,13,2,45,5,110.62,25.0,13.27,39.82,15.62,84.62,114.29,129.17,1,0
302
+ B Lee,124,96,19,97,8,8,40,10,129.17,12.4,16.67,41.67,6.53,,90.91,140.54,0,0
303
+ AB McDonald,123,100,9,100,9,4,35,5,123.0,24.6,13.0,35.0,13.67,157.89,78.95,125.81,0,0
304
+ Harpreet Singh,123,118,8,119,10,3,49,6,104.24,20.5,11.02,41.53,15.38,97.06,115.79,88.89,0,0
305
+ DL Chahar,123,89,17,89,6,8,33,8,138.2,15.38,15.73,37.08,7.24,0.0,172.5,114.89,0,0
306
+ DL Vettori,121,112,16,113,11,2,40,7,108.04,17.29,11.61,35.71,7.56,,96.77,122.0,0,0
307
+ NK Patel,121,119,6,119,14,1,56,5,101.68,24.2,12.61,47.06,20.17,78.79,108.57,172.22,1,0
308
+ AC Blizzard,120,90,7,90,21,2,47,7,133.33,17.14,25.56,52.22,17.14,129.41,200.0,,1,0
309
+ TG Southee,120,106,19,107,8,4,45,11,113.21,10.91,11.32,42.45,6.32,,55.17,135.06,0,0
310
+ Arshad Khan,119,88,10,88,5,9,37,6,135.23,19.83,15.91,42.05,11.9,,120.59,144.44,1,0
311
+ RJ Harris,117,111,21,112,6,3,46,12,105.41,9.75,8.11,41.44,5.57,,81.58,117.81,0,0
312
+ Misbah-ul-Haq,117,81,8,81,10,6,30,9,144.44,13.0,19.75,37.04,14.62,131.82,109.09,266.67,0,0
313
+ Z Khan,117,140,27,141,11,2,74,15,83.57,7.8,9.29,52.86,4.33,0.0,40.0,104.12,0,0
314
+ KK Cooper,116,67,12,68,9,8,27,9,173.13,12.89,25.37,40.3,9.67,122.22,152.0,203.03,0,0
315
+ Aman Hakim Khan,115,104,10,104,8,6,50,9,110.58,12.78,13.46,48.08,11.5,80.0,101.43,137.93,1,0
316
+ DJM Short,115,99,7,99,11,5,45,7,116.16,16.43,16.16,45.45,16.43,83.82,187.1,,0,0
317
+ Mohammed Shami,115,112,33,112,9,5,55,18,102.68,6.39,12.5,49.11,3.48,,94.44,104.26,0,0
318
+ M Kartik,113,107,14,108,7,1,31,7,105.61,16.14,7.48,28.97,8.07,,110.26,102.94,0,0
319
+ Mohammed Siraj,112,126,22,128,10,4,70,11,88.89,10.18,11.11,55.56,5.09,,69.23,91.15,0,0
320
+ MA Starc,111,120,21,120,11,0,51,10,92.5,11.1,9.17,42.5,5.29,,100.0,88.31,0,0
321
+ DJ Harris,111,101,4,101,11,5,50,3,109.9,37.0,15.84,49.5,27.75,89.04,164.29,,0,0
322
+ LJ Wright,106,59,5,60,16,3,19,4,179.66,26.5,32.2,32.2,21.2,100.0,125.0,240.0,0,0
323
+ JDP Oram,106,107,11,108,6,5,47,8,99.07,13.25,10.28,43.93,9.64,,77.78,142.86,0,0
324
+ DS Kulkarni,104,108,20,108,7,2,45,9,96.3,11.56,8.33,41.67,5.2,,41.18,106.59,0,0
325
+ RJ Quiney,103,102,7,102,12,3,54,7,100.98,14.71,14.71,52.94,14.71,89.47,134.62,,1,0
326
+ JG Bethell,101,60,4,60,13,5,24,4,168.33,25.25,30.0,40.0,25.25,176.0,130.0,,1,0
327
+ SD Chitnis,99,88,8,89,10,2,35,7,112.5,14.14,13.64,39.77,12.38,58.33,117.39,126.67,0,0
328
+ Azmatullah Omarzai,99,76,9,76,8,5,29,8,130.26,12.38,17.11,38.16,11.0,,126.67,143.75,0,0
329
+ MS Gony,99,70,15,71,6,8,33,9,141.43,11.0,20.0,47.14,6.6,,90.91,164.58,0,0
330
+ CJ Ferguson,98,117,8,117,9,0,56,6,83.76,16.33,7.69,47.86,12.25,68.75,85.51,106.25,0,0
331
+ MJ Clarke,98,94,6,94,12,0,41,5,104.26,19.6,12.77,43.62,16.33,107.89,88.89,,0,0
332
+ PN Mankad,97,72,5,73,13,2,29,3,134.72,32.33,20.83,40.28,19.4,117.5,163.64,140.0,1,0
333
+ PHKD Mendis,92,72,5,72,7,2,25,4,127.78,23.0,12.5,34.72,18.4,55.56,164.86,100.0,0,0
334
+ PR Shah,92,90,9,91,9,2,44,8,102.22,11.5,12.22,48.89,10.22,97.3,100.0,118.75,0,0
335
+ JDS Neesham,92,93,10,93,6,2,40,8,98.92,11.5,8.6,43.01,9.2,,105.26,88.89,0,0
336
+ DJ Jacobs,92,98,7,98,10,4,59,7,93.88,13.14,14.29,60.2,13.14,90.32,160.0,,0,0
337
+ AJ Tye,91,75,13,76,6,5,35,8,121.33,11.38,14.67,46.67,7.0,,142.31,110.2,0,0
338
+ RT Ponting,91,128,9,128,5,2,68,8,71.09,11.38,5.47,53.12,10.11,67.05,80.0,,0,0
339
+ S Rana,91,79,8,81,9,1,32,5,115.19,18.2,12.66,40.51,11.38,87.5,64.29,148.78,0,0
340
+ AD Nath,90,98,10,98,7,2,44,10,91.84,9.0,9.18,44.9,9.0,76.47,96.83,88.89,0,0
341
+ Iqbal Abdulla,88,82,13,84,9,1,33,1,107.32,88.0,12.2,40.24,6.77,,90.62,118.0,0,0
342
+ SL Malinga,88,99,20,99,6,5,55,12,88.89,7.33,11.11,55.56,4.4,,80.0,89.89,0,0
343
+ AP Majumdar,87,76,4,76,7,2,27,4,114.47,21.75,11.84,35.53,21.75,126.32,110.53,,0,0
344
+ Ankit Sharma,87,67,10,67,7,4,27,7,129.85,12.43,16.42,40.3,8.7,116.67,186.67,110.71,0,0
345
+ TA Boult,86,84,24,84,5,3,37,9,102.38,9.56,9.52,44.05,3.58,,100.0,102.99,0,0
346
+ MJ McClenaghan,85,69,19,70,5,7,36,11,123.19,7.73,17.39,52.17,4.47,0.0,136.36,119.57,0,0
347
+ RE Levi,83,73,6,73,10,4,40,6,113.7,13.83,19.18,54.79,13.83,115.62,100.0,,1,0
348
+ NM Coulter-Nile,82,72,16,72,7,4,36,10,113.89,8.2,15.28,50.0,5.12,,73.68,128.3,0,0
349
+ FH Allen,81,44,5,44,13,4,22,5,184.09,16.2,38.64,50.0,16.2,184.09,,,0,0
350
+ Shahid Afridi,81,46,9,46,7,6,20,8,176.09,10.12,28.26,43.48,9.0,226.32,94.12,220.0,0,0
351
+ CJ Jordan,81,77,12,77,3,3,34,9,105.19,9.0,7.79,44.16,6.75,,60.0,121.05,0,0
352
+ PWH de Silva,81,88,19,88,7,1,41,15,92.05,5.4,9.09,46.59,4.26,,80.85,104.88,0,0
353
+ LA Carseldine,81,66,5,68,11,0,27,3,122.73,27.0,16.67,40.91,16.2,110.26,117.65,180.0,0,0
354
+ WPUJC Vaas,81,72,11,73,2,3,24,7,112.5,11.57,6.94,33.33,7.36,,108.33,114.58,0,0
355
+ RV Patel,80,73,7,73,6,2,26,5,109.59,16.0,10.96,35.62,11.43,,86.11,132.43,0,0
356
+ AD Mascarenhas,79,78,11,78,5,1,28,10,101.28,7.9,7.69,35.9,7.18,200.0,91.49,110.34,0,0
357
+ CR Woakes,78,77,12,77,7,2,33,5,101.3,15.6,11.69,42.86,6.5,,86.67,110.64,0,0
358
+ JR Philippe,78,77,5,77,9,1,35,4,101.3,19.5,12.99,45.45,15.6,100.0,114.29,50.0,0,0
359
+ KA Jamieson,77,74,10,74,6,4,40,4,104.05,19.25,13.51,54.05,7.7,,76.19,140.62,0,0
360
+ IR Jaggi,76,97,7,97,6,0,48,5,78.35,15.2,6.19,49.48,10.86,61.7,94.59,92.31,0,0
361
+ B Akhil,76,55,11,55,5,5,24,7,138.18,10.86,18.18,43.64,6.91,,108.0,163.33,0,0
362
+ TR Birt,75,57,5,58,9,2,25,5,131.58,15.0,19.3,43.86,15.0,20.0,95.83,182.14,0,0
363
+ JJ Bumrah,75,86,29,87,6,1,39,8,87.21,9.38,8.14,45.35,2.59,,137.5,82.05,0,0
364
+ RR Sarwan,73,75,4,75,6,1,31,3,97.33,24.33,9.33,41.33,18.25,106.38,82.14,,0,0
365
+ M Klinger,73,75,4,77,9,0,34,4,97.33,18.25,12.0,45.33,18.25,96.61,100.0,,0,0
366
+ LH Ferguson,72,46,8,47,7,2,12,4,156.52,18.0,19.57,26.09,9.0,,60.0,168.29,0,0
367
+ Urvil Patel,72,37,4,37,6,6,15,4,194.59,18.0,32.43,40.54,18.0,176.92,236.36,,0,0
368
+ SK Rasheed,71,67,5,67,9,2,38,5,105.97,14.2,16.42,56.72,14.2,107.81,66.67,,0,0
369
+ J Suchith,70,61,9,61,6,3,29,4,114.75,17.5,14.75,47.54,7.78,,68.57,176.92,0,0
370
+ AA Bilakhia,69,84,7,85,5,0,39,5,82.14,13.8,5.95,46.43,9.86,71.05,42.11,125.93,0,0
371
+ Vivrant Sharma,69,47,1,47,9,2,16,1,146.81,69.0,23.4,34.04,69.0,111.54,190.48,,1,0
372
+ Avesh Khan,68,46,16,46,7,4,22,3,147.83,22.67,23.91,47.83,4.25,,300.0,133.33,0,0
373
+ RR Powar,67,64,9,64,6,1,27,3,104.69,22.33,10.94,42.19,7.44,,27.27,120.75,0,0
374
+ HR Shokeen,66,65,5,65,9,0,31,3,101.54,22.0,13.85,47.69,13.2,12.5,111.9,120.0,0,0
375
+ R Sharma,66,75,19,75,5,3,46,11,88.0,6.0,10.67,61.33,3.47,,150.0,80.6,0,0
376
+ WD Parnell,65,80,13,80,4,1,37,10,81.25,6.5,6.25,46.25,5.0,78.57,76.47,83.67,0,0
377
+ AS Roy,65,53,12,53,5,2,20,7,122.64,9.29,13.21,37.74,5.42,80.0,72.22,160.0,0,0
378
+ Mohammad Hafeez,64,83,8,83,7,2,50,8,77.11,8.0,10.84,60.24,8.0,75.68,73.81,125.0,0,0
379
+ S Arora,63,45,6,45,4,5,19,5,140.0,12.6,20.0,42.22,10.5,,136.36,141.18,0,0
380
+ Anirudh Singh,63,66,4,66,6,1,31,4,95.45,15.75,10.61,46.97,15.75,90.0,97.3,100.0,0,0
381
+ A Flintoff,62,53,3,53,5,2,20,2,116.98,31.0,13.21,37.74,20.67,107.14,96.15,169.23,0,0
382
+ SP Jackson,61,57,8,57,5,1,20,6,107.02,10.17,10.53,35.09,7.62,111.11,114.29,95.0,0,0
383
+ Sandeep Sharma,60,75,26,76,4,0,31,5,80.0,12.0,5.33,41.33,2.31,,80.0,80.0,0,0
384
+ S Aravind,59,57,10,57,7,0,24,3,103.51,19.67,12.28,42.11,5.9,,81.25,112.2,0,0
385
+ Harshit Rana,59,57,10,57,5,3,33,7,103.51,8.43,14.04,57.89,5.9,,131.82,85.71,0,0
386
+ C Bosch,58,36,3,36,5,3,12,2,161.11,29.0,22.22,33.33,19.33,,40.0,180.65,0,0
387
+ Kartik Sharma,58,51,5,51,3,4,26,5,113.73,11.6,13.73,50.98,11.6,225.0,100.0,115.38,0,0
388
+ MG Bracewell,58,47,4,47,6,1,15,2,123.4,29.0,14.89,31.91,14.5,66.67,143.33,100.0,0,0
389
+ I Sharma,57,69,21,69,4,2,37,7,82.61,8.14,8.7,53.62,2.71,,81.25,83.02,0,0
390
+ Vishnu Vinod,56,56,6,57,3,3,26,6,100.0,9.33,10.71,46.43,9.33,47.62,127.59,150.0,0,0
391
+ WA Mota,56,75,8,75,2,0,29,5,74.67,11.2,2.67,38.67,7.0,,70.49,92.86,0,0
392
+ A Kamboj,55,47,9,47,4,2,17,2,117.02,27.5,12.77,36.17,6.11,,100.0,117.78,0,0
393
+ M Rawat,55,69,11,69,4,1,33,5,79.71,11.0,7.25,47.83,5.0,0.0,66.67,94.59,0,0
394
+ DJ Willey,53,62,5,62,7,0,34,3,85.48,17.67,11.29,54.84,10.6,64.29,74.19,123.53,0,0
395
+ A Chopra,53,71,6,71,7,0,41,5,74.65,10.6,9.86,57.75,8.83,67.44,85.71,,0,0
396
+ PVD Chameera,53,45,11,45,3,3,19,3,117.78,17.67,13.33,42.22,4.82,,100.0,120.0,0,0
397
+ TU Deshpande,53,34,9,34,2,4,12,3,155.88,17.67,17.65,35.29,5.89,,,155.88,0,0
398
+ RP Singh,52,76,28,76,2,1,39,15,68.42,3.47,3.95,51.32,1.86,,20.0,75.76,0,0
399
+ Shoaib Malik,52,46,5,47,5,0,14,4,113.04,13.0,10.87,30.43,10.4,116.67,120.83,50.0,0,0
400
+ Swapnil Singh,51,45,9,45,3,3,20,5,113.33,10.2,13.33,44.44,5.67,,96.15,136.84,0,0
401
+ Shivam Mavi,51,56,11,56,4,2,30,9,91.07,5.67,10.71,53.57,4.64,,33.33,102.13,0,0
402
+ KB Arun Karthik,51,51,8,51,4,1,22,5,100.0,10.2,9.8,43.14,6.38,,118.18,86.21,0,0
403
+ OF Smith,51,44,6,44,1,5,23,3,115.91,17.0,13.64,52.27,8.5,,41.67,143.75,0,0
404
+ R Rampaul,51,49,7,50,3,2,24,5,104.08,10.2,10.2,48.98,7.29,,104.76,103.57,0,0
405
+ RV Gomez,50,51,9,51,5,1,25,7,98.04,7.14,11.76,49.02,5.56,0.0,40.0,125.71,0,0
406
+ VR Aaron,50,71,12,72,2,2,42,4,70.42,12.5,5.63,59.15,4.17,,20.0,74.24,0,0
407
+ SB Bangar,49,58,7,58,1,3,28,6,84.48,8.17,6.9,48.28,7.0,,48.78,170.59,0,0
408
+ A Nortje,49,50,14,50,6,0,24,6,98.0,8.17,12.0,48.0,3.5,,50.0,104.55,0,0
409
+ PR Veer,49,36,2,36,7,1,13,1,136.11,49.0,22.22,36.11,24.5,,153.57,75.0,0,0
410
+ AG Paunikar,49,55,5,58,9,0,36,5,89.09,9.8,16.36,65.45,9.8,89.09,,,0,0
411
+ AS Yadav,49,39,6,39,5,2,17,7,125.64,7.0,17.95,43.59,8.17,,100.0,134.48,0,0
412
+ T Kohler-Cadmore,48,54,3,54,7,1,33,3,88.89,16.0,14.81,61.11,16.0,90.57,0.0,,0,0
413
+ M Markande,48,42,10,42,5,1,18,3,114.29,16.0,14.29,42.86,4.8,,42.86,128.57,0,0
414
+ Yashpal Singh,47,65,4,66,5,0,37,4,72.31,11.75,7.69,56.92,11.75,48.65,100.0,110.0,0,0
415
+ Ravi Bishnoi,45,69,18,69,2,2,44,11,65.22,4.09,5.8,63.77,2.5,,62.5,66.67,0,0
416
+ TL Seifert,45,41,6,41,6,1,22,6,109.76,7.5,17.07,53.66,7.5,116.22,,50.0,0,0
417
+ DR Sams,44,44,13,44,1,3,22,10,100.0,4.4,9.09,50.0,3.38,16.67,95.0,133.33,0,0
418
+ Sunny Singh,43,31,5,31,6,1,12,4,138.71,10.75,22.58,38.71,8.6,160.0,166.67,77.78,0,0
419
+ AB Barath,42,42,3,42,5,1,21,2,100.0,21.0,14.29,50.0,14.0,111.11,105.26,40.0,0,0
420
+ SK Trivedi,42,58,14,59,3,1,34,8,72.41,5.25,6.9,58.62,3.0,,40.0,75.47,0,0
421
+ A Nehra,41,60,17,62,3,1,36,8,68.33,5.12,6.67,60.0,2.41,,166.67,63.16,0,0
422
+ J Yadav,40,36,4,36,2,1,12,2,111.11,20.0,8.33,33.33,10.0,,125.0,104.17,0,0
423
+ Rasikh Salam,40,40,6,40,5,0,19,5,100.0,8.0,12.5,47.5,6.67,,61.9,142.11,0,0
424
+ BR Dunk,40,35,3,35,7,0,19,3,114.29,13.33,20.0,54.29,13.33,114.29,,,0,0
425
+ DJ Thornely,39,53,4,53,2,2,30,3,73.58,13.0,7.55,56.6,9.75,28.57,124.0,,0,0
426
+ MM Patel,39,41,12,41,5,0,18,5,95.12,7.8,12.2,43.9,3.25,,0.0,105.41,0,0
427
+ S Nadeem,39,87,20,87,2,0,57,16,44.83,2.44,2.3,65.52,1.95,,45.71,44.23,0,0
428
+ YS Chahal,37,86,16,86,0,0,54,6,43.02,6.17,0.0,62.79,2.31,,20.0,52.46,0,0
429
+ Anureet Singh,36,47,8,47,2,1,22,4,76.6,9.0,6.38,46.81,4.5,,58.33,82.86,0,0
430
+ Joginder Sharma,36,30,5,30,1,2,10,4,120.0,9.0,10.0,33.33,7.2,,100.0,126.09,0,0
431
+ L Balaji,36,49,13,49,2,1,28,7,73.47,5.14,6.12,57.14,2.77,,44.44,80.0,0,0
432
+ KW Richardson,36,39,4,39,2,1,17,3,92.31,12.0,7.69,43.59,9.0,,104.35,75.0,0,0
433
+ M Ashwin,35,50,12,50,2,1,27,8,70.0,4.38,6.0,54.0,2.92,,38.89,87.5,0,0
434
+ B Sumanth,35,37,4,37,3,0,14,1,94.59,35.0,8.11,37.84,8.75,,75.0,109.52,0,0
435
+ A Kumble,35,47,15,47,3,0,22,2,74.47,17.5,6.38,46.81,2.33,,75.0,74.36,0,0
436
+ L Ronchi,34,34,5,34,6,1,23,3,100.0,11.33,20.59,67.65,6.8,100.0,,,0,0
437
+ S Sreesanth,34,55,12,55,6,0,41,3,61.82,11.33,10.91,74.55,2.83,,0.0,62.96,0,0
438
+ Imran Tahir,33,37,8,37,5,0,21,4,89.19,8.25,13.51,56.76,4.12,,40.0,107.41,0,0
439
+ Navdeep Saini,33,37,7,37,3,0,16,4,89.19,8.25,8.11,43.24,4.71,0.0,50.0,112.5,0,0
440
+ Basil Thampi,32,35,7,35,1,1,14,2,91.43,16.0,5.71,40.0,4.57,,50.0,100.0,0,0
441
+ RJ Peterson,32,30,5,30,3,1,13,3,106.67,10.67,13.33,43.33,6.4,,93.33,120.0,0,0
442
+ S Sriram,31,36,2,36,3,0,16,2,86.11,15.5,8.33,44.44,15.5,116.67,70.83,,0,0
443
+ Arshdeep Singh,31,46,13,46,4,0,31,6,67.39,5.17,8.7,67.39,2.38,,66.67,67.5,0,0
444
+ NS Naik,31,50,4,50,2,0,28,4,62.0,7.75,4.0,56.0,7.75,43.75,72.22,68.75,0,0
445
+ G Coetzee,31,33,7,33,2,2,18,6,93.94,5.17,12.12,54.55,4.43,,83.33,100.0,0,0
446
+ Noor Ahmad,30,54,14,54,2,1,37,10,55.56,3.0,5.56,68.52,2.14,,18.75,71.05,0,0
447
+ AS Joseph,27,32,5,32,3,0,16,1,84.38,27.0,9.38,50.0,5.4,,110.0,72.73,0,0
448
+ AS Rajpoot,26,41,7,41,2,1,27,4,63.41,6.5,7.32,65.85,3.71,,16.67,71.43,0,0
449
+ PJ Sangwan,26,44,14,44,1,0,24,8,59.09,3.25,2.27,54.55,1.86,,44.44,62.86,0,0
450
+ AB Dinda,26,48,16,48,2,0,29,9,54.17,2.89,4.17,60.42,1.62,,72.73,48.65,0,0
451
+ CV Varun,26,48,12,48,2,0,29,3,54.17,8.67,4.17,60.42,2.17,,11.11,64.1,0,0
452
+ S Chanderpaul,25,31,3,31,4,0,18,3,80.65,8.33,12.9,58.06,8.33,80.65,,,0,0
453
+ Tanush Kotian,24,31,1,31,3,0,17,1,77.42,24.0,9.68,54.84,24.0,76.0,83.33,,0,0
454
+ P Dubey,23,33,2,33,2,0,17,1,69.7,23.0,6.06,51.52,11.5,,84.21,50.0,0,0
455
+ KL Nagarkoti,22,33,7,33,1,0,16,4,66.67,5.5,3.03,48.48,3.14,,46.67,83.33,0,0
456
+ B Indrajith,21,30,3,30,2,0,17,3,70.0,7.0,6.67,56.67,7.0,72.41,0.0,,0,0
457
+ S Kaul,20,36,9,36,1,0,23,3,55.56,6.67,2.78,63.89,2.22,,40.0,58.06,0,0
458
+ C Sakariya,20,30,7,31,3,0,20,5,66.67,4.0,10.0,66.67,2.86,,20.0,76.0,0,0
459
+ PV Tambe,18,38,6,39,1,0,23,1,47.37,18.0,2.63,60.53,3.0,,60.0,42.86,0,0
460
+ M Theekshana,17,34,6,34,0,1,22,3,50.0,5.67,2.94,64.71,2.83,,16.67,68.18,0,0
461
+ PP Ojha,16,44,19,45,0,0,29,10,36.36,1.6,0.0,65.91,0.84,,0.0,39.02,0,0
data/processed/bowling_features.csv ADDED
@@ -0,0 +1,403 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ bowler,balls_bowled,runs_conceded,wickets,dot_balls,wides,no_balls,matches_bowled,fours_conceded,sixes_conceded,economy_rate,bowling_average,bowling_sr,dot_ball_pct,wickets_per_match,economy_powerplay,economy_middle,economy_death,three_wicket_haul,five_wicket_haul
2
+ YS Chahal,3961,5355,237,1370,98,9,179,308,264,8.11,22.59,16.71,34.59,1.32,7.52,8.02,9.91,25,1
3
+ B Kumar,4422,5780,228,1937,138,12,198,579,177,7.84,25.35,19.39,43.8,1.15,6.7,8.42,9.66,21,2
4
+ SP Narine,4521,5213,221,1794,61,4,194,331,196,6.92,23.59,20.46,39.68,1.14,6.71,6.69,7.96,18,3
5
+ DJ Bravo,3120,4436,207,1054,167,9,158,349,155,8.53,21.43,15.07,33.78,1.31,7.53,7.82,9.91,21,0
6
+ JJ Bumrah,3531,4374,206,1501,77,33,152,384,130,7.43,21.23,17.14,42.51,1.36,6.89,6.82,8.47,31,2
7
+ R Ashwin,4713,5721,205,1666,151,4,217,334,221,7.28,27.91,22.99,35.35,0.94,6.93,7.26,9.06,10,1
8
+ PP Chawla,3850,5179,201,1358,43,2,191,374,222,8.07,25.77,19.15,35.27,1.05,7.68,7.99,10.02,15,0
9
+ SL Malinga,2828,3486,188,1218,128,18,122,314,86,7.4,18.54,15.04,43.07,1.54,6.51,7.74,8.19,24,2
10
+ RA Jadeja,4177,5385,185,1381,61,5,232,320,229,7.74,29.11,22.58,33.06,0.8,7.32,7.66,9.2,18,1
11
+ A Mishra,3371,4193,183,1220,52,21,162,239,184,7.46,22.91,18.42,36.19,1.13,6.88,7.31,9.85,20,1
12
+ Rashid Khan,3387,4126,174,1273,29,0,144,261,175,7.31,23.71,19.47,37.58,1.21,7.15,7.14,8.59,18,1
13
+ Sandeep Sharma,3174,4316,169,1268,91,12,141,408,153,8.16,25.54,18.78,39.95,1.2,7.11,8.29,10.71,17,1
14
+ HV Patel,2495,3747,168,874,106,16,119,317,148,9.01,22.3,14.85,35.03,1.41,8.87,8.32,10.32,20,2
15
+ UT Yadav,3057,4442,163,1262,110,23,147,473,151,8.72,27.25,18.75,41.28,1.11,7.95,8.4,11.11,21,0
16
+ Harbhajan Singh,3416,4101,161,1312,76,4,160,296,145,7.2,25.47,21.22,38.41,1.01,6.81,7.27,8.75,15,1
17
+ Mohammed Shami,2823,4090,157,1208,79,7,127,423,154,8.69,26.05,17.98,42.79,1.24,7.78,8.78,11.05,15,0
18
+ TA Boult,2758,3916,152,1176,85,2,122,435,134,8.52,25.76,18.14,42.64,1.25,7.43,9.26,10.72,13,0
19
+ MM Sharma,2416,3537,149,847,48,7,119,342,131,8.78,23.74,16.21,35.06,1.25,8.03,8.17,10.38,19,2
20
+ AR Patel,3471,4342,144,1178,47,0,168,274,179,7.51,30.15,24.1,33.94,0.86,7.38,7.45,8.58,4,0
21
+ K Rabada,2111,3112,141,873,67,11,92,284,136,8.85,22.07,14.97,41.35,1.53,8.56,8.38,9.82,17,0
22
+ AD Russell,1811,2909,133,648,64,10,121,274,130,9.64,21.87,13.62,35.78,1.1,8.48,9.41,11.14,14,2
23
+ R Vinay Kumar,2127,3041,127,801,48,11,104,296,100,8.58,23.94,16.75,37.66,1.22,7.3,8.45,10.7,15,1
24
+ JD Unadkat,2355,3541,125,788,62,1,115,295,158,9.02,28.33,18.84,33.46,1.09,7.93,8.48,11.57,14,2
25
+ Mohammed Siraj,2505,3670,121,1121,115,8,116,363,157,8.79,30.33,20.7,44.75,1.04,8.21,8.37,10.33,11,0
26
+ SN Thakur,2190,3474,121,782,103,10,107,331,138,9.52,28.71,18.1,35.71,1.13,9.28,8.65,11.02,10,0
27
+ A Nehra,1908,2537,121,828,57,9,88,279,76,7.98,20.97,15.77,43.4,1.38,7.57,7.97,9.06,18,1
28
+ Z Khan,2200,2860,119,929,74,2,99,312,64,7.8,24.03,18.49,42.23,1.2,6.88,9.26,9.08,12,0
29
+ Arshdeep Singh,1931,2954,114,735,84,5,89,318,92,9.18,25.91,16.94,38.06,1.28,8.79,9.22,9.79,13,1
30
+ Kuldeep Yadav,2211,3043,113,690,38,2,103,155,164,8.26,26.93,19.57,31.21,1.1,7.67,8.29,8.54,13,0
31
+ CV Varun,2028,2619,109,776,28,6,89,180,119,7.75,24.03,18.61,38.26,1.22,7.88,7.43,9.41,10,1
32
+ SR Watson,2029,2742,107,850,95,13,105,293,74,8.11,25.63,18.96,41.89,1.02,7.19,7.6,10.35,12,0
33
+ CH Morris,1726,2377,107,708,70,5,81,222,79,8.26,22.21,16.13,41.02,1.32,7.81,8.26,8.83,12,1
34
+ KH Pandya,2571,3265,106,845,58,3,140,219,117,7.62,30.8,24.25,32.87,0.76,7.57,7.55,8.83,11,0
35
+ DW Steyn,2182,2583,105,1064,93,7,95,284,55,7.1,24.6,20.78,48.76,1.11,6.43,6.72,8.93,11,0
36
+ P Kumar,2524,3342,102,1147,112,1,119,338,104,7.94,32.76,24.75,45.44,0.86,6.88,9.33,10.44,6,0
37
+ RP Singh,1775,2417,100,790,86,13,82,254,70,8.17,24.17,17.75,44.51,1.22,7.38,8.74,9.55,12,1
38
+ I Sharma,2426,3465,100,1077,97,23,117,391,102,8.57,34.65,24.26,44.39,0.85,7.58,9.63,11.46,6,1
39
+ IK Pathan,2043,2711,99,885,69,1,101,293,82,7.96,27.38,20.64,43.32,0.98,7.21,8.14,9.56,8,0
40
+ Avesh Khan,1733,2672,99,638,51,4,80,266,109,9.25,26.99,17.51,36.81,1.24,9.35,8.22,10.07,12,0
41
+ PP Ojha,1899,2399,99,708,44,2,90,146,97,7.58,24.23,19.18,37.28,1.1,7.26,7.44,9.42,8,0
42
+ KK Ahmed,1672,2521,96,735,64,5,76,255,113,9.05,26.26,17.42,43.96,1.26,8.33,8.58,11.23,12,0
43
+ JA Morkel,1723,2409,96,683,71,13,87,264,56,8.39,25.09,17.95,39.64,1.1,8.62,7.15,9.64,10,0
44
+ M Prasidh Krishna,1678,2516,94,709,63,16,73,265,94,9.0,26.77,17.85,42.25,1.29,8.3,8.14,11.04,10,1
45
+ DL Chahar,1974,2708,92,866,72,5,98,311,81,8.23,29.43,21.46,43.87,0.94,8.0,8.47,10.08,7,1
46
+ DS Kulkarni,1787,2513,91,765,82,7,92,272,81,8.44,27.62,19.64,42.81,0.99,7.64,8.92,10.94,9,0
47
+ KV Sharma,1586,2263,89,540,25,0,87,125,132,8.56,25.43,17.82,34.05,1.02,7.0,8.79,10.88,9,1
48
+ Ravi Bishnoi,1796,2494,89,634,44,5,84,181,114,8.33,28.02,20.18,35.3,1.06,7.73,8.18,11.13,6,1
49
+ M Morkel,1629,2136,88,738,57,13,70,230,61,7.87,24.27,18.51,45.3,1.26,7.4,7.56,9.48,8,0
50
+ HH Pandya,1747,2732,87,630,62,5,113,243,123,9.38,31.4,20.08,36.06,0.77,9.5,8.58,12.49,9,1
51
+ Imran Tahir,1316,1729,86,451,23,1,59,97,83,7.88,20.1,15.3,34.27,1.46,8.04,7.7,8.61,13,0
52
+ L Balaji,1512,2083,85,582,58,4,73,188,69,8.27,24.51,17.79,38.49,1.16,7.05,7.68,10.52,8,1
53
+ PJ Cummins,1655,2463,83,640,50,1,73,228,101,8.93,29.67,19.94,38.67,1.14,8.74,7.9,10.79,8,0
54
+ R Bhatia,1636,2059,82,467,23,2,91,120,68,7.55,25.11,19.95,28.55,0.9,7.19,7.43,8.83,8,0
55
+ MM Patel,1355,1733,82,612,16,11,63,188,53,7.67,21.13,16.52,45.17,1.3,6.91,6.97,11.04,9,1
56
+ T Natarajan,1525,2317,82,493,63,1,71,206,90,9.12,28.26,18.6,32.33,1.15,8.34,8.53,10.36,9,0
57
+ AB Dinda,1516,2103,82,648,59,14,75,232,58,8.32,25.65,18.49,42.74,1.09,7.4,6.91,11.3,9,0
58
+ KA Pollard,1488,2200,81,422,90,8,107,169,78,8.87,27.16,18.37,28.36,0.76,7.65,8.49,11.43,3,0
59
+ MA Starc,1076,1588,78,460,45,3,50,174,45,8.86,20.36,13.79,42.75,1.56,8.96,7.65,9.28,12,1
60
+ JC Archer,1443,1934,77,677,34,6,61,177,83,8.04,25.12,18.74,46.92,1.26,6.78,7.52,10.23,8,0
61
+ JP Faulkner,1238,1849,76,440,44,5,60,160,67,8.96,24.33,16.29,35.54,1.27,7.93,8.76,10.33,9,2
62
+ RD Chahar,1695,2220,76,597,32,1,79,143,101,7.86,29.21,22.3,35.22,0.96,7.18,7.9,9.09,6,0
63
+ MJ McClenaghan,1274,1839,75,534,63,9,56,181,72,8.66,24.52,16.99,41.92,1.34,8.04,8.57,10.18,9,0
64
+ JH Kallis,1742,2348,74,640,48,9,89,236,58,8.09,31.73,23.54,36.74,0.83,7.53,7.8,10.02,4,0
65
+ Mustafizur Rahman,1365,1879,74,512,47,7,60,171,61,8.26,25.39,18.45,37.51,1.23,7.22,7.61,9.67,10,0
66
+ SK Trivedi,1506,1944,73,528,42,9,75,154,51,7.75,26.63,20.63,35.06,0.97,7.68,7.35,9.76,7,0
67
+ Shakib Al Hasan,1484,1864,71,523,31,0,70,120,78,7.54,26.25,20.9,35.24,1.01,7.08,7.44,10.22,3,0
68
+ M Muralitharan,1528,1765,67,643,51,2,66,105,67,6.93,26.34,22.81,42.08,1.02,6.23,6.86,8.75,5,0
69
+ MG Johnson,1235,1740,66,557,57,9,54,196,55,8.45,26.36,18.71,45.1,1.22,8.02,8.31,9.69,3,0
70
+ JR Hazlewood,992,1377,66,453,17,2,44,138,63,8.33,20.86,15.03,45.67,1.5,7.52,8.14,10.21,10,0
71
+ LH Ferguson,1059,1615,63,418,35,9,50,153,71,9.15,25.63,16.81,39.47,1.26,8.77,8.24,10.98,8,0
72
+ A Nortje,1126,1740,63,459,35,8,49,164,78,9.27,27.62,17.87,40.76,1.29,8.58,8.76,10.6,5,0
73
+ SM Curran,1255,2059,63,416,46,7,63,197,89,9.84,32.68,19.92,33.15,1.0,8.37,10.81,11.39,7,0
74
+ S Kaul,1209,1772,63,410,23,6,55,166,65,8.79,28.13,19.19,33.91,1.15,9.2,8.04,9.26,5,0
75
+ SK Warne,1194,1465,60,442,29,0,54,91,56,7.36,24.42,19.9,37.02,1.11,7.16,7.01,10.05,5,0
76
+ JO Holder,1044,1547,60,364,51,3,48,137,57,8.89,25.78,17.4,34.87,1.25,8.65,8.37,10.18,10,0
77
+ TU Deshpande,1065,1770,59,411,51,6,50,177,76,9.97,30.0,18.05,38.59,1.18,8.9,10.17,11.59,6,0
78
+ TG Southee,1206,1774,57,475,52,4,54,175,62,8.83,31.12,21.16,39.39,1.06,8.11,7.92,10.85,8,1
79
+ Noor Ahmad,987,1355,56,353,20,1,45,90,59,8.24,24.2,17.62,35.76,1.24,8.5,8.14,8.58,6,0
80
+ S Nadeem,1415,1800,54,469,25,4,70,114,73,7.63,33.33,26.2,33.14,0.77,7.63,7.39,12.0,2,0
81
+ M Pathirana,735,1047,53,293,51,1,32,72,39,8.55,19.75,13.87,39.86,1.66,,7.99,9.11,7,0
82
+ S Gopal,991,1358,53,326,8,1,51,77,74,8.22,25.62,18.7,32.9,1.04,7.33,8.56,7.58,5,0
83
+ NM Coulter-Nile,857,1125,52,387,26,9,38,123,34,7.88,21.63,16.48,45.16,1.37,7.24,7.34,9.56,8,0
84
+ Mukesh Kumar,817,1397,51,300,17,4,39,144,66,10.26,27.39,16.02,36.72,1.31,9.27,9.76,12.12,5,0
85
+ SB Jakati,1085,1474,50,355,14,2,57,97,60,8.15,29.48,21.7,32.72,0.88,7.26,8.09,12.68,3,0
86
+ A Kumble,965,1089,49,397,13,5,42,72,35,6.77,22.22,19.69,41.14,1.17,5.43,6.94,8.38,5,2
87
+ VG Arora,834,1321,49,333,25,9,39,142,53,9.5,26.96,17.02,39.93,1.26,8.81,12.15,10.25,3,0
88
+ S Aravind,760,1057,48,302,27,1,38,105,38,8.34,22.02,15.83,39.74,1.26,7.64,8.97,9.86,5,0
89
+ AJ Tye,685,1005,48,225,27,2,30,90,33,8.8,20.94,14.27,32.85,1.6,8.12,8.25,10.06,7,2
90
+ PWH de Silva,803,1134,47,281,5,0,37,65,70,8.47,24.13,17.09,34.99,1.27,7.87,8.58,8.32,3,1
91
+ RJ Harris,832,1085,47,390,32,1,37,119,27,7.82,23.09,17.7,46.88,1.27,6.84,8.08,9.41,7,0
92
+ YK Pathan,1147,1443,46,419,37,0,82,99,57,7.55,31.37,24.93,36.53,0.56,6.7,7.86,12.2,3,0
93
+ VR Aaron,994,1527,46,415,63,8,50,159,52,9.22,33.2,21.61,41.75,0.92,8.65,8.67,12.04,1,0
94
+ MC Henriques,950,1302,46,315,28,1,60,123,38,8.22,28.3,20.65,33.16,0.77,7.59,8.39,10.36,3,0
95
+ MM Ali,857,1036,46,305,11,1,57,43,57,7.25,22.52,18.63,35.59,0.81,5.5,7.6,6.6,4,0
96
+ MP Stoinis,909,1505,46,271,27,1,73,116,76,9.93,32.72,19.76,29.81,0.63,8.31,9.69,13.27,4,0
97
+ GJ Maxwell,1026,1422,45,341,21,0,85,79,80,8.32,31.6,22.8,33.24,0.53,8.21,8.36,8.54,0,0
98
+ Yash Dayal,883,1412,45,329,32,5,43,139,58,9.59,31.38,19.62,37.26,1.05,9.45,8.18,11.32,3,0
99
+ Iqbal Abdulla,920,1125,45,346,23,0,48,88,37,7.34,25.0,20.44,37.61,0.94,6.47,7.61,9.51,5,0
100
+ PJ Sangwan,856,1267,44,338,43,6,42,127,43,8.88,28.8,19.45,39.49,1.05,8.8,8.29,11.36,4,0
101
+ M Jansen,920,1442,43,374,29,7,42,130,67,9.4,33.53,21.4,40.65,1.02,9.07,9.44,10.57,3,0
102
+ P Awana,747,1046,43,307,23,4,33,107,35,8.4,24.33,17.37,41.1,1.3,8.17,7.13,11.22,4,0
103
+ DE Bollinger,576,716,43,270,22,2,27,73,19,7.46,16.65,13.4,46.88,1.59,7.48,6.29,7.66,6,0
104
+ S Sreesanth,880,1221,43,416,44,23,44,130,39,8.33,28.4,20.47,47.27,0.98,7.65,8.35,12.0,2,0
105
+ Harshit Rana,661,1047,42,272,16,2,32,99,56,9.5,24.93,15.74,41.15,1.31,9.43,9.28,9.99,4,0
106
+ Washington Sundar,1152,1498,42,392,8,2,66,99,69,7.8,35.67,27.43,34.03,0.64,8.08,7.34,11.48,4,0
107
+ R Sharma,928,1100,42,344,7,0,44,70,45,7.11,26.19,22.1,37.07,0.95,6.58,7.0,9.15,1,0
108
+ L Ngidi,520,747,40,205,16,2,22,65,34,8.62,18.68,13.0,39.42,1.82,7.99,8.53,9.4,7,0
109
+ DT Christian,883,1218,40,316,36,3,49,103,39,8.28,30.45,22.08,35.79,0.82,8.03,7.22,11.78,0,0
110
+ WD Parnell,723,968,40,312,29,6,33,102,24,8.03,24.2,18.08,43.15,1.21,7.9,7.78,8.51,5,0
111
+ MS Gony,888,1317,39,366,32,5,44,135,53,8.9,33.77,22.77,41.22,0.89,8.79,8.33,11.69,3,0
112
+ M Kartik,1149,1418,39,405,28,5,55,97,41,7.4,36.36,29.46,35.25,0.71,6.68,7.56,8.32,1,0
113
+ Yuvraj Singh,869,1091,39,269,12,1,73,59,41,7.53,27.97,22.28,30.96,0.53,6.6,7.54,8.69,5,0
114
+ DP Nannes,646,815,38,306,39,4,29,89,15,7.57,21.45,17.0,47.37,1.31,6.57,8.79,8.71,5,0
115
+ P Negi,716,954,38,249,17,0,42,57,47,7.99,25.11,18.84,34.78,0.9,7.25,8.02,10.19,3,0
116
+ MR Marsh,560,803,37,189,30,3,34,72,28,8.6,21.7,15.14,33.75,1.09,7.71,7.83,12.49,3,0
117
+ NLTC Perera,698,1031,37,238,14,3,36,113,28,8.86,27.86,18.86,34.1,1.03,7.28,8.41,11.49,5,0
118
+ M Markande,751,1157,37,224,16,1,40,78,66,9.24,31.27,20.3,29.83,0.92,8.27,9.46,9.2,3,0
119
+ KK Cooper,576,789,36,209,23,1,25,59,23,8.22,21.92,16.0,36.28,1.44,7.11,7.81,9.07,5,0
120
+ CJ Jordan,674,1111,36,225,38,5,34,96,46,9.89,30.86,18.72,33.38,1.06,9.48,7.88,12.22,5,0
121
+ Mohsin Khan,584,806,36,263,21,0,27,67,41,8.28,22.39,16.22,45.03,1.33,8.0,6.9,10.08,4,1
122
+ R Tewatia,843,1117,36,270,21,2,52,54,61,7.95,31.03,23.42,32.03,0.69,6.53,8.24,6.46,4,0
123
+ M Theekshana,895,1226,36,292,7,0,38,93,45,8.22,34.06,24.86,32.63,0.95,8.56,7.9,8.54,2,0
124
+ Harpreet Brar,837,1122,35,288,13,0,47,76,49,8.04,32.06,23.91,34.41,0.74,8.38,7.6,11.39,4,0
125
+ M Ashwin,870,1182,35,298,25,3,44,82,50,8.15,33.77,24.86,34.25,0.8,7.65,8.33,7.92,2,0
126
+ DL Vettori,777,894,34,283,8,0,34,67,24,6.9,26.29,22.85,36.42,1.0,5.92,6.79,9.1,3,1
127
+ MF Maharoof,420,532,33,177,16,5,20,46,16,7.6,16.12,12.73,42.14,1.65,7.55,6.35,9.79,5,0
128
+ AB Agarkar,782,1174,33,273,36,2,42,113,41,9.01,35.58,23.7,34.91,0.79,8.88,8.64,10.1,3,0
129
+ Shivam Mavi,649,958,33,267,32,6,32,92,38,8.86,29.03,19.67,41.14,1.03,8.13,7.73,11.41,1,0
130
+ R Sai Kishore,448,655,32,141,5,0,25,35,40,8.77,20.47,14.0,31.47,1.28,7.83,8.39,11.07,2,0
131
+ A Zampa,469,656,32,145,6,0,22,36,35,8.39,20.5,14.66,30.92,1.45,7.14,7.64,13.52,3,1
132
+ BA Stokes,689,1023,31,250,30,4,38,99,33,8.91,33.0,22.23,36.28,0.82,8.64,8.24,10.56,3,0
133
+ Harmeet Singh,549,747,31,213,21,4,28,69,22,8.16,24.1,17.71,38.8,1.11,8.74,7.82,8.67,3,0
134
+ CR Woakes,440,674,31,173,22,1,21,68,28,9.19,21.74,14.19,39.32,1.48,8.52,7.41,11.21,3,0
135
+ Umran Malik,494,785,31,218,22,3,26,93,29,9.53,25.32,15.94,44.13,1.19,12.92,8.66,10.75,4,2
136
+ A Singh,473,639,31,200,12,1,23,67,17,8.11,20.61,15.26,42.28,1.35,7.0,7.5,10.31,3,0
137
+ MJ Santner,700,870,31,261,3,1,35,74,28,7.46,28.06,22.58,37.29,0.89,8.27,7.02,8.8,1,0
138
+ Azhar Mahmood,537,707,31,206,10,5,23,73,18,7.9,22.81,17.32,38.36,1.35,6.76,7.09,9.96,5,0
139
+ B Lee,875,1126,30,400,28,13,38,123,25,7.72,37.53,29.17,45.71,0.79,7.12,7.19,9.06,1,0
140
+ SK Raina,908,1139,30,299,22,0,69,71,44,7.53,37.97,30.27,32.93,0.43,6.76,7.46,8.97,0,0
141
+ E Malinga,343,501,29,138,0,0,15,47,21,8.76,17.28,11.83,40.23,1.93,10.12,7.79,9.0,5,0
142
+ Yash Thakur,447,782,28,153,25,3,21,64,43,10.5,27.93,15.96,34.23,1.33,9.79,10.46,11.04,4,1
143
+ Vijaykumar Vyshak,471,797,28,149,11,1,22,62,43,10.15,28.46,16.82,31.63,1.27,11.33,9.12,12.0,3,0
144
+ AD Mathews,791,1095,28,237,15,1,44,98,29,8.31,39.11,28.25,29.96,0.64,8.43,8.09,8.88,2,0
145
+ STR Binny,594,763,28,204,16,1,63,76,14,7.71,27.25,21.21,34.34,0.44,7.41,7.59,10.14,1,0
146
+ PV Tambe,660,866,28,215,14,0,33,64,28,7.87,30.93,23.57,32.58,0.85,7.82,7.55,12.5,2,0
147
+ J Botha,694,818,27,268,15,0,34,60,24,7.07,30.3,25.7,38.62,0.79,7.57,6.54,8.57,2,0
148
+ DR Smith,539,825,27,179,14,4,46,75,33,9.18,30.56,19.96,33.21,0.59,10.22,8.51,12.88,2,0
149
+ R Dhawan,662,922,27,218,28,3,36,71,27,8.36,34.15,24.52,32.93,0.75,8.14,7.94,11.11,0,0
150
+ Naveen-ul-Haq,388,602,26,141,15,4,17,54,24,9.31,23.15,14.92,36.34,1.53,9.67,7.56,10.32,4,0
151
+ Navdeep Saini,671,1006,26,291,21,9,32,108,39,9.0,38.69,25.81,43.37,0.81,8.6,9.23,9.51,1,0
152
+ Akash Madhwal,359,598,26,119,10,7,17,55,25,9.99,23.0,13.81,33.15,1.53,7.79,10.97,10.29,5,1
153
+ Basil Thampi,521,862,26,163,17,1,25,75,41,9.93,33.15,20.04,31.29,1.04,9.24,9.03,11.81,2,0
154
+ SW Tait,473,668,26,222,52,9,21,71,12,8.47,25.69,18.19,46.93,1.24,8.12,9.03,8.67,4,0
155
+ Suyash Sharma,723,1043,26,255,5,1,34,87,46,8.66,40.12,27.81,35.27,0.76,8.0,8.77,8.05,4,0
156
+ Kartik Tyagi,592,985,25,223,28,8,27,97,44,9.98,39.4,23.68,37.67,0.93,10.97,9.14,10.2,1,0
157
+ RE van der Merwe,443,515,25,159,12,0,21,25,17,6.98,20.6,17.72,35.89,1.19,8.89,6.31,8.95,2,0
158
+ GB Hogg,458,585,25,170,7,1,21,40,21,7.66,23.4,18.32,37.12,1.19,6.54,7.76,8.4,2,0
159
+ Sohail Tanvir,247,275,24,130,17,1,11,27,7,6.68,11.46,10.29,52.63,2.18,6.61,6.0,6.88,6,1
160
+ A Kamboj,364,527,24,160,6,2,19,58,22,8.69,21.96,15.17,43.96,1.26,8.94,8.95,7.7,3,0
161
+ AS Rajpoot,530,844,24,214,28,9,29,89,31,9.55,35.17,22.08,40.38,0.83,9.19,8.61,12.27,2,1
162
+ BW Hilfenhaus,372,497,23,184,15,3,17,48,21,8.02,21.61,16.17,49.46,1.35,6.5,9.75,11.36,1,0
163
+ JP Duminy,678,847,23,242,23,0,49,53,33,7.5,36.83,29.48,35.69,0.47,7.32,7.27,11.17,1,0
164
+ A Symonds,527,694,23,206,12,1,30,44,33,7.9,30.17,22.91,39.09,0.77,6.19,8.09,11.77,1,0
165
+ Shahbaz Ahmed,599,969,22,165,10,2,46,65,53,9.71,44.05,27.23,27.55,0.48,9.9,9.72,8.28,2,0
166
+ WPUJC Vaas,282,364,22,134,4,2,13,40,13,7.74,16.55,12.82,47.52,1.69,6.39,9.5,12.0,3,0
167
+ AS Joseph,434,707,22,172,19,1,22,53,43,9.77,32.14,19.73,39.63,1.0,9.83,9.18,10.96,1,1
168
+ VY Mahesh,339,511,22,127,13,7,17,47,20,9.04,23.23,15.41,37.46,1.29,11.0,7.9,9.29,2,1
169
+ JP Behrendorff,366,563,22,146,13,0,17,55,26,9.23,25.59,16.64,39.89,1.29,8.43,9.46,12.88,3,0
170
+ K Gowtham,588,825,22,216,11,0,35,68,37,8.42,37.5,26.73,36.73,0.63,8.49,8.09,14.5,0,0
171
+ C Green,494,773,22,185,22,1,33,64,39,9.39,35.14,22.45,37.45,0.67,9.57,8.66,12.87,0,0
172
+ Bipul Sharma,426,581,22,139,10,0,28,28,31,8.18,26.41,19.36,32.63,0.79,7.08,8.02,19.5,0,0
173
+ KW Richardson,335,479,21,136,10,0,15,40,23,8.58,22.81,15.95,40.6,1.4,6.9,9.33,11.26,1,0
174
+ RP Meredith,388,621,21,156,25,2,18,63,26,9.6,29.57,18.48,40.21,1.17,8.42,8.97,12.0,1,0
175
+ Prince Yadav,337,476,21,139,0,0,14,49,17,8.47,22.67,16.05,41.25,1.5,7.59,7.48,10.82,3,0
176
+ Mujeeb Ur Rahman,447,626,21,157,18,0,20,42,26,8.4,29.81,21.29,35.12,1.05,7.97,7.99,11.88,1,0
177
+ Anureet Singh,412,636,21,152,11,7,22,65,22,9.26,30.29,19.62,36.89,0.95,7.66,9.9,11.04,2,0
178
+ BB Sran,483,767,20,175,30,3,24,73,29,9.53,38.35,24.15,36.23,0.83,9.25,9.86,9.65,1,0
179
+ C Sakariya,445,649,20,155,29,5,20,53,23,8.75,32.45,22.25,34.83,1.0,6.84,9.33,11.65,2,0
180
+ J Suchith,420,604,20,142,14,0,21,47,26,8.63,30.2,21.0,33.81,0.95,8.05,8.7,13.5,0,0
181
+ Mukesh Choudhary,354,576,20,152,18,1,18,67,24,9.76,28.8,17.7,42.94,1.11,9.02,10.38,13.18,3,0
182
+ NT Ellis,379,553,20,125,8,3,17,46,21,8.75,27.65,18.95,32.98,1.18,6.74,8.48,11.42,2,0
183
+ IC Pandey,462,609,19,223,5,2,24,77,17,7.91,32.05,24.32,48.27,0.79,7.75,7.43,12.5,0,0
184
+ CH Gayle,554,755,19,196,27,3,38,49,27,8.18,39.74,29.16,35.38,0.5,8.45,7.6,9.49,1,0
185
+ A Ashish Reddy,262,400,19,83,6,2,20,26,20,9.16,21.05,13.79,31.68,0.95,15.0,8.28,10.39,1,0
186
+ AD Mascarenhas,308,365,19,130,2,0,13,34,8,7.11,19.21,16.21,42.21,1.46,7.22,6.47,10.29,2,1
187
+ CRD Fernando,234,306,19,107,11,4,10,30,9,7.85,16.11,12.32,45.73,1.9,7.14,6.62,10.0,2,1
188
+ BJ Hodge,234,310,18,79,4,0,20,17,14,7.95,17.22,13.0,33.76,0.9,9.11,7.48,11.0,2,1
189
+ R Rampaul,268,319,17,137,8,2,12,25,14,7.14,18.76,15.76,51.12,1.42,6.28,6.38,11.22,1,0
190
+ Ashwani Kumar,183,295,17,71,0,0,9,27,16,9.67,17.35,10.76,38.8,1.89,10.86,7.45,12.94,2,0
191
+ LR Shukla,314,458,17,117,10,2,27,39,16,8.75,26.94,18.47,37.26,0.63,9.63,8.3,9.69,2,0
192
+ DS Rathi,469,661,17,147,0,0,19,52,25,8.46,38.88,27.59,31.34,0.89,8.03,8.06,10.52,0,0
193
+ D Wiese,296,447,17,86,10,1,15,47,11,9.06,26.29,17.41,29.05,1.13,8.12,9.48,9.6,2,0
194
+ Rasikh Salam,331,549,17,107,10,2,18,48,28,9.95,32.29,19.47,32.33,0.94,8.95,10.64,10.12,3,0
195
+ ST Jayasuriya,294,396,16,86,7,0,21,22,16,8.08,24.75,18.38,29.25,0.76,11.5,7.45,10.71,3,0
196
+ CR Brathwaite,254,384,16,78,9,3,16,37,12,9.07,24.0,15.88,30.71,1.0,6.0,9.34,10.5,2,0
197
+ AC Thomas,315,416,16,133,10,2,15,41,11,7.92,26.0,19.69,42.22,1.07,6.53,8.83,10.12,1,0
198
+ RG Sharma,339,462,16,94,10,0,32,29,14,8.18,28.88,21.19,27.73,0.5,7.62,8.07,10.4,2,0
199
+ VRV Singh,360,549,16,121,7,4,18,58,16,9.15,34.31,22.5,33.61,0.89,9.67,8.82,9.24,2,0
200
+ N Burger,289,468,16,138,3,0,14,44,24,9.72,29.25,18.06,47.75,1.14,10.04,9.84,8.3,0,0
201
+ G Coetzee,277,490,15,106,14,1,14,41,26,10.61,32.67,18.47,38.27,1.07,10.91,10.76,10.11,2,0
202
+ DR Sams,360,528,15,144,27,2,16,41,25,8.8,35.2,24.0,40.0,0.94,7.15,10.42,11.75,2,0
203
+ YA Abdulla,209,311,15,92,12,1,11,32,13,8.93,20.73,13.93,44.02,1.36,6.82,10.67,11.21,3,0
204
+ SJ Srivastava,282,444,15,106,23,1,14,50,13,9.45,29.6,18.8,37.59,1.07,9.59,8.5,11.43,0,0
205
+ Mohammad Nabi,417,527,15,153,2,0,23,33,26,7.58,35.13,27.8,36.69,0.65,6.45,8.5,10.0,1,0
206
+ R Shepherd,292,591,15,89,7,0,22,42,43,12.14,39.4,19.47,30.48,0.68,7.8,11.87,14.7,2,0
207
+ RR Powar,426,538,15,174,16,1,26,41,18,7.58,35.87,28.4,40.85,0.58,7.27,7.72,10.0,0,0
208
+ AN Ahmed,344,515,15,131,13,5,17,43,20,8.98,34.33,22.93,38.08,0.88,8.08,8.13,12.0,1,0
209
+ KA Jamieson,280,460,15,114,8,3,14,44,26,9.86,30.67,18.67,40.71,1.07,9.34,8.73,13.47,2,0
210
+ PVD Chameera,405,658,15,165,13,2,20,67,31,9.75,43.87,27.0,40.74,0.75,9.56,8.05,11.58,1,0
211
+ Umar Gul,135,198,14,59,12,6,6,17,5,8.8,14.14,9.64,43.7,2.33,6.43,8.78,11.38,2,0
212
+ Kamran Khan,166,248,14,71,10,1,9,25,10,8.96,17.71,11.86,42.77,1.56,9.33,7.0,10.41,2,0
213
+ GD McGrath,324,366,14,162,4,1,14,41,10,6.78,26.14,23.14,50.0,1.0,5.97,7.0,9.45,1,0
214
+ S Lamichhane,210,297,14,77,1,0,9,21,17,8.49,21.21,15.0,36.67,1.56,8.29,8.1,19.0,2,0
215
+ AB McDonald,186,263,14,52,2,0,10,20,11,8.48,18.79,13.29,27.96,1.4,8.8,7.75,10.2,2,0
216
+ Arshad Khan,296,546,14,119,19,0,19,60,27,11.07,39.0,21.14,40.2,0.74,10.08,11.17,13.91,1,0
217
+ V Nigam,289,444,14,97,0,0,17,30,25,9.22,31.71,20.64,33.56,0.82,8.74,10.07,5.69,0,0
218
+ Karanveer Singh,204,323,14,66,9,0,9,19,19,9.5,23.07,14.57,32.35,1.56,8.67,9.32,12.67,2,0
219
+ R McLaren,354,558,14,128,15,3,18,69,11,9.46,39.86,25.29,36.16,0.78,8.61,9.58,11.25,1,0
220
+ JR Hopes,360,562,14,119,9,0,20,44,28,9.37,40.14,25.71,33.06,0.7,6.29,9.18,11.43,0,0
221
+ KR Sen,241,396,14,89,12,2,12,41,16,9.86,28.29,17.21,36.93,1.17,9.1,8.68,13.96,2,0
222
+ DJG Sammy,236,354,14,75,6,2,19,33,12,9.0,25.29,16.86,31.78,0.74,8.78,8.62,11.77,2,1
223
+ CJ Anderson,297,525,14,86,18,0,22,52,23,10.61,37.5,21.21,28.96,0.64,9.82,9.23,14.91,1,0
224
+ BA Bhatt,296,408,13,98,6,1,15,35,13,8.27,31.38,22.77,33.11,0.87,7.06,8.94,9.07,1,0
225
+ TK Curran,238,432,13,59,11,3,13,33,23,10.89,33.23,18.31,24.79,1.0,9.57,8.97,13.61,1,0
226
+ CK Langeveldt,156,199,13,75,8,1,7,17,8,7.65,15.31,12.0,48.08,1.86,7.07,8.8,8.0,1,0
227
+ SM Pollock,276,307,13,132,4,0,13,30,9,6.67,23.62,21.23,47.83,1.0,6.51,7.33,,1,0
228
+ Harsh Dubey,168,242,13,57,0,0,9,16,13,8.64,18.62,12.92,33.93,1.44,9.48,8.87,6.0,2,0
229
+ AS Roy,264,360,13,98,6,0,16,24,18,8.18,27.69,20.31,37.12,0.81,8.67,7.63,9.0,0,0
230
+ JDP Oram,237,362,13,86,6,1,14,34,14,9.16,27.85,18.23,36.29,0.93,9.37,9.12,8.88,1,0
231
+ J Theron,221,311,13,75,12,2,10,28,9,8.44,23.92,17.0,33.94,1.3,9.21,7.1,8.73,1,0
232
+ J Little,228,341,13,84,8,0,11,30,16,8.97,26.23,17.54,36.84,1.18,9.2,7.87,10.62,2,0
233
+ Joginder Sharma,256,421,13,73,9,7,15,38,17,9.87,32.38,19.69,28.52,0.87,11.25,8.96,11.61,0,0
234
+ RS Bopara,206,301,13,66,7,0,14,25,10,8.77,23.15,15.85,32.04,0.93,8.0,8.51,10.17,1,0
235
+ Nithish Kumar Reddy,264,454,13,83,7,2,20,33,26,10.32,34.92,20.31,31.44,0.65,10.16,9.98,13.3,1,0
236
+ LS Livingstone,312,471,13,82,9,0,27,38,19,9.06,36.23,24.0,26.28,0.48,6.8,9.45,7.0,1,0
237
+ AG Murtaza,264,322,12,106,5,0,12,22,14,7.32,26.83,22.0,40.15,1.0,5.13,7.93,15.5,3,0
238
+ Ankit Sharma,367,453,12,139,8,0,21,28,18,7.41,37.75,30.58,37.87,0.57,5.86,8.31,19.71,0,0
239
+ V Shankar,238,344,12,80,15,5,22,29,12,8.67,28.67,19.83,33.61,0.55,9.0,8.81,7.64,0,0
240
+ V Pratap Singh,204,300,12,75,7,0,9,31,10,8.82,25.0,17.0,36.76,1.33,8.47,9.27,9.0,1,0
241
+ Simarjeet Singh,243,411,12,109,12,1,14,36,25,10.15,34.25,20.25,44.86,0.86,9.88,9.77,13.0,1,0
242
+ SC Ganguly,276,370,12,82,3,1,20,25,14,8.04,30.83,23.0,29.71,0.6,8.17,7.59,25.0,2,0
243
+ BCJ Cutting,281,430,12,78,7,0,17,44,15,9.18,35.83,23.42,27.76,0.71,9.22,7.95,12.72,0,0
244
+ Azmatullah Omarzai,295,476,12,110,5,0,15,51,18,9.68,39.67,24.58,37.29,0.8,9.56,8.49,12.0,0,0
245
+ K Kartikeya,283,412,12,91,7,0,16,25,23,8.73,34.33,23.58,32.16,0.75,8.83,8.36,13.33,0,0
246
+ A Chandila,234,245,11,105,0,0,12,17,10,6.28,22.27,21.27,44.87,0.92,5.79,7.89,6.0,1,0
247
+ TS Mills,209,349,11,75,9,0,10,37,14,10.02,31.73,19.0,35.89,1.1,8.83,10.57,10.75,1,0
248
+ BE Hendricks,150,239,11,55,6,1,7,24,7,9.56,21.73,13.64,36.67,1.57,10.73,7.71,9.57,2,0
249
+ S Badree,258,329,11,114,5,0,12,28,14,7.65,29.91,23.45,44.19,0.92,7.68,7.6,,1,0
250
+ JL Pattinson,213,321,11,78,9,0,10,34,10,9.04,29.18,19.36,36.62,1.1,8.76,8.86,10.67,0,0
251
+ JD Ryder,236,314,11,84,5,0,16,21,13,7.98,28.55,21.45,35.59,0.69,6.0,7.87,12.0,1,0
252
+ Pankaj Singh,300,472,11,115,10,1,17,52,17,9.44,42.91,27.27,38.33,0.65,7.9,10.23,14.57,0,0
253
+ Lalit Yadav,288,430,11,86,5,1,19,26,24,8.96,39.09,26.18,29.86,0.58,9.28,8.61,11.0,0,0
254
+ R Parag,328,516,11,80,6,0,34,32,25,9.44,46.91,29.82,24.39,0.32,8.0,9.57,12.4,0,0
255
+ KP Appanna,216,291,11,70,6,0,13,20,11,8.08,26.45,19.64,32.41,0.85,9.33,7.97,,1,0
256
+ Akash Deep,291,554,11,105,7,4,14,48,33,11.42,50.36,26.45,36.08,0.79,10.35,11.49,14.79,1,0
257
+ OC McCoy,162,255,11,51,17,1,8,20,9,9.44,23.18,14.73,31.48,1.38,6.0,11.01,8.95,1,0
258
+ Abhishek Sharma,354,544,11,101,7,1,35,38,27,9.22,49.45,32.18,28.53,0.31,9.65,9.01,9.82,0,0
259
+ MA Wood,120,192,11,54,6,1,5,13,12,9.6,17.45,10.91,45.0,2.2,8.2,7.38,13.14,2,1
260
+ N Rana,218,326,11,68,5,0,27,31,13,8.97,29.64,19.82,31.19,0.41,9.55,9.1,7.04,0,0
261
+ MP Yadav,151,244,10,72,2,1,7,22,15,9.7,24.4,15.1,47.68,1.43,11.18,8.51,11.43,2,0
262
+ T Thushara,135,164,10,60,7,2,6,15,4,7.29,16.4,13.5,44.44,1.67,5.73,5.2,11.54,1,0
263
+ B Laughlin,168,284,10,44,10,1,9,26,10,10.14,28.4,16.8,26.19,1.11,10.17,7.64,13.22,0,0
264
+ KMA Paul,163,239,10,54,12,5,8,18,8,8.8,23.9,16.3,33.13,1.25,16.5,7.21,11.19,2,0
265
+ J Syed Mohammad,192,286,10,50,4,0,11,18,12,8.94,28.6,19.2,26.04,0.91,5.25,9.59,6.0,0,0
266
+ MN Samuels,214,285,10,80,5,0,11,23,12,7.99,28.5,21.4,37.38,0.91,6.23,7.8,11.35,1,0
267
+ Anand Rajan,149,206,10,62,12,1,8,17,8,8.3,20.6,14.9,41.61,1.25,6.44,7.18,14.28,1,0
268
+ DJ Hooda,380,550,10,107,11,0,34,40,23,8.68,55.0,38.0,28.16,0.29,7.24,9.08,12.0,0,0
269
+ DJ Hussey,317,485,10,92,6,0,26,30,25,9.18,48.5,31.7,29.02,0.38,10.25,7.9,16.29,0,0
270
+ P Parameswaran,154,226,9,66,4,1,8,23,10,8.81,25.11,17.11,42.86,1.12,9.75,7.4,10.55,1,0
271
+ Akash Singh,205,326,9,73,3,0,10,39,13,9.54,36.22,22.78,35.61,0.9,9.18,10.62,10.0,0,0
272
+ J Overton,161,272,9,58,0,0,10,18,17,10.14,30.22,17.89,36.02,0.9,13.03,9.07,9.78,2,0
273
+ J Yadav,390,447,9,155,6,2,20,31,15,6.88,49.67,43.33,39.74,0.45,7.48,6.32,,0,0
274
+ JEC Franklin,151,225,9,41,2,2,15,21,6,8.94,25.0,16.78,27.15,0.6,10.0,8.31,19.0,0,0
275
+ KP Pietersen,174,218,9,57,6,0,13,10,9,7.52,24.22,19.33,32.76,0.69,6.0,7.74,9.67,0,0
276
+ SE Bond,186,225,9,76,5,0,8,27,3,7.26,25.0,20.67,40.86,1.12,6.33,6.14,9.67,0,0
277
+ SB Styris,216,278,9,85,6,0,11,19,14,7.72,30.89,24.0,39.35,0.82,6.09,7.78,10.14,1,0
278
+ Shahid Afridi,180,237,9,65,4,1,10,19,7,7.9,26.33,20.0,36.11,0.9,7.0,8.35,7.0,1,0
279
+ SMSM Senanayake,192,211,9,75,3,0,8,17,5,6.59,23.44,21.33,39.06,1.12,5.29,9.44,7.5,0,0
280
+ IS Sodhi,181,204,9,66,1,0,8,9,8,6.76,22.67,20.11,36.46,1.12,6.38,6.68,36.0,1,0
281
+ BAW Mendis,244,306,9,79,3,1,10,17,12,7.52,34.0,27.11,32.38,0.9,6.79,7.55,9.0,0,0
282
+ AM Nayar,229,323,9,70,10,0,19,22,13,8.46,35.89,25.44,30.57,0.47,7.25,8.59,9.0,1,0
283
+ AF Milne,207,339,9,77,9,1,10,35,13,9.83,37.67,23.0,37.2,0.9,9.89,9.62,9.88,2,0
284
+ Mohammad Asif,192,307,9,71,6,1,8,37,8,9.59,34.11,21.33,36.98,1.12,9.8,7.67,11.38,0,0
285
+ N Thushara,182,289,9,63,14,2,8,28,10,9.53,32.11,20.22,34.62,1.12,9.22,8.8,10.47,2,0
286
+ S Sandeep Warrier,168,257,8,75,6,2,10,25,14,9.18,32.12,21.0,44.64,0.8,9.46,7.5,,1,0
287
+ S Randiv,174,223,8,60,6,0,8,20,5,7.69,27.88,21.75,34.48,1.0,7.2,7.5,11.0,0,0
288
+ A Mithun,288,477,8,95,15,9,16,42,21,9.94,59.62,36.0,32.99,0.5,9.06,9.32,11.92,0,0
289
+ AA Chavan,248,339,8,110,7,0,13,28,16,8.2,42.38,31.0,44.35,0.62,7.39,9.17,16.5,0,0
290
+ AM Ghazanfar,104,146,8,38,0,0,5,10,8,8.42,18.25,13.0,36.54,1.6,8.9,8.87,1.0,0,0
291
+ WG Jacks,144,221,8,49,1,0,13,17,11,9.21,27.62,18.0,34.03,0.62,10.53,8.39,10.29,0,0
292
+ GC Viljoen,138,229,8,47,8,0,6,25,6,9.96,28.62,17.25,34.06,1.33,9.17,8.0,15.6,1,0
293
+ Zeeshan Ansari,209,334,8,54,0,0,10,24,17,9.59,41.75,26.12,25.84,0.8,,9.26,12.0,1,0
294
+ KC Cariappa,216,349,8,62,6,2,11,23,19,9.69,43.62,27.0,28.7,0.73,11.0,8.96,11.0,0,0
295
+ I Udana,174,286,8,49,8,0,10,26,11,9.86,35.75,21.75,28.16,0.8,11.0,8.8,9.78,0,0
296
+ Yudhvir Singh,143,257,8,61,2,0,9,28,13,10.78,32.12,17.88,42.66,0.89,10.33,10.67,14.5,1,0
297
+ JDS Neesham,216,342,8,68,6,0,13,32,14,9.5,42.75,27.0,31.48,0.62,9.64,9.08,18.0,1,0
298
+ M Ntini,210,257,8,108,1,2,9,29,8,7.34,32.12,26.25,51.43,0.89,7.0,6.75,9.6,1,0
299
+ TL Suman,150,198,7,44,0,2,11,8,10,7.92,28.29,21.43,29.33,0.64,7.0,7.17,12.0,0,0
300
+ C de Grandhomme,216,323,7,62,12,2,19,22,13,8.97,46.14,30.86,28.7,0.37,6.0,9.33,9.75,1,0
301
+ Y Venugopal Rao,216,338,7,60,6,0,20,30,13,9.39,48.29,30.86,27.78,0.35,9.57,8.81,14.0,0,0
302
+ AM Salvi,150,205,7,61,6,0,7,18,7,8.2,29.29,21.43,40.67,1.0,8.08,7.71,9.2,0,0
303
+ HF Gurney,162,239,7,51,6,1,8,23,7,8.85,34.14,23.14,31.48,0.88,6.0,8.12,13.5,0,0
304
+ DJ Willey,216,277,7,84,5,0,11,28,8,7.69,39.57,30.86,38.89,0.64,6.71,9.12,10.75,0,0
305
+ B Akhil,188,246,7,64,4,1,13,18,9,7.85,35.14,26.86,34.04,0.54,7.5,7.21,12.9,0,0
306
+ Sakib Hussain,106,147,7,43,0,0,4,12,6,8.32,21.0,15.14,40.57,1.75,7.71,9.41,7.33,1,0
307
+ Shivang Kumar,133,210,7,39,0,0,7,21,9,9.47,30.0,19.0,29.32,1.0,,9.47,,1,0
308
+ P Amarnath,132,241,7,34,0,0,6,29,7,10.95,34.43,18.86,25.76,1.17,11.0,10.42,21.0,0,0
309
+ XC Bartlett,221,394,7,73,0,0,11,46,16,10.7,56.29,31.57,33.03,0.64,10.58,12.0,9.86,0,0
310
+ M Siddharth,166,238,7,59,1,2,8,17,11,8.6,34.0,23.71,35.54,0.88,7.78,8.38,12.63,0,0
311
+ S Dube,144,260,7,33,5,0,17,19,12,10.83,37.14,20.57,22.92,0.41,,10.36,12.35,1,0
312
+ RR Raje,139,214,7,41,4,1,10,23,4,9.24,30.57,19.86,29.5,0.7,11.33,7.89,12.21,0,0
313
+ Ramandeep Singh,61,95,7,19,5,0,6,6,4,9.34,13.57,8.71,31.15,1.17,,10.5,8.07,1,0
314
+ KM Asif,134,232,7,47,8,1,7,16,14,10.39,33.14,19.14,35.07,1.0,9.67,9.91,15.43,0,0
315
+ R Shukla,120,217,7,44,7,3,7,21,9,10.85,31.0,17.14,36.67,1.0,8.8,11.29,16.67,0,0
316
+ OF Smith,90,179,7,36,4,1,6,12,16,11.93,25.57,12.86,40.0,1.17,7.75,12.75,15.33,1,0
317
+ PC Valthaty,151,207,7,46,2,0,10,15,7,8.23,29.57,21.57,30.46,0.7,9.0,8.09,9.23,1,0
318
+ Brijesh Sharma,126,180,7,48,0,0,6,22,4,8.57,25.71,18.0,38.1,1.17,7.91,8.04,9.5,0,0
319
+ Swapnil Singh,162,241,7,39,2,1,14,14,12,8.93,34.43,23.14,24.07,0.5,8.54,9.29,,0,0
320
+ AJ Hosein,108,150,7,40,0,0,5,8,10,8.33,21.43,15.43,37.04,1.4,7.93,8.5,12.0,1,0
321
+ D Pretorius,150,242,7,46,16,0,7,14,11,9.68,34.57,21.43,30.67,1.0,,7.21,12.82,0,0
322
+ B Stanlake,144,200,7,64,6,0,6,19,9,8.33,28.57,20.57,44.44,1.17,7.93,8.67,11.0,0,0
323
+ V Sehwag,136,236,6,45,1,1,15,19,16,10.41,39.33,22.67,33.09,0.4,18.67,8.83,12.6,0,0
324
+ S Tyagi,209,304,6,99,8,3,14,34,12,8.73,50.67,34.83,47.37,0.43,8.38,7.25,17.45,0,0
325
+ SB Bangar,150,221,6,57,3,0,9,24,7,8.84,36.83,25.0,38.0,0.67,5.0,9.44,13.33,0,0
326
+ DG Nalkande,84,150,6,24,4,1,6,10,8,10.71,25.0,14.0,28.57,1.0,11.0,10.3,12.5,0,0
327
+ W O'Rourke,64,132,6,17,0,0,3,16,6,12.38,22.0,10.67,26.56,2.0,12.48,12.0,12.86,1,0
328
+ AK Markram,224,344,6,59,1,1,23,18,21,9.21,57.33,37.33,26.34,0.26,7.97,9.82,8.73,0,0
329
+ SS Cottrell,120,177,6,59,11,0,6,19,8,8.85,29.5,20.0,49.17,1.0,7.71,7.0,16.0,0,0
330
+ Fazalhaq Farooqi,256,440,6,85,10,0,12,55,12,10.31,73.33,42.67,33.2,0.5,8.82,9.92,14.88,0,0
331
+ Ashok Sharma,136,233,6,63,0,0,6,21,14,10.28,38.83,22.67,46.32,1.0,14.64,7.97,10.75,0,0
332
+ VS Malik,205,268,6,88,5,2,13,30,6,7.84,44.67,34.17,42.93,0.46,7.8,7.62,10.29,0,0
333
+ V Puthur,73,109,6,25,0,0,5,4,9,8.96,18.17,12.17,34.25,1.2,,8.5,11.08,1,0
334
+ KMDN Kulasekara,102,122,6,47,5,0,5,16,0,7.18,20.33,17.0,46.08,1.2,7.45,8.0,6.4,0,0
335
+ R Sathish,139,233,6,31,5,0,14,18,10,10.06,38.83,23.17,22.3,0.43,4.0,9.45,18.46,0,0
336
+ M de Lange,108,171,6,41,6,2,5,21,4,9.5,28.5,18.0,37.96,1.2,8.2,9.67,12.0,1,0
337
+ MG Bracewell,66,95,6,26,0,0,5,7,6,8.64,15.83,11.0,39.39,1.2,5.4,11.33,,0,0
338
+ K Khejroliya,140,250,6,41,6,2,8,17,15,10.71,41.67,23.33,29.29,0.75,12.0,8.87,12.97,0,0
339
+ PP Hinge,79,145,6,36,0,0,3,11,11,11.01,24.17,13.17,45.57,2.0,12.3,10.62,9.23,1,0
340
+ RV Gomez,96,130,6,38,1,0,9,10,7,8.12,21.67,16.0,39.58,0.67,4.0,7.57,20.0,0,0
341
+ JE Taylor,117,167,6,54,4,1,5,10,9,8.56,27.83,19.5,46.15,1.2,6.38,6.67,11.29,1,0
342
+ Jaskaran Singh,102,174,6,42,5,4,7,23,4,10.24,29.0,17.0,41.18,0.86,8.33,10.0,14.75,0,0
343
+ S Narwal,106,203,6,38,7,0,6,17,13,11.49,33.83,17.67,35.85,1.0,9.08,16.64,16.5,1,0
344
+ S Kaushik,204,304,6,72,5,1,10,25,14,8.94,50.67,34.0,35.29,0.6,8.75,8.0,16.67,1,0
345
+ JA Duffy,80,139,6,37,0,0,3,8,12,10.42,23.17,13.33,46.25,2.0,10.59,6.46,13.12,1,0
346
+ FH Edwards,140,160,6,75,9,1,6,20,2,6.86,26.67,23.33,53.57,1.0,4.69,8.0,10.23,0,0
347
+ V Kohli,251,371,5,55,7,6,26,25,11,8.87,74.2,50.2,21.91,0.19,6.21,8.73,16.29,0,0
348
+ RJW Topley,120,222,5,44,5,0,6,23,13,11.1,44.4,24.0,36.67,0.83,8.73,13.8,14.25,0,0
349
+ SH Johnson,169,289,5,66,3,0,9,30,15,10.26,57.8,33.8,39.05,0.56,10.21,11.45,9.07,0,0
350
+ SB Wagh,102,147,5,50,6,0,8,21,2,8.65,29.4,20.4,49.02,0.62,8.0,,13.5,1,0
351
+ O Thomas,60,85,5,22,1,2,4,9,1,8.5,17.0,12.0,36.67,1.25,9.67,4.5,9.0,0,0
352
+ PD Collingwood,89,101,5,24,1,0,6,4,3,6.81,20.2,17.8,26.97,0.83,,7.25,4.94,0,0
353
+ MJ Henry,163,314,5,44,3,0,9,26,18,11.56,62.8,32.6,26.99,0.56,10.95,13.95,10.0,0,0
354
+ S Ladda,138,225,5,49,2,1,9,12,17,9.78,45.0,27.6,35.51,0.56,10.83,9.15,10.25,0,0
355
+ TM Dilshan,271,368,5,81,4,0,25,27,15,8.15,73.6,54.2,29.89,0.2,7.15,8.33,11.54,0,0
356
+ HR Shokeen,204,320,5,82,7,2,13,20,20,9.41,64.0,40.8,40.2,0.38,8.15,10.19,,0,0
357
+ Shoaib Ahmed,102,154,5,35,1,0,7,14,7,9.06,30.8,20.4,34.31,0.71,10.5,7.1,20.0,0,0
358
+ A Choudhary,101,144,5,42,6,1,5,13,6,8.55,28.8,20.2,41.58,1.0,6.0,11.59,10.0,0,0
359
+ Gurkeerat Singh,78,97,5,26,4,0,6,6,3,7.46,19.4,15.6,33.33,0.83,7.67,7.4,,0,0
360
+ AP Dole,66,114,5,21,6,1,3,11,4,10.36,22.8,13.2,31.82,1.67,11.17,8.5,13.0,0,0
361
+ KL Nagarkoti,180,287,5,52,5,0,11,21,14,9.57,57.4,36.0,28.89,0.45,9.0,10.05,7.0,0,0
362
+ Ankit Soni,109,145,4,38,3,0,6,8,7,7.98,36.25,27.25,34.86,0.67,3.5,8.38,24.0,0,0
363
+ WA Mota,72,98,4,25,2,1,7,4,5,8.17,24.5,18.0,34.72,0.57,,6.1,18.5,0,0
364
+ Shashank Singh,61,91,4,16,1,0,6,8,3,8.95,22.75,15.25,26.23,0.67,,7.35,15.5,0,0
365
+ Y Nagar,66,125,4,16,2,4,8,11,6,11.36,31.25,16.5,24.24,0.5,10.0,11.5,,0,0
366
+ Shivam Sharma,114,165,4,37,0,0,5,9,10,8.68,41.25,28.5,32.46,0.8,2.0,9.2,8.33,0,0
367
+ DJ Muthuswami,84,108,4,47,0,0,6,14,3,7.71,27.0,21.0,55.95,0.67,8.25,8.0,1.0,0,0
368
+ Arjun Tendulkar,73,117,4,33,9,1,5,10,5,9.62,29.25,18.25,45.21,0.8,6.9,32.25,6.0,0,0
369
+ DP Vijaykumar,152,205,4,69,5,2,9,23,5,8.09,51.25,38.0,45.39,0.44,7.41,6.0,12.69,0,0
370
+ Parvez Rasool,198,273,4,62,2,0,11,22,11,8.27,68.25,49.5,31.31,0.36,8.23,8.3,,0,0
371
+ LE Plunkett,150,228,4,42,4,0,7,15,12,9.12,57.0,37.5,28.0,0.57,10.78,8.0,8.43,1,0
372
+ Sikandar Raza,85,146,3,23,3,0,7,15,4,10.31,48.67,28.33,27.06,0.43,14.0,9.7,,0,0
373
+ AL Menaria,110,144,3,40,3,0,12,15,4,7.85,48.0,36.67,36.36,0.25,6.7,8.21,12.5,0,0
374
+ SM Harwood,60,74,3,34,7,0,3,6,2,7.4,24.67,20.0,56.67,1.0,2.33,10.25,8.67,0,0
375
+ VR Iyer,81,145,3,17,2,1,9,12,7,10.74,48.33,27.0,20.99,0.33,,10.4,11.71,0,0
376
+ Abhinandan Singh,60,122,3,17,0,0,3,13,7,12.2,40.67,20.0,28.33,1.0,17.25,8.54,9.6,0,0
377
+ GHS Garton,90,136,3,32,5,2,5,11,6,9.07,45.33,30.0,35.56,0.6,10.8,5.33,6.0,0,0
378
+ Gagandeep Singh,84,142,3,26,0,0,4,14,6,10.14,47.33,28.0,30.95,0.75,7.0,7.9,18.67,0,0
379
+ Gurjapneet Singh,88,139,3,31,0,0,5,9,9,9.48,46.33,29.33,35.23,0.6,11.0,9.36,9.38,0,0
380
+ T Shamsi,120,185,3,32,0,0,5,14,8,9.25,61.67,40.0,26.67,0.6,8.0,8.85,15.0,0,0
381
+ RN ten Doeschate,78,94,3,22,5,0,10,4,3,7.23,31.33,26.0,28.21,0.3,,6.83,12.0,0,0
382
+ P Sahu,105,152,3,27,2,0,5,11,5,8.69,50.67,35.0,25.71,0.6,9.33,8.55,,0,0
383
+ JA Richardson,90,162,3,32,4,0,4,12,10,10.8,54.0,30.0,35.56,0.75,10.8,10.12,13.5,0,0
384
+ JJ van der Wath,72,134,3,31,2,2,3,17,6,11.17,44.67,24.0,43.06,1.0,8.2,14.67,12.25,0,0
385
+ MJ Clarke,66,72,3,24,0,0,5,4,2,6.55,24.0,22.0,36.36,0.6,6.0,6.67,,0,0
386
+ A Flintoff,66,106,2,21,0,0,3,7,7,9.64,53.0,33.0,31.82,0.67,7.67,6.2,17.33,0,0
387
+ MK Lomror,90,127,2,22,4,0,11,8,5,8.47,63.5,45.0,24.44,0.18,7.25,8.91,,0,0
388
+ DNT Zoysa,66,100,2,25,1,2,3,12,3,9.09,50.0,33.0,37.88,0.67,7.57,13.0,11.33,0,0
389
+ AU Rashid,60,91,2,20,0,0,3,4,7,9.1,45.5,30.0,33.33,0.67,9.67,8.86,,0,0
390
+ KT Maphaka,68,148,2,26,3,0,4,18,8,13.06,74.0,34.0,38.24,0.5,11.86,13.29,17.0,0,0
391
+ RJ Gleeson,69,111,2,26,3,1,3,14,3,9.65,55.5,34.5,37.68,0.67,9.6,8.75,10.8,0,0
392
+ Mayank Dagar,137,205,2,44,1,0,8,14,11,8.98,102.5,68.5,32.12,0.25,11.5,8.28,12.0,0,0
393
+ LJ Wright,71,125,2,15,4,0,6,5,9,10.56,62.5,35.5,21.13,0.33,12.0,9.7,19.2,0,0
394
+ P Suyal,96,154,2,39,7,4,5,16,5,9.62,77.0,48.0,40.62,0.4,10.0,6.33,12.5,0,0
395
+ KJ Abbott,96,182,2,30,5,1,5,24,4,11.38,91.0,48.0,31.25,0.4,10.43,12.0,12.33,0,0
396
+ C Bosch,65,95,2,34,0,0,3,7,7,8.77,47.5,32.5,52.31,0.67,11.0,10.74,4.57,0,0
397
+ FA Allen,90,136,2,26,1,0,4,11,7,9.07,68.0,45.0,28.89,0.5,9.75,8.82,,0,0
398
+ Mohammad Hafeez,60,71,2,25,2,1,4,5,2,7.1,35.5,30.0,41.67,0.5,8.0,7.0,,0,0
399
+ P Dubey,78,112,2,24,1,0,5,10,5,8.62,56.0,39.0,30.77,0.4,4.0,9.45,,0,0
400
+ V Viyaskanth,60,90,1,19,0,0,3,4,6,9.0,90.0,60.0,31.67,0.33,5.5,9.88,,0,0
401
+ AA Jhunjhunwala,85,130,1,28,3,0,10,10,5,9.18,130.0,85.0,32.94,0.1,8.17,9.88,12.0,0,0
402
+ TP Sudhindra,70,137,1,19,3,1,3,9,9,11.74,137.0,70.0,27.14,0.33,10.0,11.6,14.62,0,0
403
+ K Goel,66,94,0,20,1,0,6,9,2,8.55,,,30.3,0.0,5.0,8.9,,0,0
data/processed/charts/01_wins_per_season.html ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <html>
2
+ <head><meta charset="utf-8" /></head>
3
+ <body>
4
+ <div> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
5
+ <script charset="utf-8" src="https://cdn.plot.ly/plotly-3.5.0.min.js" integrity="sha256-fHbNLP+GlIXN+efbQec78UkemUz3NJp7UmfGxC1tNxs=" crossorigin="anonymous"></script> <div id="15df0f3e-68aa-4809-87d9-74c71f73c38b" class="plotly-graph-div" style="height:480px; width:100%;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("15df0f3e-68aa-4809-87d9-74c71f73c38b")) { Plotly.newPlot( "15df0f3e-68aa-4809-87d9-74c71f73c38b", [{"alignmentgroup":"True","hovertemplate":"team=Chennai Super Kings\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Chennai Super Kings","marker":{"color":"#F9CD05","pattern":{"shape":""},"line":{"width":0}},"name":"Chennai Super Kings","offsetgroup":"Chennai Super Kings","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"2AfZB9oH2wfcB90H3gffB+IH4wfkB+UH5gfnB+gH6QfqBw=="},"xaxis":"x","y":{"dtype":"i1","bdata":"CQgJCwoMCgoLCgYLBAoHBAM="},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Deccan Chargers\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Deccan Chargers","marker":{"color":"#888780","pattern":{"shape":""},"line":{"width":0}},"name":"Deccan Chargers","offsetgroup":"Deccan Chargers","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"2AfZB9oH2wfcBw=="},"xaxis":"x","y":{"dtype":"i1","bdata":"AgkIBgQ="},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Delhi Capitals\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Delhi Capitals","marker":{"color":"#0078BC","pattern":{"shape":""},"line":{"width":0}},"name":"Delhi Capitals","offsetgroup":"Delhi Capitals","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH5wfoB+kH6gc="},"xaxis":"x","y":{"dtype":"i1","bdata":"BwoHBAsDAgUHBgUKCQoHBQcGAw=="},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Kings XI Punjab\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Kings XI Punjab","marker":{"color":"#888780","pattern":{"shape":""},"line":{"width":0}},"name":"Kings XI Punjab","offsetgroup":"Kings XI Punjab","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5Ac="},"xaxis":"x","y":{"dtype":"i1","bdata":"CgcEBwgIDAMEBwYGBg=="},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Kolkata Knight Riders\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Kolkata Knight Riders","marker":{"color":"#3A225D","pattern":{"shape":""},"line":{"width":0}},"name":"Kolkata Knight Riders","offsetgroup":"Kolkata Knight Riders","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH5wfoB+kH6gc="},"xaxis":"x","y":{"dtype":"i1","bdata":"BgMHCAwGCwcICQkGBwkGBgsFAQ=="},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Mumbai Indians\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Mumbai Indians","marker":{"color":"#004BA0","pattern":{"shape":""},"line":{"width":0}},"name":"Mumbai Indians","offsetgroup":"Mumbai Indians","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH5wfoB+kH6gc="},"xaxis":"x","y":{"dtype":"i1","bdata":"BwULCgoNBwoHDAYLCwcECQQJAg=="},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Rajasthan Royals\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Rajasthan Royals","marker":{"color":"#254AA5","pattern":{"shape":""},"line":{"width":0}},"name":"Rajasthan Royals","offsetgroup":"Rajasthan Royals","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"2AfZB9oH2wfcB90H3gffB+IH4wfkB+UH5gfnB+gH6QfqBw=="},"xaxis":"x","y":{"dtype":"i1","bdata":"DQYGBgcLBwcHBQYFCgcJBAY="},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Royal Challengers Bangalore\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Royal Challengers Bangalore","marker":{"color":"#EC1C24","pattern":{"shape":""},"line":{"width":0}},"name":"Royal Challengers Bangalore","offsetgroup":"Royal Challengers Bangalore","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH5wfoB+kH6gc="},"xaxis":"x","y":{"dtype":"i1","bdata":"BAkICggJBQgJAwYFBwkJBwcLBg=="},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Pune Warriors India\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Pune Warriors India","marker":{"color":"#888780","pattern":{"shape":""},"line":{"width":0}},"name":"Pune Warriors India","offsetgroup":"Pune Warriors India","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"2wfcB90H"},"xaxis":"x","y":{"dtype":"i1","bdata":"BAQE"},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Sunrisers Hyderabad\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Sunrisers Hyderabad","marker":{"color":"#F7A721","pattern":{"shape":""},"line":{"width":0}},"name":"Sunrisers Hyderabad","offsetgroup":"Sunrisers Hyderabad","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"3QfeB98H4AfhB+IH4wfkB+UH5gfnB+gH6QfqBw=="},"xaxis":"x","y":{"dtype":"i1","bdata":"CgYHCwgKBggDBgQJBgU="},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Gujarat Lions\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Gujarat Lions","marker":{"color":"#888780","pattern":{"shape":""},"line":{"width":0}},"name":"Gujarat Lions","offsetgroup":"Gujarat Lions","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"4AfhBw=="},"xaxis":"x","y":{"dtype":"i1","bdata":"CQQ="},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Rising Pune Supergiants\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Rising Pune Supergiants","marker":{"color":"#888780","pattern":{"shape":""},"line":{"width":0}},"name":"Rising Pune Supergiants","offsetgroup":"Rising Pune Supergiants","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"4AfhBw=="},"xaxis":"x","y":{"dtype":"i1","bdata":"BQo="},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Punjab Kings\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Punjab Kings","marker":{"color":"#ED1B24","pattern":{"shape":""},"line":{"width":0}},"name":"Punjab Kings","offsetgroup":"Punjab Kings","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"5QfmB+cH6AfpB+oH"},"xaxis":"x","y":{"dtype":"i1","bdata":"BgcGBQoG"},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Gujarat Titans\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Gujarat Titans","marker":{"color":"#1C4E80","pattern":{"shape":""},"line":{"width":0}},"name":"Gujarat Titans","offsetgroup":"Gujarat Titans","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"5gfnB+gH6QfqBw=="},"xaxis":"x","y":{"dtype":"i1","bdata":"DAsFCQQ="},"yaxis":"y","type":"bar"},{"alignmentgroup":"True","hovertemplate":"team=Lucknow Super Giants\u003cbr\u003eseason=%{x}\u003cbr\u003ematches won=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"Lucknow Super Giants","marker":{"color":"#A72056","pattern":{"shape":""},"line":{"width":0}},"name":"Lucknow Super Giants","offsetgroup":"Lucknow Super Giants","orientation":"v","showlegend":true,"textposition":"auto","x":{"dtype":"i2","bdata":"5gfnB+gH6QfqBw=="},"xaxis":"x","y":{"dtype":"i1","bdata":"CQgHBgI="},"yaxis":"y","type":"bar"}], {"template":{"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]},"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"bgcolor":"#E5ECF6","angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"ternary":{"bgcolor":"#E5ECF6","aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"#E5ECF6","subunitcolor":"white","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}}},"xaxis":{"anchor":"y","domain":[0.0,1.0],"title":{"text":"season"},"tickmode":"linear","dtick":1,"tickangle":45},"yaxis":{"anchor":"x","domain":[0.0,1.0],"title":{"text":"matches won"}},"legend":{"title":{"text":"team"},"tracegroupgap":0},"title":{"text":"IPL wins per team per season (2008-2026)"},"barmode":"group","height":480,"font":{"family":"Arial"},"plot_bgcolor":"white","paper_bgcolor":"white","bargap":0.15}, {"responsive": true} ) }; </script> </div>
6
+ </body>
7
+ </html>
data/processed/charts/02_venue_heatmap.html ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <html>
2
+ <head><meta charset="utf-8" /></head>
3
+ <body>
4
+ <div> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
5
+ <script charset="utf-8" src="https://cdn.plot.ly/plotly-3.5.0.min.js" integrity="sha256-fHbNLP+GlIXN+efbQec78UkemUz3NJp7UmfGxC1tNxs=" crossorigin="anonymous"></script> <div id="d1b2b117-e816-4414-a4a2-cc353a0ccc13" class="plotly-graph-div" style="height:460px; width:100%;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("d1b2b117-e816-4414-a4a2-cc353a0ccc13")) { Plotly.newPlot( "d1b2b117-e816-4414-a4a2-cc353a0ccc13", [{"colorbar":{"ticksuffix":"%","title":{"text":"win %"}},"colorscale":[[0.0,"#FCEBEB"],[0.4,"#F09595"],[0.6,"#9FE1CB"],[1.0,"#085041"]],"hoverongaps":false,"text":[["75%","64%","54%","67%","46%","65%","0%","50%","50%","50%","38%","52%"],["33%","0%","0%","0%","0%","0%","0%","0%","0%","0%","17%","0%"],["50%","47%","20%","42%","43%","38%","67%","14%","33%","33%","54%","32%"],["0%","0%","0%","0%","0%","0%","54%","0%","0%","0%","0%","67%"],["0%","62%","27%","46%","42%","33%","0%","54%","17%","33%","40%","46%"],["50%","43%","56%","46%","67%","35%","60%","50%","50%","54%","67%","26%"],["0%","0%","60%","0%","0%","0%","0%","0%","0%","0%","0%","50%"],["54%","30%","71%","47%","69%","50%","17%","56%","29%","67%","64%","60%"],["29%","0%","0%","0%","0%","0%","0%","0%","0%","0%","0%","0%"],["0%","0%","0%","0%","0%","83%","57%","20%","0%","0%","0%","56%"],["33%","20%","29%","43%","40%","20%","67%","43%","68%","75%","30%","50%"],["50%","67%","43%","67%","50%","43%","50%","62%","43%","33%","33%","50%"],["0%","54%","33%","69%","30%","23%","0%","67%","0%","33%","61%","14%"]],"textfont":{"size":10},"texttemplate":"%{text}","x":["DY Patil","Dubai International Cricket","Eden Gardens","Feroz Shah Kotla","M Chinnaswamy","MA Chidambaram","Motera","PCA","Sawai Mansingh","Sheikh Zayed","Uppal","Wankhede"],"y":["Chennai Super Kings","Deccan Chargers","Delhi Capitals","Gujarat Titans","Kings XI Punjab","Kolkata Knight Riders","Lucknow Super Giants","Mumbai Indians","Pune Warriors India","Punjab Kings","Rajasthan Royals","Royal Challengers Bangalore","Sunrisers Hyderabad"],"z":{"dtype":"f8","bdata":"AAAAAADAUkAzMzMzMxNQQGZmZmZm5kpAzczMzMysUECamZmZmRlHQJqZmZmZWVBAAAAAAAAAAAAAAAAAAABJQAAAAAAAAElAAAAAAAAASUAAAAAAAMBCQDMzMzMz80lAZmZmZmamQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMzM7MwQAAAAAAAAAAAAAAAAAAASUCamZmZmVlHQAAAAAAAADRAZmZmZmbmREAzMzMzM3NFQAAAAAAAQENAzczMzMysUECamZmZmZksQGZmZmZmpkBAZmZmZmamQEAAAAAAAEBLQJqZmZmZmT9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZmZmZmbmSkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM3MzMzMrFBAAAAAAAAAAAAAAAAAAEBPQM3MzMzMTDtAAAAAAADARkCamZmZmdlEQGZmZmZmpkBAAAAAAAAAAADNzMzMzMxKQDMzMzMzszBAZmZmZmamQEAAAAAAAABEQAAAAAAAwEZAAAAAAAAASUAzMzMzM3NFQM3MzMzMzEtAmpmZmZkZR0DNzMzMzKxQQGZmZmZmpkFAAAAAAAAATkAAAAAAAABJQAAAAAAAAElAAAAAAABAS0DNzMzMzKxQQM3MzMzMTDpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElAAAAAAABAS0AAAAAAAAA+QJqZmZmZ2VFAzczMzMyMR0DNzMzMzExRQAAAAAAAAElAMzMzMzOzMEDNzMzMzMxLQJqZmZmZmTxAzczMzMysUEAzMzMzMxNQQDMzMzMzM05AmpmZmZmZPEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMzMz01RAzczMzMyMTEAAAAAAAAA0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM3MzMzMzEtAZmZmZmamQEAAAAAAAAA0QJqZmZmZmTxAMzMzMzNzRUAAAAAAAABEQAAAAAAAADRAzczMzMysUEAzMzMzM3NFQGZmZmZmBlFAAAAAAADAUkAAAAAAAAA+QAAAAAAAAElAAAAAAAAASUDNzMzMzKxQQDMzMzMzc0VAzczMzMysUEAAAAAAAABJQDMzMzMzc0VAAAAAAAAASUAAAAAAAEBPQDMzMzMzc0VAZmZmZmamQEBmZmZmZqZAQAAAAAAAAElAAAAAAAAAAABmZmZmZuZKQGZmZmZmpkBAzczMzMxMUUAAAAAAAAA+QJqZmZmZGTdAAAAAAAAAAADNzMzMzKxQQAAAAAAAAAAAZmZmZmamQECamZmZmZlOQJqZmZmZmSxA","shape":"13, 12"},"zmax":100,"zmin":0,"type":"heatmap"}], {"template":{"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]},"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"bgcolor":"#E5ECF6","angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"ternary":{"bgcolor":"#E5ECF6","aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"#E5ECF6","subunitcolor":"white","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}}},"font":{"family":"Arial"},"xaxis":{"tickfont":{"size":11},"tickangle":-35},"yaxis":{"tickfont":{"size":11}},"margin":{"l":160,"b":140},"title":{"text":"Win % by team at each venue (Top 12 Venues, 5+ games played)"},"height":460,"plot_bgcolor":"white","paper_bgcolor":"white"}, {"responsive": true} ) }; </script> </div>
6
+ </body>
7
+ </html>
data/processed/charts/03_toss_impact.html ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <html>
2
+ <head><meta charset="utf-8" /></head>
3
+ <body>
4
+ <div> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
5
+ <script charset="utf-8" src="https://cdn.plot.ly/plotly-3.5.0.min.js" integrity="sha256-fHbNLP+GlIXN+efbQec78UkemUz3NJp7UmfGxC1tNxs=" crossorigin="anonymous"></script> <div id="b0793189-3d34-4743-bd3f-599a66b7de8a" class="plotly-graph-div" style="height:450px; width:100%;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("b0793189-3d34-4743-bd3f-599a66b7de8a")) { Plotly.newPlot( "b0793189-3d34-4743-bd3f-599a66b7de8a", [{"marker":{"color":"#7F77DD"},"name":"Chose to Bat","text":["46.1%"],"textposition":"auto","x":["Bat"],"y":[46.1],"type":"bar","xaxis":"x","yaxis":"y"},{"marker":{"color":"#1D9E75"},"name":"Chose to Field","text":["54.4%"],"textposition":"auto","x":["Field"],"y":[54.4],"type":"bar","xaxis":"x","yaxis":"y"},{"line":{"color":"#7F77DD","width":3},"marker":{"size":8,"symbol":"diamond"},"mode":"lines+markers","name":"Season Trend","x":{"dtype":"i2","bdata":"2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH5wfoB+kH6gc="},"y":{"dtype":"f8","bdata":"ZmZmZmYmSEAzMzMzM\u002fNMQJqZmZmZ2UlAZmZmZmZmSkDNzMzMzExGQDMzMzMzs0dAAAAAAAAASUDNzMzMzIxIQJqZmZmZWUxAzczMzMzMTEBmZmZmZqZKQAAAAAAAgE5AmpmZmZnZREBmZmZmZiZNQM3MzMzMTEhAzczMzMxMR0CamZmZmdlFQDMzMzMzs05AZmZmZmamS0A="},"type":"scatter","xaxis":"x2","yaxis":"y2"}], {"template":{"data":{"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"white","showlakes":true,"showland":true,"subunitcolor":"#C8D4E3"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"bgcolor":"white","radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"bgcolor":"white","caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0.0,0.45]},"yaxis":{"anchor":"x","domain":[0.0,1.0],"ticksuffix":"%","range":[0,100]},"xaxis2":{"anchor":"y2","domain":[0.55,1.0]},"yaxis2":{"anchor":"x2","domain":[0.0,1.0],"ticksuffix":"%","range":[0,100]},"annotations":[{"font":{"size":16},"showarrow":false,"text":"Win % Based on Toss Decision","x":0.225,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"},{"font":{"size":16},"showarrow":false,"text":"Toss Win\u002fMatch Win Correlation by Season","x":0.775,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"},{"showarrow":false,"text":"50% Threshold","x":1,"xanchor":"right","xref":"x2 domain","y":50,"yanchor":"bottom","yref":"y2"}],"shapes":[{"line":{"color":"#888780","dash":"dot"},"type":"line","x0":0,"x1":1,"xref":"x2 domain","y0":50,"y1":50,"yref":"y2"}],"title":{"text":"Toss Impact: Toss Winners have won the match 51.6% of the time overall"},"height":450,"showlegend":false}, {"responsive": true} ) }; </script> </div>
6
+ </body>
7
+ </html>
data/processed/charts/04_batting_scatter.html ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <html>
2
+ <head><meta charset="utf-8" /></head>
3
+ <body>
4
+ <div> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
5
+ <script charset="utf-8" src="https://cdn.plot.ly/plotly-3.5.0.min.js" integrity="sha256-fHbNLP+GlIXN+efbQec78UkemUz3NJp7UmfGxC1tNxs=" crossorigin="anonymous"></script> <div id="a820a855-d84c-46ee-94dd-6745ee64e94e" class="plotly-graph-div" style="height:520px; width:100%;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("a820a855-d84c-46ee-94dd-6745ee64e94e")) { Plotly.newPlot( "a820a855-d84c-46ee-94dd-6745ee64e94e", [{"customdata":[[9022,8,66,6743,"Elite (high SR + high avg)"],[7185,2,48,5417,"Elite (high SR + high avg)"],[6567,4,62,4682,"Elite (high SR + high avg)"],[5593,6,42,4048,"Elite (high SR + high avg)"],[5536,1,39,4025,"Elite (high SR + high avg)"],[5439,0,24,3944,"Elite (high SR + high avg)"],[5181,3,40,3400,"Elite (high SR + high avg)"],[5008,5,26,3556,"Elite (high SR + high avg)"],[4997,6,31,3331,"Elite (high SR + high avg)"],[4843,0,22,3570,"Elite (high SR + high avg)"],[4773,0,39,3515,"Elite (high SR + high avg)"],[4468,2,30,3017,"Elite (high SR + high avg)"],[4391,7,26,2937,"Elite (high SR + high avg)"],[4196,4,29,3025,"Elite (high SR + high avg)"],[4044,0,31,2993,"Elite (high SR + high avg)"],[3880,4,21,2801,"Elite (high SR + high avg)"],[3756,2,20,2567,"Elite (high SR + high avg)"],[3444,3,24,2557,"Elite (high SR + high avg)"],[3437,0,16,2315,"Elite (high SR + high avg)"],[3310,1,20,2347,"Elite (high SR + high avg)"],[3222,1,13,2233,"Elite (high SR + high avg)"],[3200,1,13,2309,"Elite (high SR + high avg)"],[3022,0,22,2205,"Elite (high SR + high avg)"],[2882,2,13,2176,"Elite (high SR + high avg)"],[2855,0,10,1949,"Elite (high SR + high avg)"],[2728,2,16,1740,"Elite (high SR + high avg)"],[2680,2,21,1970,"Elite (high SR + high avg)"],[2655,0,12,1518,"Elite (high SR + high avg)"],[2489,1,20,1866,"Elite (high SR + high avg)"],[2472,2,18,1627,"Elite (high SR + high avg)"],[2385,0,17,1755,"Elite (high SR + high avg)"],[2375,0,14,1488,"Elite (high SR + high avg)"],[2291,0,12,1655,"Elite (high SR + high avg)"],[2196,2,12,1325,"Elite (high SR + high avg)"],[2136,1,10,1452,"Elite (high SR + high avg)"],[2115,3,14,1447,"Elite (high SR + high avg)"],[2069,2,11,1483,"Elite (high SR + high avg)"],[2009,0,10,1428,"Elite (high SR + high avg)"],[1829,2,10,1124,"Elite (high SR + high avg)"],[1701,1,12,1095,"Elite (high SR + high avg)"],[1680,1,8,1157,"Elite (high SR + high avg)"],[1674,2,9,1145,"Elite (high SR + high avg)"],[1633,0,10,1208,"Elite (high SR + high avg)"],[1560,0,5,1056,"Elite (high SR + high avg)"],[1504,1,10,1087,"Elite (high SR + high avg)"],[1497,1,12,1089,"Elite (high SR + high avg)"],[1349,1,11,851,"Elite (high SR + high avg)"],[1332,1,8,825,"Elite (high SR + high avg)"],[1329,0,10,941,"Elite (high SR + high avg)"],[1318,0,6,920,"Elite (high SR + high avg)"],[1258,0,12,729,"Elite (high SR + high avg)"],[1107,0,8,799,"Elite (high SR + high avg)"],[1080,0,11,776,"Elite (high SR + high avg)"],[1066,0,7,687,"Elite (high SR + high avg)"],[1029,0,2,590,"Elite (high SR + high avg)"],[1001,1,4,742,"Elite (high SR + high avg)"],[928,0,7,619,"Elite (high SR + high avg)"],[912,0,5,585,"Elite (high SR + high avg)"],[903,1,3,593,"Elite (high SR + high avg)"],[843,0,5,539,"Elite (high SR + high avg)"],[828,1,5,430,"Elite (high SR + high avg)"],[768,1,4,529,"Elite (high SR + high avg)"],[672,0,4,477,"Elite (high SR + high avg)"],[657,0,3,478,"Elite (high SR + high avg)"],[654,0,4,477,"Elite (high SR + high avg)"],[652,2,3,303,"Elite (high SR + high avg)"],[614,0,4,441,"Elite (high SR + high avg)"],[577,2,3,406,"Elite (high SR + high avg)"],[546,0,2,324,"Elite (high SR + high avg)"],[525,0,4,355,"Elite (high SR + high avg)"],[519,0,2,359,"Elite (high SR + high avg)"],[463,1,2,303,"Elite (high SR + high avg)"],[441,0,3,250,"Elite (high SR + high avg)"],[413,0,2,289,"Elite (high SR + high avg)"],[381,0,3,273,"Elite (high SR + high avg)"],[379,0,4,258,"Elite (high SR + high avg)"]],"hovertemplate":"\u003cb\u003e%{hovertext}\u003c\u002fb\u003e\u003cbr\u003e\u003cbr\u003ebatting average=%{x}\u003cbr\u003estrike rate=%{y}\u003cbr\u003etotal_runs=%{customdata[0]}\u003cbr\u003ehundreds=%{customdata[1]}\u003cbr\u003efifties=%{customdata[2]}\u003cbr\u003eballs_faced=%{customdata[3]}\u003cextra\u003e\u003c\u002fextra\u003e","hovertext":["V Kohli","RG Sharma","DA Warner","KL Rahul","SK Raina","MS Dhoni","AB de Villiers","SV Samson","CH Gayle","KD Karthik","F du Plessis","SA Yadav","JC Buttler","Shubman Gill","SS Iyer","SR Watson","RR Pant","Q de Kock","KA Pollard","Ishan Kishan","YK Pathan","DA Miller","N Rana","BB McCullum","HH Pandya","V Sehwag","RD Gaikwad","AD Russell","SE Marsh","YBK Jaiswal","DR Smith","N Pooran","RA Tripathi","Abhishek Sharma","MP Stoinis","B Sai Sudharsan","AC Gilchrist","S Dube","H Klaasen","P Simran Singh","Tilak Varma","JM Bairstow","AK Markram","SO Hetmyer","MR Marsh","VR Iyer","RM Patidar","TM Head","CA Lynn","RK Singh","PD Salt","ML Hayden","DP Conway","LS Livingstone","TH David","KP Pietersen","Dhruv Jurel","T Stubbs","C Green","Shashank Singh","Priyansh Arya","ST Jayasuriya","A Raghuvanshi","Nithish Kumar Reddy","E Lewis","V Suryavanshi","JJ Roy","HM Amla","Naman Dhir","RD Rickelton","D Brevis","WG Jacks","A Mhatre","R Ravindra","Sameer Rizvi","KR Mayers"],"legendgroup":"Elite (high SR + high avg)","marker":{"color":"#085041","size":{"dtype":"i2","bdata":"PiMRHKcZ2RWgFT8VPRSQE4UT6xKlEnQRJxFkEMwPKA+sDnQNbQ3uDJYMgAzOC0ILJwuoCngKXwq5CagJUQlHCfMIlAhYCEMIFQjZByUHpQaQBooGYQYYBuAF2QVFBTQFMQUmBeoEUwQ4BCoEBQTpA6ADkAOHA0sDPAMAA6ACkQKOAowCZgJBAiICDQIHAs8BuQGdAX0BewE="},"sizemode":"area","sizeref":11.50765306122449,"symbol":"circle","line":{"color":"white","width":0.5}},"mode":"markers","name":"Elite (high SR + high avg)","orientation":"v","showlegend":true,"x":{"dtype":"f8","bdata":"KVyPwvUIQ0Bcj8L1KNw8QIXrUbgeBURAXI\u002fC9Si8RkAzMzMzM5NAQPYoXI\u002fCNUFAmpmZmZm5REBmZmZmZuY\u002fQM3MzMzMrENAZmZmZmbmOUCuR+F6FK5BQI\u002fC9ShcL0FAexSuR+GaQ0DNzMzMzCxEQD0K16Nw\u002fUBACtejcD0KP0AfhetRuJ5AQI\u002fC9ShcTz9ApHA9CtejOkBmZmZmZqY+QArXo3A9Sj1ApHA9CtdjQUC4HoXrUXg7QHE9CtejMDtAuB6F61G4O0DXo3A9Ctc7QBSuR+F6tENAXI\u002fC9SjcPECF61G4HiVDQArXo3A96kFAcT0K16NwPUAAAAAAAEA\u002fQKRwPQrXozpASOF6FK5HPUB7FK5H4Xo8QLgehetRmEhAuB6F61E4O0BxPQrXo3A+QKRwPQrXQ0VAFK5H4XpUPUDXo3A9ChdDQD0K16NwvUBAcT0K16OwPUBmZmZmZuY6QJqZmZmZ2TtAcT0K16PwPUCPwvUoXA9AQB+F61G4PkBACtejcD0KQUAzMzMzMxNAQK5H4XoUjkBAAAAAAACARECamZmZmZlFQAAAAAAAADpAAAAAAABgQkAAAAAAAOBBQK5H4XoU7j5AzczMzMzMRkA9CtejcF1BQDMzMzMzE0VAj8L1KFyPQEB7FK5H4Xo6QLgehetROD1A4XoUrkdhO0AAAAAAAEA7QAAAAAAAYERArkfhehQOQUBxPQrXozBGQM3MzMzMTDtA7FG4HoUrPUAzMzMzM\u002fM5QHE9Ctej8DxAAAAAAABgQkCPwvUoXM85QI\u002fC9ShcTz1AZmZmZmYmPUA="},"xaxis":"x","y":{"dtype":"f8","bdata":"mpmZmZm5YEAUrkfhepRgQLgehetRiGFAPQrXo3BFYUDhehSuRzFhQIXrUbgePWFAXI\u002fC9SgMY0DD9Shcj5phQHE9CtejwGJAhetRuB71YEDhehSuR\u002flgQHsUrkfhgmJAuB6F61GwYkAfhetRuFZhQKRwPQrX42BAcT0K16NQYUAK16NwPUpiQK5H4XoU1mBA16NwPQqPYkApXI\u002fC9aBhQOF6FK5HCWJAexSuR+FSYUCamZmZmSFhQK5H4XoUjmBASOF6FK5PYkApXI\u002fC9ZhjQOF6FK5HAWFAzczMzMzcZUAUrkfheqxgQK5H4XoU\u002fmJAzczMzMz8YEDsUbgehfNjQPYoXI\u002fCTWFASOF6FK63ZEDsUbgehWNiQIXrUbgeRWJAuB6F61FwYUCuR+F6FJZhQNejcD0KV2RAexSuR+FqY0BmZmZmZiZiQGZmZmZmRmJA9ihcj8LlYECPwvUoXHdiQOxRuB6FS2FA16NwPQovYUBxPQrXo9BjQGZmZmZmLmRAj8L1KFynYUC4HoXrUehhQArXo3A9kmVAmpmZmZlRYUD2KFyPwmVhQD0K16NwZWNAhetRuB7NZUCF61G4Ht1gQD0K16NwvWJAzczMzMx8Y0ApXI\u002fC9QhjQM3MzMzMjGNAUrgehesRaED2KFyPwiViQFyPwvUonGFAZmZmZmYuYUDsUbgehSNhQPYoXI\u002fC5WpAj8L1KFxnYUCkcD0K18NhQHE9CtejEGVAFK5H4Xp8YkAK16NwPRJiQFK4HoXrGWNAzczMzMwMZkCF61G4Ht1hQFK4HoXrcWFAzczMzMxcYkA="},"yaxis":"y","type":"scatter"},{"customdata":[[6769,2,51,5304,"Anchor (lower SR, high avg)"],[5194,2,34,4158,"Anchor (lower SR, high avg)"],[4954,0,27,3784,"Anchor (lower SR, high avg)"],[4348,1,22,3391,"Anchor (lower SR, high avg)"],[4217,0,36,3394,"Anchor (lower SR, high avg)"],[3951,1,22,3241,"Anchor (lower SR, high avg)"],[3392,0,5,2608,"Anchor (lower SR, high avg)"],[2619,2,13,2148,"Anchor (lower SR, high avg)"],[2495,1,11,1931,"Anchor (lower SR, high avg)"],[2427,0,17,2213,"Anchor (lower SR, high avg)"],[2334,1,13,1941,"Anchor (lower SR, high avg)"],[2174,0,11,1878,"Anchor (lower SR, high avg)"],[2132,0,18,1692,"Anchor (lower SR, high avg)"],[2048,1,14,1564,"Anchor (lower SR, high avg)"],[2029,0,14,1631,"Anchor (lower SR, high avg)"],[1977,1,15,1610,"Anchor (lower SR, high avg)"],[1808,1,10,1462,"Anchor (lower SR, high avg)"],[1695,0,7,1444,"Anchor (lower SR, high avg)"],[1494,0,8,1235,"Anchor (lower SR, high avg)"],[1441,0,11,1208,"Anchor (lower SR, high avg)"],[1400,0,6,1112,"Anchor (lower SR, high avg)"],[1322,0,5,1070,"Anchor (lower SR, high avg)"],[1233,0,7,952,"Anchor (lower SR, high avg)"],[1153,0,9,1001,"Anchor (lower SR, high avg)"],[1079,1,11,848,"Anchor (lower SR, high avg)"],[1000,0,5,785,"Anchor (lower SR, high avg)"],[974,1,5,745,"Anchor (lower SR, high avg)"],[971,0,6,757,"Anchor (lower SR, high avg)"],[886,0,6,805,"Anchor (lower SR, high avg)"],[531,0,3,453,"Anchor (lower SR, high avg)"],[506,0,4,388,"Anchor (lower SR, high avg)"],[394,0,1,307,"Anchor (lower SR, high avg)"],[351,0,2,267,"Anchor (lower SR, high avg)"],[327,0,1,300,"Anchor (lower SR, high avg)"],[302,0,1,243,"Anchor (lower SR, high avg)"]],"hovertemplate":"\u003cb\u003e%{hovertext}\u003c\u002fb\u003e\u003cbr\u003e\u003cbr\u003ebatting average=%{x}\u003cbr\u003estrike rate=%{y}\u003cbr\u003etotal_runs=%{customdata[0]}\u003cbr\u003ehundreds=%{customdata[1]}\u003cbr\u003efifties=%{customdata[2]}\u003cbr\u003eballs_faced=%{customdata[3]}\u003cextra\u003e\u003c\u002fextra\u003e","hovertext":["S Dhawan","AM Rahane","RV Uthappa","AT Rayudu","G Gambhir","MK Pandey","RA Jadeja","M Vijay","SPD Smith","JH Kallis","SR Tendulkar","R Dravid","KS Williamson","D Padikkal","JP Duminy","MEK Hussey","DPMD Jayawardene","MK Tiwary","SS Tiwary","S Badrinath","BJ Hodge","DJ Hussey","V Shankar","TM Dilshan","LMP Simmons","MC Henriques","A Symonds","CL White","HH Gibbs","RS Bopara","OA Shah","MV Boucher","DJ Mitchell","JEC Franklin","LA Pomersbach"],"legendgroup":"Anchor (lower SR, high avg)","marker":{"color":"#7F77DD","size":{"dtype":"i2","bdata":"cRpKFFoT\u002fBB5EG8PQA07Cr8JewkeCX4IVAgACO0HuQcQB58G1gWhBXgFKgXRBIEENwToA84DywN2AxMC+gGKAV8BRwEuAQ=="},"sizemode":"area","sizeref":11.50765306122449,"symbol":"circle","line":{"color":"white","width":0.5}},"mode":"markers","name":"Anchor (lower SR, high avg)","orientation":"v","showlegend":true,"x":{"dtype":"f8","bdata":"KVyPwvWIQUCamZmZmdk9QLgehetRODtAXI\u002fC9SicPEC4HoXrUXg\u002fQD0K16NwfT1ApHA9CtcjO0BI4XoUrkc7QD0K16Nw\u002fT9AhetRuB5FO0CPwvUoXG9AQHsUrkfhOjxAUrgehesRQkCamZmZmZk6QBSuR+F6tERAw\u002fUoXI8CQ0AAAAAAAEA8QAAAAAAAQDxAPQrXo3B9PkCF61G4HgU+QK5H4XoUbj5ACtejcD2KO0DNzMzMzMw6QB+F61G4HjxAexSuR+H6Q0BSuB6F61E6QHsUrkfhukJAPQrXo3C9O0BxPQrXo7A7QDMzMzMz8ztA9ihcj8J1Q0CF61G4HkU6QAAAAAAAADtAexSuR+G6PUAzMzMzM3M7QA=="},"xaxis":"x","y":{"dtype":"f8","bdata":"SOF6FK7nX0B7FK5H4TpfQD0K16NwXWBA16NwPQoHYEAAAAAAABBfQArXo3A9el5AUrgehetBYEDsUbgehXteQB+F61G4JmBAexSuR+FqW0AAAAAAABBeQHE9Ctej8FxAAAAAAACAX0BmZmZmZl5gQJqZmZmZGV9AMzMzMzOzXkB7FK5H4epeQLgehetRWF1ArkfhehQ+XkDD9Shcj9JdQJqZmZmZeV9AMzMzMzPjXkBxPQrXozBgQOxRuB6Fy1xAj8L1KFzPX0ApXI\u002fC9dhfQEjhehSuV2BAcT0K16MIYECkcD0K14NbQK5H4XoUTl1AhetRuB5NYEB7FK5H4QpgQB+F61G4bmBAAAAAAABAW0BSuB6F6xFfQA=="},"yaxis":"y","type":"scatter"},{"customdata":[[2934,1,13,2296,"Developing"],[2848,0,13,2350,"Developing"],[2754,0,13,2115,"Developing"],[2092,0,15,1626,"Developing"],[1792,0,2,1358,"Developing"],[1706,0,6,1385,"Developing"],[1699,0,11,1296,"Developing"],[1687,0,10,1385,"Developing"],[1560,0,5,1196,"Developing"],[1554,0,6,1308,"Developing"],[1497,0,8,1170,"Developing"],[1406,0,5,1147,"Developing"],[1349,0,7,1257,"Developing"],[1208,0,4,969,"Developing"],[1150,0,1,947,"Developing"],[1083,0,3,828,"Developing"],[1017,0,3,818,"Developing"],[985,0,3,832,"Developing"],[880,0,0,682,"Developing"],[833,0,1,704,"Developing"],[798,0,4,700,"Developing"],[795,0,2,635,"Developing"],[739,0,4,664,"Developing"],[724,0,1,573,"Developing"],[676,0,2,573,"Developing"],[672,0,0,573,"Developing"],[668,0,1,521,"Developing"],[663,0,2,541,"Developing"],[624,0,0,561,"Developing"],[560,0,1,462,"Developing"],[538,0,3,421,"Developing"],[514,0,0,470,"Developing"],[511,0,2,422,"Developing"],[505,1,2,414,"Developing"],[503,0,3,385,"Developing"],[460,0,0,394,"Developing"],[423,0,2,337,"Developing"],[409,0,1,358,"Developing"],[405,0,0,350,"Developing"],[401,0,0,354,"Developing"],[390,0,1,390,"Developing"],[388,0,2,303,"Developing"],[381,0,0,417,"Developing"],[375,0,1,315,"Developing"],[368,0,2,289,"Developing"],[365,0,0,288,"Developing"],[352,0,0,295,"Developing"],[342,0,0,284,"Developing"],[340,0,0,312,"Developing"],[339,0,1,272,"Developing"],[339,0,1,256,"Developing"],[318,0,1,267,"Developing"],[310,0,0,274,"Developing"],[305,0,0,285,"Developing"],[304,0,0,260,"Developing"],[300,0,1,299,"Developing"],[295,0,1,241,"Developing"],[293,0,1,293,"Developing"],[292,0,0,236,"Developing"],[285,0,0,259,"Developing"],[284,0,0,319,"Developing"],[282,0,1,266,"Developing"],[282,0,0,219,"Developing"],[280,0,1,250,"Developing"],[273,0,1,238,"Developing"],[270,0,0,230,"Developing"],[259,0,0,249,"Developing"],[250,0,0,232,"Developing"],[244,0,0,203,"Developing"],[237,0,0,206,"Developing"],[218,0,0,231,"Developing"],[217,0,1,209,"Developing"],[210,0,0,255,"Developing"],[208,0,0,201,"Developing"],[198,0,0,213,"Developing"]],"hovertemplate":"\u003cb\u003e%{hovertext}\u003c\u002fb\u003e\u003cbr\u003e\u003cbr\u003ebatting average=%{x}\u003cbr\u003estrike rate=%{y}\u003cbr\u003etotal_runs=%{customdata[0]}\u003cbr\u003ehundreds=%{customdata[1]}\u003cbr\u003efifties=%{customdata[2]}\u003cbr\u003eballs_faced=%{customdata[3]}\u003cextra\u003e\u003c\u002fextra\u003e","hovertext":["WP Saha","PA Patel","Yuvraj Singh","AJ Finch","KH Pandya","Mandeep Singh","KK Nair","KC Sangakkara","DJ Bravo","NV Ojha","DJ Hooda","EJG Morgan","SC Ganguly","KM Jadhav","IK Pathan","M Vohra","LRPL Taylor","Y Venugopal Rao","STR Binny","R Ashwin","MS Bisla","Shakib Al Hasan","GC Smith","AD Mathews","TL Suman","AM Nayar","Washington Sundar","GJ Bailey","PP Chawla","Shahbaz Ahmed","CJ Anderson","M Manhas","Gurkeerat Singh","PC Valthaty","SW Billings","DT Christian","SA Asnodkar","J Botha","LR Shukla","AL Menaria","CA Pujara","Azhar Mahmood","A Mishra","DB Ravi Teja","S Sohal","P Negi","KV Sharma","R Bhatia","P Kumar","AP Tare","SN Thakur","Anuj Rawat","R Vinay Kumar","Lalit Yadav","DB Das","UBT Chand","DJG Sammy","SP Goswami","A Manohar","Y Nagar","GH Vihari","VVS Laxman","JO Holder","B Chipli","PK Garg","R Sathish","M Kaif","K Rabada","Harpreet Brar","MD Mishra","K Goel","AA Jhunjhunwala","Kuldeep Yadav","UT Yadav","SK Warne"],"legendgroup":"Developing","marker":{"color":"#D3D1C7","size":{"dtype":"i2","bdata":"dgsgC8IKLAgAB6oGowaXBhgGEgbZBX4FRQW4BH4EOwT5A9kDcANBAx4DGwPjAtQCpAKgApwClwJwAjACGgICAv8B+QH3AcwBpwGZAZUBkQGGAYQBfQF3AXABbQFgAVYBVAFTAVMBPgE2ATEBMAEsAScBJQEkAR0BHAEaARoBGAERAQ4BAwH6APQA7QDaANkA0gDQAMYA"},"sizemode":"area","sizeref":11.50765306122449,"symbol":"circle","line":{"color":"white","width":0.5}},"mode":"markers","name":"Developing","orientation":"v","showlegend":true,"x":{"dtype":"f8","bdata":"XI\u002fC9SjcOECuR+F6FG42QIXrUbgeRTlAZmZmZmbmOECamZmZmdk1QI\u002fC9ShcTzRAhetRuB5FN0AzMzMzM3M4QFyPwvUonDZAAAAAAAAANUB7FK5H4XoyQM3MzMzMDDdAexSuR+H6OEAfhetRuF42QB+F61G4HjZAj8L1KFyPNkDNzMzMzMw4QDMzMzMzczdAAAAAAAAANEDhehSuR+EqQFK4HoXrkTVA4XoUrkdhNEDhehSuR6E4QJqZmZmZWTdASOF6FK6HNkB7FK5H4ToxQM3MzMzMDDJAXI\u002fC9SjcNkBmZmZmZuYlQOxRuB6FqzJAMzMzMzNzOEDsUbgehWs1QK5H4XoU7jJAMzMzMzPzNkCamZmZmVkzQK5H4XoUbjBAw\u002fUoXI9CNkDXo3A9CpcyQHE9Ctej8CtAexSuR+E6MkDsUbgehas1QOxRuB6FazRAZmZmZmZmKUAAAAAAAMAyQHE9CtejcDRAFK5H4XoULEApXI\u002fC9SgsQBSuR+F6lCdAAAAAAAAAJEA9CtejcD0sQLgehetROChA9ihcj8K1NkDXo3A9CtcnQBSuR+F6VDRAFK5H4XpUOUAAAAAAAAAuQOxRuB6FqzNAzczMzMxMLUA9CtejcL0uQAAAAAAAADNAZmZmZmZmLEAfhetRuJ4xQFyPwvUo3CpAAAAAAACAMUA9CtejcL0sQOF6FK5H4TBAcT0K16MwMEBSuB6F61EqQIXrUbgexTJAmpmZmZmZL0CF61G4HsUwQAAAAAAAAC9AAAAAAAAALEDNzMzMzMwkQNejcD0K1yRA"},"xaxis":"x","y":{"dtype":"f8","bdata":"w\u002fUoXI\u002fyX0Bcj8L1KExeQB+F61G4RmBAhetRuB4VYEAfhetRuH5gQOxRuB6Fy15AMzMzMzNjYECkcD0K13NeQPYoXI\u002fCTWBApHA9CtezXUDNzMzMzPxfQIXrUbgepV5AFK5H4XrUWkAK16NwPSpfQFyPwvUoXF5AmpmZmZlZYECF61G4HhVfQClcj8L1mF1AKVyPwvUgYEAUrkfhepRdQAAAAAAAgFxAzczMzMxMX0AzMzMzM9NbQGZmZmZmll9AH4XrUbh+XUBSuB6F61FdQB+F61G4BmBAMzMzMzOjXkAfhetRuM5bQD0K16NwTV5Aw\u002fUoXI\u002fyX0DXo3A9CldbQPYoXI\u002fCRV5AH4XrUbh+XkDNzMzMzFRgQAAAAAAAMF1A4XoUrkdhX0AAAAAAAJBcQD0K16Nw7VxAUrgehetRXEAAAAAAAABZQJqZmZmZAWBASOF6FK7XVkAzMzMzM8NdQPYoXI\u002fC1V9Aj8L1KFyvX0AUrkfhetRdQHsUrkfhGl5ArkfhehQ+W0C4HoXrUShfQD0K16NwjWBAZmZmZmbGXUApXI\u002fC9UhcQOF6FK5HwVpAexSuR+E6XUCF61G4HhVZQArXo3A9ml5AAAAAAAAAWUAfhetRuO5eQMP1KFyPgltAUrgehetBVkDhehSuR4FaQHE9CtejGGBAAAAAAAAAXEA9CtejcK1cQClcj8L1WF1A4XoUrkcBWkBxPQrXo\u002fBaQM3MzMzMDF5AMzMzMzPDXEBI4XoUrpdXQIXrUbge9VlAZmZmZmaWVEAfhetRuN5ZQD0K16NwPVdA"},"yaxis":"y","type":"scatter"},{"customdata":[[2820,0,18,1815,"Aggresive (high SR, lower avg)"],[2764,1,13,2055,"Aggresive (high SR, lower avg)"],[1947,0,3,1462,"Aggresive (high SR, lower avg)"],[1892,0,14,1280,"Aggresive (high SR, lower avg)"],[1820,1,7,1118,"Aggresive (high SR, lower avg)"],[1687,0,7,1209,"Aggresive (high SR, lower avg)"],[1167,0,6,834,"Aggresive (high SR, lower avg)"],[1161,0,1,857,"Aggresive (high SR, lower avg)"],[1135,0,7,832,"Aggresive (high SR, lower avg)"],[1053,0,1,690,"Aggresive (high SR, lower avg)"],[997,0,6,731,"Aggresive (high SR, lower avg)"],[975,0,3,683,"Aggresive (high SR, lower avg)"],[935,2,2,695,"Aggresive (high SR, lower avg)"],[833,0,1,599,"Aggresive (high SR, lower avg)"],[815,0,0,558,"Aggresive (high SR, lower avg)"],[784,0,4,566,"Aggresive (high SR, lower avg)"],[767,0,2,521,"Aggresive (high SR, lower avg)"],[746,0,2,544,"Aggresive (high SR, lower avg)"],[691,0,3,479,"Aggresive (high SR, lower avg)"],[618,0,2,397,"Aggresive (high SR, lower avg)"],[613,0,1,389,"Aggresive (high SR, lower avg)"],[612,0,3,400,"Aggresive (high SR, lower avg)"],[604,0,4,455,"Aggresive (high SR, lower avg)"],[527,0,0,385,"Aggresive (high SR, lower avg)"],[527,0,1,372,"Aggresive (high SR, lower avg)"],[500,0,1,368,"Aggresive (high SR, lower avg)"],[486,0,1,347,"Aggresive (high SR, lower avg)"],[473,0,2,306,"Aggresive (high SR, lower avg)"],[426,0,2,270,"Aggresive (high SR, lower avg)"],[424,0,0,306,"Aggresive (high SR, lower avg)"],[417,0,4,305,"Aggresive (high SR, lower avg)"],[363,0,2,270,"Aggresive (high SR, lower avg)"],[326,0,1,235,"Aggresive (high SR, lower avg)"],[303,0,0,224,"Aggresive (high SR, lower avg)"],[299,0,0,206,"Aggresive (high SR, lower avg)"]],"hovertemplate":"\u003cb\u003e%{hovertext}\u003c\u002fb\u003e\u003cbr\u003e\u003cbr\u003ebatting average=%{x}\u003cbr\u003estrike rate=%{y}\u003cbr\u003etotal_runs=%{customdata[0]}\u003cbr\u003ehundreds=%{customdata[1]}\u003cbr\u003efifties=%{customdata[2]}\u003cbr\u003eballs_faced=%{customdata[3]}\u003cextra\u003e\u003c\u002fextra\u003e","hovertext":["GJ Maxwell","MA Agarwal","AR Patel","PP Shaw","SP Narine","R Parag","MM Ali","R Tewatia","A Badoni","JM Sharma","SM Curran","JA Morkel","BA Stokes","Harbhajan Singh","Abdul Samad","N Wadhera","M Shahrukh Khan","SN Khan","Abishek Porel","CH Morris","Rashid Khan","PJ Cummins","JD Ryder","JP Faulkner","MK Lomror","SE Rutherford","R Powell","RR Rossouw","Ashutosh Sharma","NLTC Perera","JR Hopes","Rahmanullah Gurbaz","RN ten Doeschate","C de Grandhomme","Ramandeep Singh"],"legendgroup":"Aggresive (high SR, lower avg)","marker":{"color":"#1D9E75","size":{"dtype":"i2","bdata":"BAvMCpsHZAccB5cGjwSJBG8EHQTlA88DpwNBAy8DEAP\u002fAuoCswJqAmUCZAJcAg8CDwL0AeYB2QGqAagBoQFrAUYBLwErAQ=="},"sizemode":"area","sizeref":11.50765306122449,"symbol":"circle","line":{"color":"white","width":0.5}},"mode":"markers","name":"Aggresive (high SR, lower avg)","orientation":"v","showlegend":true,"x":{"dtype":"f8","bdata":"mpmZmZkZOEDsUbgehWs3QPYoXI\u002fCtTRAUrgeheuROEBSuB6F65EyQI\u002fC9ShczzhA16NwPQpXN0DD9Shcj8I2QM3MzMzMzDlAZmZmZmZmN0BSuB6F61E4QOF6FK5HYThAzczMzMzMNkDD9Shcj8ItQLgehetRuDFACtejcD1KOUC4HoXrUfg3QLgehetRuDRAFK5H4XrUN0CPwvUoXE81QD0K16NwPStAzczMzMyMMkAUrkfhetQ0QFK4HoXr0TJA7FG4HoUrMkB7FK5H4bo2QAAAAAAAQDRAhetRuB6FNkCPwvUoXA85QOxRuB6FqzFASOF6FK6HOECamZmZmVk1QK5H4XoULjNAMzMzMzMzNEBxPQrXo7AyQA=="},"xaxis":"x","y":{"dtype":"f8","bdata":"pHA9CtdrY0AAAAAAANBgQD0K16NwpWBAUrgehet5YkDhehSuR1lkQOF6FK5HcWFA9ihcj8J9YUDXo3A9Cu9gQD0K16NwDWFA7FG4HoUTY0AUrkfhegxhQAAAAAAA2GFAKVyPwvXQYEAK16NwPWJhQFK4HoXrQWJAcT0K16NQYUDXo3A9CmdiQFyPwvUoJGFAuB6F61EIYkA9CtejcHVjQMP1KFyPsmNAAAAAAAAgY0AAAAAAAJhgQFyPwvUoHGFAPQrXo3C1YUCkcD0K1\u002ftgQFK4HoXrgWFAw\u002fUoXI9SY0ApXI\u002fC9bhjQFK4HoXrUWFA16NwPQoXYUCuR+F6FM5gQNejcD0KV2FAcT0K16PoYEDNzMzMzCRiQA=="},"yaxis":"y","type":"scatter"}], {"template":{"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]},"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"bgcolor":"#E5ECF6","angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"ternary":{"bgcolor":"#E5ECF6","aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"#E5ECF6","subunitcolor":"white","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}}},"xaxis":{"anchor":"y","domain":[0.0,1.0],"title":{"text":"batting average"}},"yaxis":{"anchor":"x","domain":[0.0,1.0],"title":{"text":"strike rate"}},"legend":{"title":{"text":"player type"},"tracegroupgap":0,"itemsizing":"constant"},"title":{"text":"Batting average vs strike rate - top IPL batsman (200+ balls faced)."},"height":520,"shapes":[{"line":{"color":"#B4B2A9","dash":"dot"},"type":"line","x0":0,"x1":1,"xref":"x domain","y0":132.44,"y1":132.44,"yref":"y"},{"line":{"color":"#B4B2A9","dash":"dot"},"type":"line","x0":25.81,"x1":25.81,"xref":"x","y0":0,"y1":1,"yref":"y domain"}],"annotations":[{"showarrow":false,"text":"median SR 132","x":1,"xanchor":"left","xref":"x domain","y":132.44,"yanchor":"middle","yref":"y"},{"showarrow":false,"text":"median avg 132","x":25.81,"xanchor":"center","xref":"x","y":1,"yanchor":"bottom","yref":"y domain"}],"font":{"family":"Arial"},"plot_bgcolor":"white","paper_bgcolor":"white"}, {"responsive": true} ) }; </script> </div>
6
+ </body>
7
+ </html>
data/processed/charts/05_bowling_phase.html ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <html>
2
+ <head><meta charset="utf-8" /></head>
3
+ <body>
4
+ <div> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
5
+ <script charset="utf-8" src="https://cdn.plot.ly/plotly-3.5.0.min.js" integrity="sha256-fHbNLP+GlIXN+efbQec78UkemUz3NJp7UmfGxC1tNxs=" crossorigin="anonymous"></script> <div id="b2eaffec-1989-4556-a1ba-a76ef5393bd7" class="plotly-graph-div" style="height:540px; width:100%;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("b2eaffec-1989-4556-a1ba-a76ef5393bd7")) { Plotly.newPlot( "b2eaffec-1989-4556-a1ba-a76ef5393bd7", [{"hovertemplate":"phase=powerplay\u003cbr\u003eeconomy_rate=%{x}\u003cbr\u003e=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"powerplay","marker":{"color":"#7F77DD","pattern":{"shape":""}},"name":"powerplay","orientation":"h","showlegend":true,"textposition":"auto","x":{"dtype":"f8","bdata":"w\u002fUoXI\u002fCEkCF61G4HoUUQClcj8L1KBVAuB6F61G4FUAAAAAAAAAWQOxRuB6F6xZAKVyPwvUoF0BxPQrXo3AXQK5H4XoUrhdA4XoUrkfhF0AAAAAAAAAYQFyPwvUoXBhA"},"xaxis":"x","y":["FH Edwards","AG Murtaza","SMSM Senanayake","A Kumble","MM Ali","T Thushara","A Chandila","Ankit Sharma","DL Vettori","GD McGrath","HF Gurney","SB Styris"],"yaxis":"y","type":"bar"},{"hovertemplate":"phase=middle\u003cbr\u003eeconomy_rate=%{x}\u003cbr\u003e=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"middle","marker":{"color":"#1D9E75","pattern":{"shape":""}},"name":"middle","orientation":"h","showlegend":true,"textposition":"auto","x":{"dtype":"f8","bdata":"ZmZmZmZmGEA9CtejcD0ZQEjhehSuRxlAZmZmZmZmGUDhehSuR+EZQClcj8L1KBpAexSuR+F6GkC4HoXrUbgaQMP1KFyPwhpA4XoUrkfhGkApXI\u002fC9SgbQEjhehSuRxtA"},"xaxis":"x2","y":["WA Mota","RE van der Merwe","J Yadav","MF Maharoof","AD Mascarenhas","J Botha","CRD Fernando","IS Sodhi","SP Narine","DW Steyn","DL Vettori","JJ Bumrah"],"yaxis":"y2","type":"bar"},{"hovertemplate":"phase=death\u003cbr\u003eeconomy_rate=%{x}\u003cbr\u003e=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"death","marker":{"color":"#D85A30","pattern":{"shape":""}},"name":"death","orientation":"h","showlegend":true,"textposition":"auto","x":{"dtype":"f8","bdata":"hetRuB6FG0CkcD0K16MeQM3MzMzMzB5ArkfhehSuH0DXo3A9CtcfQJqZmZmZGSBA4XoUrkdhIECkcD0K16MgQKRwPQrXoyBAw\u002fUoXI\u002fCIEDNzMzMzMwgQHE9Ctej8CBA"},"xaxis":"x3","y":["Sohail Tanvir","DE Bollinger","A Kamboj","M Ashwin","SP Narine","Suyash Sharma","SL Malinga","M Kartik","PWH de Silva","A Kumble","GB Hogg","JJ Bumrah"],"yaxis":"y3","type":"bar"}], {"template":{"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]},"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"bgcolor":"#E5ECF6","angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"ternary":{"bgcolor":"#E5ECF6","aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"#E5ECF6","subunitcolor":"white","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}}},"xaxis":{"anchor":"y","domain":[0.0,0.31999999999999995],"title":{"text":"economy_rate"},"showticklabels":true},"yaxis":{"anchor":"x","domain":[0.0,1.0],"title":{"text":""},"showticklabels":true,"categoryorder":"total ascending","ticksuffix":" "},"xaxis2":{"anchor":"y2","domain":[0.33999999999999997,0.6599999999999999],"matches":"x","title":{"text":"economy_rate"},"showticklabels":true},"yaxis2":{"anchor":"x2","domain":[0.0,1.0],"showticklabels":true,"categoryorder":"total ascending","ticksuffix":" "},"xaxis3":{"anchor":"y3","domain":[0.6799999999999999,0.9999999999999999],"matches":"x","title":{"text":"economy_rate"},"showticklabels":true},"yaxis3":{"anchor":"x3","domain":[0.0,1.0],"showticklabels":true,"categoryorder":"total ascending","ticksuffix":" "},"annotations":[{"font":{},"showarrow":false,"text":"powerplay","x":0.15999999999999998,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"},{"font":{},"showarrow":false,"text":"middle","x":0.49999999999999994,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"},{"font":{},"showarrow":false,"text":"death","x":0.8399999999999999,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"}],"legend":{"title":{"text":"phase"},"tracegroupgap":0},"title":{"text":"Most economical bowlers by match phase (min 60 legal deliveries)"},"barmode":"relative","height":540,"font":{"family":"Arial"},"margin":{"l":160,"r":20,"t":80,"b":50},"plot_bgcolor":"white","paper_bgcolor":"white","showlegend":false}, {"responsive": true} ) }; </script> </div>
6
+ </body>
7
+ </html>
data/processed/charts/06_head_to_head.html ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <html>
2
+ <head><meta charset="utf-8" /></head>
3
+ <body>
4
+ <div> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
5
+ <script charset="utf-8" src="https://cdn.plot.ly/plotly-3.5.0.min.js" integrity="sha256-fHbNLP+GlIXN+efbQec78UkemUz3NJp7UmfGxC1tNxs=" crossorigin="anonymous"></script> <div id="5a5bc1de-ab9d-471b-be96-0be76c1a46f9" class="plotly-graph-div" style="height:480px; width:100%;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("5a5bc1de-ab9d-471b-be96-0be76c1a46f9")) { Plotly.newPlot( "5a5bc1de-ab9d-471b-be96-0be76c1a46f9", [{"colorbar":{"ticksuffix":"%","title":{"text":"win %"}},"colorscale":[[0.0,"#FCEBEB"],[0.35,"#F09595"],[0.5,"#F1EFE8"],[0.65,"#9FE1CB"],[1.0,"#085041"]],"text":[["-","52%","54%","69%","60%","55%","49%","52%"],["48%","-","60%","66%","64%","62%","48%","50%"],["46%","40%","-","43%","46%","62%","51%","53%"],["31%","34%","57%","-","68%","56%","62%","55%"],["40%","36%","54%","32%","-","49%","57%","50%"],["45%","38%","38%","44%","51%","-","49%","48%"],["51%","52%","49%","38%","43%","51%","-","42%"],["48%","50%","47%","45%","50%","52%","58%","-"]],"textfont":{"size":12},"texttemplate":"%{text}","x":["MI","CSK","RCB","KKR","SRH","DC","PBKS","RR"],"y":["MI","CSK","RCB","KKR","SRH","DC","PBKS","RR"],"z":{"dtype":"f8","bdata":"AAAAAAAAAAAAAAAAAEBKQGZmZmZmJktAmpmZmZlZUUAAAAAAAABOQGZmZmZmpktAzczMzMxMSEDNzMzMzMxJQAAAAAAAwEdAAAAAAAAAAAAAAAAAAABOQGZmZmZmZlBAzczMzMzMT0AAAAAAAEBPQAAAAAAAQEhAAAAAAAAASUCamZmZmdlGQAAAAAAAAERAAAAAAAAAAAAzMzMzM3NFQDMzMzMz80ZAZmZmZmbmTkAzMzMzM7NJQM3MzMzMjEpAmpmZmZmZPkAzMzMzMzNBQM3MzMzMjExAAAAAAAAAAAAAAAAAAOBQQDMzMzMz80tAZmZmZmbmTkBmZmZmZmZLQAAAAAAAAERAMzMzMzMzQkDNzMzMzAxLQAAAAAAAQEBAAAAAAAAAAADNzMzMzExIQM3MzMzMjExAAAAAAAAASUCamZmZmVlGQAAAAAAAwEJAmpmZmZkZQ0DNzMzMzAxGQDMzMzMzs0lAAAAAAAAAAADNzMzMzExIQGZmZmZmJkhAMzMzMzOzSUAAAAAAAMBJQM3MzMzMTEhAmpmZmZkZQ0AzMzMzM3NFQDMzMzMzs0lAAAAAAAAAAAAzMzMzM\u002fNEQDMzMzMzM0hAAAAAAAAASUAzMzMzM3NHQJqZmZmZmUZAAAAAAAAASUCamZmZmdlJQM3MzMzMDE1AAAAAAAAAAAA=","shape":"8, 8"},"zmax":100,"zmin":0,"type":"heatmap"}], {"template":{"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]},"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"bgcolor":"#E5ECF6","angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"ternary":{"bgcolor":"#E5ECF6","aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"#E5ECF6","subunitcolor":"white","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}}},"font":{"family":"Arial"},"xaxis":{"side":"top"},"margin":{"t":120},"title":{"text":"Head-to-head win % matrix - top 8 IPL franchises"},"height":480,"plot_bgcolor":"white","paper_bgcolor":"white"}, {"responsive": true} ) }; </script> </div>
6
+ </body>
7
+ </html>
data/processed/charts/07_runs_per_over.html ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <html>
2
+ <head><meta charset="utf-8" /></head>
3
+ <body>
4
+ <div> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
5
+ <script charset="utf-8" src="https://cdn.plot.ly/plotly-3.5.0.min.js" integrity="sha256-fHbNLP+GlIXN+efbQec78UkemUz3NJp7UmfGxC1tNxs=" crossorigin="anonymous"></script> <div id="6b9e99b4-c6f1-4f87-8a72-c05ab9a197cd" class="plotly-graph-div" style="height:420px; width:100%;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("6b9e99b4-c6f1-4f87-8a72-c05ab9a197cd")) { Plotly.newPlot( "6b9e99b4-c6f1-4f87-8a72-c05ab9a197cd", [{"hovertemplate":"over %{x}: %{y:.2f} runs\u003cextra\u003e\u003c\u002fextra\u003e","marker":{"color":"#B5D4F4"},"name":"avg runs\u002fover","x":{"dtype":"i1","bdata":"AAECAwQFBgcICQoLDA0ODxAREhMU"},"y":{"dtype":"f8","bdata":"XI\u002fC9Shc7z\u002fhehSuR+HyP0jhehSuR\u002fU\u002fFK5H4XoU9j9mZmZmZmb2Pz0K16NwPfY\u002fZmZmZmZm8j9cj8L1KFzzPylcj8L1KPQ\u002f16NwPQrX8z97FK5H4Xr0P\u002fYoXI\u002fC9fQ\u002fH4XrUbge9T\u002fD9Shcj8L1P4\u002fC9Shcj\u002fY\u002fCtejcD0K9z8pXI\u002fC9Sj4P0jhehSuR\u002fk\u002fj8L1KFyP+j9SuB6F61H8P7gehetRuP4\u002f"},"type":"bar"},{"line":{"color":"#185FA5","width":2.5},"mode":"lines","name":"smoothed trend","x":{"dtype":"i1","bdata":"AAECAwQFBgcICQoLDA0ODxAREhMU"},"y":{"dtype":"f8","bdata":"AAAAAAAA+H9I4XoUrkfxPwAAAAAAAPQ\u002fw\u002fUoXI\u002fC9T89CtejcD32P2ZmZmZmZvY\u002fUrgehetR9D\u002fhehSuR+HyP65H4XoUrvM\u002fAAAAAAAA9D8pXI\u002fC9Sj0P83MzMzMzPQ\u002fH4XrUbge9T9xPQrXo3D1PxSuR+F6FPY\u002fuB6F61G49j+uR+F6FK73P6RwPQrXo\u002fg\u002f7FG4HoXr+T+F61G4HoX7P3E9CtejcP0\u002f"},"type":"scatter"}], {"template":{"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]},"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"bgcolor":"#E5ECF6","angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"ternary":{"bgcolor":"#E5ECF6","aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"#E5ECF6","subunitcolor":"white","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}}},"annotations":[{"font":{"color":"#444441","size":11},"showarrow":false,"text":"powerplay","x":3.5,"y":2.016},{"font":{"color":"#444441","size":11},"showarrow":false,"text":"middle","x":11,"y":2.016},{"font":{"color":"#444441","size":11},"showarrow":false,"text":"death","x":18,"y":2.016}],"xaxis":{"title":{"text":"over"},"tickmode":"linear","dtick":1},"font":{"family":"Ariel"},"legend":{"orientation":"h","y":0.2},"title":{"text":"Average runs per over - all IPL season combined"},"shapes":[{"fillcolor":"#EEEDFE","layer":"below","opacity":0.3,"type":"rect","x0":0.5,"x1":6.5,"xref":"x","y0":0,"y1":1,"yref":"paper","line":{"width":0}},{"fillcolor":"#E1F5EE","layer":"below","opacity":0.3,"type":"rect","x0":6.5,"x1":15.5,"xref":"x","y0":0,"y1":1,"yref":"paper","line":{"width":0}},{"fillcolor":"#FAECE7","layer":"below","opacity":0.3,"type":"rect","x0":15.5,"x1":20.5,"xref":"x","y0":0,"y1":1,"yref":"paper","line":{"width":0}}],"yaxis":{"title":{"text":"avg runs per over"}},"height":420,"plot_bgcolor":"white","paper_bgcolor":"white"}, {"responsive": true} ) }; </script> </div>
6
+ </body>
7
+ </html>
data/processed/charts/08_dismissal_types.html ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <html>
2
+ <head><meta charset="utf-8" /></head>
3
+ <body>
4
+ <div> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
5
+ <script charset="utf-8" src="https://cdn.plot.ly/plotly-3.5.0.min.js" integrity="sha256-fHbNLP+GlIXN+efbQec78UkemUz3NJp7UmfGxC1tNxs=" crossorigin="anonymous"></script> <div id="e13689cd-100f-408f-b052-cc02fc9da30e" class="plotly-graph-div" style="height:420px; width:100%;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("e13689cd-100f-408f-b052-cc02fc9da30e")) { Plotly.newPlot( "e13689cd-100f-408f-b052-cc02fc9da30e", [{"hole":0.45,"labels":["caught","bowled","run out","lbw","caught and bowled","stumped","retired hurt","hit wicket","retired out","obstructing the field"],"marker":{"colors":["#7F77DD","#1D9E75","#D85A30","#378ADD","#639922","#BA7517","#D4537E","#888780"]},"showlegend":false,"textfont":{"size":11},"textinfo":"label+percent","values":{"dtype":"i2","bdata":"RiNjCZcEZwOOAX4BEwASAAYABAA="},"type":"pie","domain":{"x":[0.0,0.45],"y":[0.0,1.0]}},{"hovertemplate":"%{x}: %{y} dismissals\u003cextra\u003e\u003c\u002fextra\u003e","marker":{"color":["#7F77DD","#1D9E75","#D85A30","#378ADD","#639922","#BA7517","#D4537E","#888780"]},"showlegend":false,"x":["caught","bowled","run out","lbw","caught and bowled","stumped","retired hurt","hit wicket","retired out","obstructing the field"],"y":{"dtype":"i2","bdata":"RiNjCZcEZwOOAX4BEwASAAYABAA="},"type":"bar","xaxis":"x","yaxis":"y"}], {"template":{"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]},"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"bgcolor":"#E5ECF6","angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"ternary":{"bgcolor":"#E5ECF6","aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"#E5ECF6","subunitcolor":"white","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}}},"xaxis":{"anchor":"y","domain":[0.55,1.0],"tickangle":-30},"yaxis":{"anchor":"x","domain":[0.0,1.0]},"annotations":[{"font":{"size":16},"showarrow":false,"text":"Share of each dismissal type","x":0.225,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"},{"font":{"size":16},"showarrow":false,"text":"Count by dismissal type","x":0.775,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"}],"font":{"family":"Ariel"},"title":{"text":"How do batsmen get out in the IPL?"},"height":420,"plot_bgcolor":"white","paper_bgcolor":"white"}, {"responsive": true} ) }; </script> </div>
6
+ </body>
7
+ </html>
data/processed/deliveries_clean.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:867816cb5b1bee3875db436236fc419a59c70a3434de9280a64cac092e492d3a
3
+ size 37423360
data/processed/ipl.db ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b17d6b6e626369696c6d0317784ac95a278f92f838d6d5a777f10866de5bf11a
3
+ size 36839424
data/processed/match_summary.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/matches_clean.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/models/auction_features.json ADDED
@@ -0,0 +1 @@
 
 
1
+ ["total_runs", "batting_average", "strike_rate", "hundreds", "fifties", "boundary_rate", "sr_powerplay", "sr_death", "dot_ball_pct_bat", "wickets", "economy_rate", "bowling_average", "bowling_sr", "dot_ball_pct_bowl", "economy_death", "economy_powerplay", "three_wicket_haul", "matches_batted", "matches_bowled", "role"]
data/processed/models/auction_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:30b13810206b5246486d91aaadcc2b97bbb8fa57798d8c8e73ff82590c95fedc
3
+ size 671081
data/processed/models/player_valuations.csv ADDED
@@ -0,0 +1,629 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ total_runs,batting_average,strike_rate,hundreds,fifties,boundary_rate,sr_powerplay,sr_death,dot_ball_pct_bat,wickets,economy_rate,bowling_average,bowling_sr,dot_ball_pct_bowl,economy_death,economy_powerplay,three_wicket_haul,matches_batted,matches_bowled,role,auction_price_cr,player,predicted_price_cr
2
+ 280.0,18.67,145.08,0.0,0.0,16.06,83.33,151.18,30.05,19.0,9.16,21.05,13.79,31.68,10.39,15.0,1.0,23.0,20.0,0,6.87,A Ashish Reddy,6.97
3
+ 1135.0,25.8,136.42,0.0,7.0,16.23,96.88,170.73,33.05,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,54.0,0.0,1,5.25,A Badoni,5.13
4
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,11.0,6.28,22.27,21.27,44.87,6.0,5.79,1.0,0.0,12.0,0,4.61,A Chandila,4.23
5
+ 53.0,10.6,74.65,0.0,0.0,9.86,67.44,120.0,57.75,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,6.0,0.0,0,3.01,A Chopra,2.72
6
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,5.0,8.55,28.8,20.2,41.58,10.0,6.0,0.0,0.0,5.0,0,2.17,A Choudhary,2.38
7
+ 62.0,31.0,116.98,0.0,0.0,13.21,107.14,169.23,37.74,2.0,9.64,53.0,33.0,31.82,17.33,7.67,0.0,3.0,3.0,0,3.98,A Flintoff,4.06
8
+ 55.0,27.5,117.02,0.0,0.0,12.77,110.0,117.78,36.17,24.0,8.69,21.96,15.17,43.96,7.7,8.94,3.0,9.0,19.0,2,8.3,A Kamboj,8.21
9
+ 35.0,17.5,74.47,0.0,0.0,6.38,110.0,74.36,46.81,49.0,6.77,22.22,19.69,41.14,8.38,5.43,5.0,15.0,42.0,2,9.86,A Kumble,9.85
10
+ 292.0,15.37,123.73,0.0,0.0,15.68,66.67,166.23,38.98,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,20.0,0.0,0,3.52,A Manohar,3.58
11
+ 441.0,36.75,176.4,0.0,3.0,29.6,179.74,90.0,35.6,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,13.0,0.0,0,5.53,A Mhatre,5.36
12
+ 381.0,12.7,91.37,0.0,0.0,8.63,83.33,113.4,42.45,183.0,7.46,22.91,18.42,36.19,9.85,6.88,20.0,55.0,162.0,2,24.4,A Mishra,24.82
13
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,8.0,9.94,59.62,36.0,32.99,11.92,9.06,0.0,0.0,16.0,0,1.36,A Mithun,1.57
14
+ 41.0,5.12,68.33,0.0,0.0,6.67,110.0,63.16,60.0,121.0,7.98,20.97,15.77,43.4,9.06,7.57,18.0,17.0,88.0,2,18.01,A Nehra,17.93
15
+ 49.0,8.17,98.0,0.0,0.0,12.0,110.0,104.55,48.0,63.0,9.27,27.62,17.87,40.76,10.6,8.58,5.0,14.0,49.0,2,9.34,A Nortje,9.51
16
+ 672.0,29.22,140.88,0.0,4.0,19.5,140.88,144.44,33.54,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,26.0,0.0,1,4.21,A Raghuvanshi,4.86
17
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,31.0,8.11,20.61,15.26,42.28,10.31,7.0,3.0,0.0,23.0,2,5.15,A Singh,5.41
18
+ 974.0,37.46,130.74,1.0,5.0,15.44,104.58,168.31,36.64,23.0,7.9,30.17,22.91,39.09,11.77,6.19,1.0,36.0,30.0,3,8.81,A Symonds,8.82
19
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,32.0,8.39,20.5,14.66,30.92,13.52,7.14,3.0,0.0,22.0,2,5.09,A Zampa,5.15
20
+ 69.0,13.8,82.14,0.0,0.0,5.95,71.05,125.93,46.43,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,7.0,0.0,0,2.09,AA Bilakhia,2.34
21
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,8.0,8.2,42.38,31.0,44.35,16.5,7.39,0.0,0.0,13.0,0,1.65,AA Chavan,1.98
22
+ 217.0,15.5,103.83,0.0,1.0,11.48,59.62,139.47,42.58,1.0,9.18,130.0,85.0,32.94,12.0,8.17,0.0,15.0,10.0,0,4.14,AA Jhunjhunwala,3.8
23
+ 179.0,22.38,118.54,0.0,0.0,11.92,153.85,137.97,35.1,33.0,9.01,35.58,23.7,34.91,10.1,8.88,3.0,18.0,42.0,2,7.7,AB Agarkar,7.8
24
+ 42.0,21.0,100.0,0.0,0.0,14.29,111.11,40.0,50.0,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,3.0,0.0,0,3.06,AB Barath,3.21
25
+ 26.0,2.89,54.17,0.0,0.0,4.17,110.0,48.65,60.42,82.0,8.32,25.65,18.49,42.74,11.3,7.4,9.0,16.0,75.0,2,11.19,AB Dinda,11.18
26
+ 123.0,24.6,123.0,0.0,0.0,13.0,157.89,125.81,35.0,14.0,8.48,18.79,13.29,27.96,10.2,8.8,2.0,9.0,10.0,0,5.91,AB McDonald,6.23
27
+ 5181.0,41.45,152.38,3.0,40.0,19.62,118.41,235.26,30.56,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,170.0,0.0,1,12.99,AB de Villiers,13.41
28
+ 120.0,17.14,133.33,0.0,1.0,25.56,129.41,120.0,52.22,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,7.0,0.0,0,3.59,AC Blizzard,3.98
29
+ 2069.0,27.22,139.51,2.0,11.0,22.32,133.79,208.0,45.38,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,80.0,0.0,1,7.57,AC Gilchrist,7.45
30
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,16.0,7.92,26.0,19.69,42.22,10.12,6.53,1.0,0.0,15.0,0,3.4,AC Thomas,3.44
31
+ 181.0,30.17,126.57,0.0,0.0,12.59,84.62,150.0,30.77,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,7.0,0.0,0,3.72,AC Voges,4.0
32
+ 148.0,24.67,126.5,0.0,0.0,16.24,135.23,120.0,40.17,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,6.0,0.0,0,3.44,AD Hales,3.68
33
+ 79.0,7.9,101.28,0.0,0.0,7.69,200.0,110.34,35.9,19.0,7.11,19.21,16.21,42.21,10.29,7.22,2.0,11.0,13.0,0,6.88,AD Mascarenhas,5.48
34
+ 724.0,23.35,126.35,0.0,1.0,12.74,68.75,154.07,31.94,28.0,8.31,39.11,28.25,29.96,8.88,8.43,2.0,41.0,44.0,3,8.51,AD Mathews,8.13
35
+ 90.0,9.0,91.84,0.0,0.0,9.18,76.47,88.89,44.9,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,10.0,0.0,0,2.05,AD Nath,2.52
36
+ 2655.0,28.86,174.9,0.0,12.0,27.01,215.38,204.71,40.05,133.0,9.64,21.87,13.62,35.78,11.14,8.48,14.0,114.0,121.0,3,23.8,AD Russell,23.91
37
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,9.0,9.83,37.67,23.0,37.2,9.88,9.89,2.0,0.0,10.0,0,2.08,AF Milne,2.14
38
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,12.0,7.32,26.83,22.0,40.15,15.5,5.13,3.0,0.0,12.0,0,3.57,AG Murtaza,3.49
39
+ 49.0,9.8,89.09,0.0,0.0,16.36,89.09,120.0,65.45,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,2.04,AG Paunikar,2.53
40
+ 2092.0,24.9,128.66,0.0,15.0,17.96,116.13,162.4,42.0,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,90.0,0.0,1,5.99,AJ Finch,6.16
41
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,8.33,21.43,15.43,37.04,12.0,7.93,1.0,0.0,5.0,0,2.47,AJ Hosein,2.36
42
+ 91.0,11.38,121.33,0.0,0.0,14.67,110.0,110.2,46.67,48.0,8.8,20.94,14.27,32.85,10.06,8.12,7.0,13.0,30.0,2,10.12,AJ Tye,9.87
43
+ 1633.0,29.69,135.18,0.0,10.0,16.31,125.81,186.07,31.46,6.0,9.21,57.33,37.33,26.34,8.73,7.97,0.0,63.0,23.0,1,7.28,AK Markram,6.66
44
+ 401.0,18.23,113.28,0.0,0.0,11.86,88.0,131.67,39.55,3.0,7.85,48.0,36.67,36.36,12.5,6.7,0.0,23.0,12.0,0,4.21,AL Menaria,4.24
45
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,8.0,8.42,18.25,13.0,36.54,1.0,8.9,0.0,0.0,5.0,0,3.47,AM Ghazanfar,3.32
46
+ 672.0,17.23,117.28,0.0,0.0,13.09,84.04,161.15,38.92,9.0,8.46,35.89,25.44,30.57,9.0,7.25,1.0,50.0,19.0,1,5.11,AM Nayar,5.43
47
+ 5194.0,29.85,124.92,2.0,34.0,15.78,120.32,164.96,36.53,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,191.0,0.0,1,10.43,AM Rahane,10.85
48
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,8.2,29.29,21.43,40.67,9.2,8.08,0.0,0.0,7.0,0,2.47,AM Salvi,2.55
49
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,15.0,8.98,34.33,22.93,38.08,12.0,8.08,1.0,0.0,17.0,0,3.26,AN Ahmed,2.81
50
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,5.0,10.36,22.8,13.2,31.82,13.0,11.17,0.0,0.0,3.0,0,1.54,AP Dole,1.42
51
+ 87.0,21.75,114.47,0.0,0.0,11.84,126.32,120.0,35.53,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,4.0,0.0,0,2.56,AP Majumdar,3.36
52
+ 339.0,14.12,124.63,0.0,1.0,18.75,114.62,161.9,47.43,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,27.0,0.0,0,4.06,AP Tare,3.77
53
+ 1947.0,20.71,133.17,0.0,3.0,15.53,102.59,157.98,33.17,144.0,7.51,30.15,24.1,33.94,8.58,7.38,4.0,129.0,168.0,3,20.57,AR Patel,20.67
54
+ 27.0,27.0,84.38,0.0,0.0,9.38,110.0,72.73,50.0,22.0,9.77,32.14,19.73,39.63,10.96,9.83,1.0,5.0,22.0,2,5.19,AS Joseph,5.27
55
+ 26.0,6.5,63.41,0.0,0.0,7.32,110.0,71.43,65.85,24.0,9.55,35.17,22.08,40.38,12.27,9.19,2.0,7.0,29.0,2,5.13,AS Rajpoot,5.15
56
+ 194.0,17.64,116.17,0.0,0.0,11.98,83.33,140.79,37.13,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,16.0,0.0,0,3.76,AS Raut,3.66
57
+ 65.0,9.29,122.64,0.0,0.0,13.21,80.0,160.0,37.74,13.0,8.18,27.69,20.31,37.12,9.0,8.67,0.0,12.0,16.0,0,6.13,AS Roy,5.81
58
+ 49.0,7.0,125.64,0.0,0.0,17.95,110.0,134.48,43.59,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,6.0,0.0,0,3.04,AS Yadav,3.53
59
+ 4348.0,28.61,128.22,1.0,22.0,15.69,104.46,172.64,34.95,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,185.0,0.0,1,8.53,AT Rayudu,8.53
60
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,2.0,9.1,45.5,30.0,33.33,11.0,9.67,0.0,0.0,3.0,0,1.55,AU Rashid,1.45
61
+ 815.0,17.72,146.06,0.0,0.0,18.46,120.0,174.43,35.13,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,56.0,0.0,1,4.8,Abdul Samad,4.6
62
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,3.0,12.2,40.67,20.0,28.33,9.6,17.25,0.0,0.0,3.0,0,1.03,Abhinandan Singh,0.99
63
+ 2196.0,29.28,165.74,2.0,12.0,25.58,166.29,160.78,36.83,11.0,9.22,49.45,32.18,28.53,9.82,9.65,0.0,82.0,35.0,1,9.27,Abhishek Sharma,9.33
64
+ 691.0,23.83,144.26,0.0,3.0,19.83,143.15,206.9,33.82,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,30.0,0.0,1,4.61,Abishek Porel,4.85
65
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,11.0,11.42,50.36,26.45,36.08,14.79,10.35,1.0,0.0,14.0,0,1.29,Akash Deep,1.52
66
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,26.0,9.99,23.0,13.81,33.15,10.29,7.79,5.0,0.0,17.0,2,5.0,Akash Madhwal,4.79
67
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,9.0,9.54,36.22,22.78,35.61,10.0,9.18,0.0,0.0,10.0,0,2.77,Akash Singh,2.47
68
+ 115.0,12.78,110.58,0.0,1.0,13.46,80.0,137.93,48.08,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,10.0,0.0,0,3.27,Aman Hakim Khan,3.34
69
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,10.0,8.3,20.6,14.9,41.61,14.28,6.44,1.0,0.0,8.0,0,3.14,Anand Rajan,2.91
70
+ 309.0,22.07,156.85,0.0,1.0,21.32,100.0,181.01,38.58,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,19.0,0.0,0,4.86,Aniket Verma,4.48
71
+ 63.0,15.75,95.45,0.0,0.0,10.61,90.0,100.0,46.97,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,4.0,0.0,0,2.46,Anirudh Singh,2.73
72
+ 87.0,12.43,129.85,0.0,0.0,16.42,116.67,110.71,40.3,12.0,7.41,37.75,30.58,37.87,19.71,5.86,0.0,10.0,21.0,0,5.48,Ankit Sharma,5.74
73
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,4.0,7.98,36.25,27.25,34.86,24.0,3.5,0.0,0.0,6.0,0,2.46,Ankit Soni,2.35
74
+ 139.0,15.44,120.87,0.0,0.0,19.13,125.25,120.0,46.09,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,9.0,0.0,0,3.5,Anmolpreet Singh,3.47
75
+ 318.0,22.71,119.1,0.0,1.0,14.98,97.92,189.55,42.7,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,21.0,0.0,0,4.66,Anuj Rawat,4.15
76
+ 36.0,9.0,76.6,0.0,0.0,6.38,110.0,82.86,46.81,21.0,9.26,30.29,19.62,36.89,11.04,7.66,2.0,8.0,22.0,2,4.0,Anureet Singh,4.63
77
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,4.0,9.62,29.25,18.25,45.21,6.0,6.9,0.0,0.0,5.0,0,2.92,Arjun Tendulkar,2.79
78
+ 119.0,19.83,135.23,0.0,1.0,15.91,110.0,144.44,42.05,14.0,11.07,39.0,21.14,40.2,13.91,10.08,1.0,10.0,19.0,0,5.36,Arshad Khan,5.68
79
+ 31.0,5.17,67.39,0.0,0.0,8.7,110.0,67.5,67.39,114.0,9.18,25.91,16.94,38.06,9.79,8.79,13.0,13.0,89.0,2,15.7,Arshdeep Singh,16.11
80
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,10.28,38.83,22.67,46.32,10.75,14.64,0.0,0.0,6.0,0,1.79,Ashok Sharma,1.37
81
+ 426.0,25.06,157.78,0.0,2.0,21.11,110.0,170.89,35.19,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,20.0,0.0,0,4.1,Ashutosh Sharma,4.37
82
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,17.0,9.67,17.35,10.76,38.8,12.94,10.86,2.0,0.0,9.0,0,3.12,Ashwani Kumar,2.9
83
+ 260.0,28.89,145.25,0.0,2.0,21.23,153.39,120.0,36.31,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,10.0,0.0,0,4.64,Atharva Taide,4.33
84
+ 68.0,22.67,147.83,0.0,0.0,23.91,110.0,133.33,47.83,99.0,9.25,26.99,17.51,36.81,10.07,9.35,12.0,16.0,80.0,2,16.98,Avesh Khan,14.57
85
+ 388.0,20.42,128.05,0.0,2.0,17.16,90.91,152.38,38.28,31.0,7.9,22.81,17.32,38.36,9.96,6.76,5.0,21.0,23.0,2,8.95,Azhar Mahmood,8.65
86
+ 99.0,12.38,130.26,0.0,0.0,17.11,110.0,143.75,38.16,12.0,9.68,39.67,24.58,37.29,12.0,9.56,0.0,9.0,15.0,0,4.61,Azmatullah Omarzai,4.71
87
+ 76.0,10.86,138.18,0.0,0.0,18.18,110.0,163.33,43.64,7.0,7.85,35.14,26.86,34.04,12.9,7.5,0.0,11.0,13.0,0,4.95,B Akhil,5.08
88
+ 280.0,17.5,112.0,0.0,1.0,14.0,77.65,177.27,41.6,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,21.0,0.0,0,4.08,B Chipli,3.75
89
+ 21.0,7.0,70.0,0.0,0.0,6.67,72.41,120.0,56.67,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,3.0,0.0,0,2.26,B Indrajith,2.26
90
+ 332.0,8.97,91.97,0.0,0.0,9.7,110.0,99.65,45.98,228.0,7.84,25.35,19.39,43.8,9.66,6.7,21.0,73.0,198.0,2,26.0,B Kumar,26.3
91
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,10.0,10.14,28.4,16.8,26.19,13.22,10.17,0.0,0.0,9.0,0,1.99,B Laughlin,2.11
92
+ 124.0,12.4,129.17,0.0,0.0,16.67,110.0,140.54,41.67,30.0,7.72,37.53,29.17,45.71,9.06,7.12,1.0,19.0,38.0,2,7.88,B Lee,8.09
93
+ 2115.0,49.19,146.16,3.0,14.0,19.7,134.7,210.99,30.62,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,48.0,0.0,1,9.07,B Sai Sudharsan,8.88
94
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,8.33,28.57,20.57,44.44,11.0,7.93,0.0,0.0,6.0,0,2.1,B Stanlake,2.34
95
+ 35.0,35.0,94.59,0.0,0.0,8.11,110.0,109.52,37.84,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,4.0,0.0,0,2.96,B Sumanth,3.26
96
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,13.0,8.27,31.38,22.77,33.11,9.07,7.06,1.0,0.0,15.0,0,3.12,BA Bhatt,3.24
97
+ 935.0,22.8,134.53,2.0,2.0,16.26,129.13,150.59,33.24,31.0,8.91,33.0,22.23,36.28,10.56,8.64,3.0,43.0,38.0,3,9.3,BA Stokes,9.21
98
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,9.0,7.52,34.0,27.11,32.38,9.0,6.79,0.0,0.0,10.0,0,3.01,BAW Mendis,3.07
99
+ 2882.0,27.19,132.44,2.0,13.0,19.44,128.29,216.44,43.11,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,109.0,0.0,1,7.92,BB McCullum,8.06
100
+ 125.0,25.0,110.62,0.0,1.0,13.27,84.62,129.17,39.82,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,3.53,BB Samantray,3.6
101
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,20.0,9.53,38.35,24.15,36.23,9.65,9.25,1.0,0.0,24.0,2,3.37,BB Sran,3.71
102
+ 238.0,21.64,168.79,0.0,0.0,24.11,50.0,190.83,37.59,12.0,9.18,35.83,23.42,27.76,12.72,9.22,0.0,17.0,17.0,0,5.69,BCJ Cutting,5.94
103
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,11.0,9.56,21.73,13.64,36.67,9.57,10.73,2.0,0.0,7.0,0,2.85,BE Hendricks,2.83
104
+ 1400.0,30.43,125.9,0.0,6.0,14.84,92.57,169.76,35.88,18.0,7.95,17.22,13.0,33.76,11.0,9.11,2.0,63.0,20.0,1,8.12,BJ Hodge,8.07
105
+ 193.0,27.57,136.88,0.0,1.0,18.44,50.0,243.33,36.88,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,4.42,BJ Rohrer,4.42
106
+ 40.0,13.33,114.29,0.0,0.0,20.0,114.29,120.0,54.29,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,3.0,0.0,0,3.31,BR Dunk,3.47
107
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,23.0,8.02,21.61,16.17,49.46,11.36,6.5,1.0,0.0,17.0,2,4.35,BW Hilfenhaus,4.37
108
+ 32.0,16.0,91.43,0.0,0.0,5.71,110.0,100.0,40.0,26.0,9.93,33.15,20.04,31.29,11.81,9.24,2.0,7.0,25.0,2,6.18,Basil Thampi,5.72
109
+ 187.0,31.17,152.03,0.0,0.0,16.26,110.0,156.7,26.83,22.0,8.18,26.41,19.36,32.63,19.5,7.08,0.0,17.0,28.0,2,7.15,Bipul Sharma,7.08
110
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,8.57,25.71,18.0,38.1,9.5,7.91,0.0,0.0,6.0,0,2.61,Brijesh Sharma,2.5
111
+ 58.0,29.0,161.11,0.0,0.0,22.22,110.0,180.65,33.33,2.0,8.77,47.5,32.5,52.31,4.57,11.0,0.0,3.0,3.0,0,6.68,C Bosch,6.03
112
+ 270.0,45.0,163.64,0.0,2.0,25.45,115.0,209.09,36.97,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,7.0,0.0,0,4.95,C Connolly,5.43
113
+ 903.0,34.73,152.28,1.0,3.0,20.24,146.31,170.75,30.52,22.0,9.39,35.14,22.45,37.45,12.87,9.57,0.0,36.0,33.0,3,8.58,C Green,8.46
114
+ 177.0,19.67,125.53,0.0,0.0,19.15,132.38,80.0,46.1,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,11.0,0.0,0,3.6,C Munro,3.63
115
+ 20.0,4.0,66.67,0.0,0.0,10.0,110.0,76.0,66.67,20.0,8.75,32.45,22.25,34.83,11.65,6.84,2.0,7.0,20.0,2,5.82,C Sakariya,5.49
116
+ 303.0,20.2,135.27,0.0,0.0,16.07,11.11,138.78,36.61,7.0,8.97,46.14,30.86,28.7,9.75,6.0,1.0,21.0,19.0,0,5.22,C de Grandhomme,5.24
117
+ 205.0,17.08,114.53,0.0,0.0,15.08,70.37,151.43,41.34,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,15.0,0.0,0,3.62,CA Ingram,3.65
118
+ 1329.0,34.08,141.23,0.0,10.0,21.04,144.39,136.36,41.13,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,42.0,0.0,1,5.98,CA Lynn,6.05
119
+ 390.0,21.67,100.0,0.0,1.0,13.85,93.78,137.93,47.95,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,22.0,0.0,0,3.01,CA Pujara,3.26
120
+ 4997.0,39.35,150.02,6.0,31.0,23.03,135.29,209.33,43.89,19.0,8.18,39.74,29.16,35.38,9.49,8.45,1.0,141.0,38.0,1,16.31,CH Gayle,13.23
121
+ 618.0,21.31,155.67,0.0,2.0,19.14,211.11,173.76,29.97,107.0,8.26,22.21,16.13,41.02,8.83,7.81,12.0,49.0,81.0,3,19.04,CH Morris,19.19
122
+ 538.0,24.45,127.79,0.0,3.0,16.86,79.27,197.22,43.94,14.0,10.61,37.5,21.21,28.96,14.91,9.82,1.0,29.0,22.0,1,6.33,CJ Anderson,6.22
123
+ 98.0,16.33,83.76,0.0,0.0,7.69,68.75,106.25,47.86,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,2.15,CJ Ferguson,2.39
124
+ 81.0,9.0,105.19,0.0,0.0,7.79,110.0,121.05,44.16,36.0,9.89,30.86,18.72,33.38,12.22,9.48,5.0,12.0,34.0,2,7.74,CJ Jordan,7.68
125
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,13.0,7.65,15.31,12.0,48.08,8.0,7.07,1.0,0.0,7.0,0,3.41,CK Langeveldt,3.69
126
+ 971.0,27.74,128.27,0.0,6.0,15.06,89.17,191.22,34.35,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,45.0,0.0,1,5.36,CL White,5.26
127
+ 169.0,18.78,113.42,0.0,0.0,15.44,111.94,121.62,50.34,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,13.0,0.0,0,4.24,CM Gautam,3.62
128
+ 181.0,12.93,164.55,0.0,0.0,23.64,110.0,201.43,40.0,16.0,9.07,24.0,15.88,30.71,10.5,6.0,2.0,14.0,16.0,0,6.8,CR Brathwaite,6.91
129
+ 78.0,15.6,101.3,0.0,0.0,11.69,110.0,110.64,42.86,31.0,9.19,21.74,14.19,39.32,11.21,8.52,3.0,12.0,21.0,2,6.78,CR Woakes,6.96
130
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,19.0,7.85,16.11,12.32,45.73,10.0,7.14,2.0,0.0,10.0,0,4.33,CRD Fernando,4.2
131
+ 26.0,8.67,54.17,0.0,0.0,4.17,110.0,64.1,60.42,109.0,7.75,24.03,18.61,38.26,9.41,7.88,10.0,12.0,89.0,2,14.76,CV Varun,14.96
132
+ 519.0,25.95,144.57,0.0,2.0,20.06,108.89,224.14,40.67,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,20.0,0.0,1,4.4,D Brevis,5.06
133
+ 191.0,23.88,144.7,0.0,2.0,21.97,116.67,145.83,41.67,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,9.0,0.0,0,4.54,D Ferreira,4.17
134
+ 2048.0,26.6,130.95,1.0,14.0,18.29,129.85,144.29,39.13,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,81.0,0.0,1,6.34,D Padikkal,7.12
135
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,9.68,34.57,21.43,30.67,12.82,9.0,0.0,0.0,7.0,0,1.82,D Pretorius,1.92
136
+ 148.0,24.67,148.0,0.0,0.0,19.0,110.0,157.97,30.0,17.0,9.06,26.29,17.41,29.05,9.6,8.12,2.0,11.0,15.0,0,6.66,D Wiese,6.86
137
+ 3200.0,34.78,138.59,1.0,13.0,16.28,90.66,172.81,31.57,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,140.0,0.0,1,8.07,DA Miller,7.61
138
+ 6567.0,40.04,140.26,4.0,62.0,19.2,136.32,179.65,36.63,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,184.0,0.0,1,15.64,DA Warner,14.98
139
+ 304.0,25.33,116.92,0.0,0.0,15.0,115.79,130.86,45.0,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,22.0,0.0,0,3.51,DB Das,3.65
140
+ 375.0,18.75,119.05,0.0,1.0,13.97,94.2,140.23,36.83,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,25.0,0.0,0,4.0,DB Ravi Teja,3.8
141
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,43.0,7.46,16.65,13.4,46.88,7.66,7.48,6.0,0.0,27.0,2,7.25,DE Bollinger,7.33
142
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,10.71,25.0,14.0,28.57,12.5,11.0,0.0,0.0,6.0,0,1.43,DG Nalkande,1.46
143
+ 170.0,18.89,127.82,0.0,0.0,18.8,0.0,139.39,41.35,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,17.0,0.0,0,4.3,DH Yagnik,3.84
144
+ 1560.0,22.61,130.43,0.0,5.0,15.55,98.68,190.02,37.79,207.0,8.53,21.43,15.07,33.78,9.91,7.53,21.0,110.0,158.0,3,28.35,DJ Bravo,28.31
145
+ 111.0,37.0,109.9,0.0,0.0,15.84,89.04,120.0,49.5,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,4.0,0.0,0,3.79,DJ Harris,3.79
146
+ 1497.0,18.48,127.95,0.0,8.0,13.68,94.47,150.21,33.25,10.0,8.68,55.0,38.0,28.16,12.0,7.24,0.0,101.0,34.0,1,6.38,DJ Hooda,6.38
147
+ 1322.0,27.54,123.55,0.0,5.0,14.02,103.73,177.56,37.1,10.0,9.18,48.5,31.7,29.02,16.29,10.25,0.0,61.0,26.0,1,6.37,DJ Hussey,6.25
148
+ 92.0,13.14,93.88,0.0,0.0,14.29,90.32,120.0,60.2,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,7.0,0.0,0,2.4,DJ Jacobs,2.66
149
+ 351.0,27.0,131.46,0.0,2.0,14.23,137.76,131.03,28.09,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,15.0,0.0,0,3.56,DJ Mitchell,3.82
150
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,4.0,7.71,27.0,21.0,55.95,1.0,8.25,0.0,0.0,6.0,0,3.71,DJ Muthuswami,3.32
151
+ 39.0,13.0,73.58,0.0,0.0,7.55,28.57,120.0,56.6,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,4.0,0.0,0,2.47,DJ Thornely,2.39
152
+ 53.0,17.67,85.48,0.0,0.0,11.29,64.29,123.53,54.84,7.0,7.69,39.57,30.86,38.89,10.75,6.71,0.0,5.0,11.0,0,4.5,DJ Willey,4.28
153
+ 295.0,19.67,122.41,0.0,1.0,13.69,155.56,155.56,40.66,14.0,9.0,25.29,16.86,31.78,11.77,8.78,2.0,20.0,19.0,0,6.11,DJG Sammy,6.18
154
+ 115.0,16.43,116.16,0.0,0.0,16.16,83.82,120.0,45.45,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,7.0,0.0,0,3.07,DJM Short,3.22
155
+ 123.0,15.38,138.2,0.0,0.0,15.73,0.0,114.89,37.08,92.0,8.23,29.43,21.46,43.87,10.08,8.0,7.0,17.0,98.0,2,14.52,DL Chahar,14.44
156
+ 121.0,17.29,108.04,0.0,0.0,11.61,110.0,122.0,35.71,34.0,6.9,26.29,22.85,36.42,9.1,5.92,3.0,16.0,34.0,2,8.45,DL Vettori,8.4
157
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,2.0,9.09,50.0,33.0,37.88,11.33,7.57,0.0,0.0,3.0,0,1.1,DNT Zoysa,1.49
158
+ 1080.0,43.2,139.18,0.0,11.0,19.46,124.15,154.17,34.92,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,28.0,0.0,1,6.97,DP Conway,6.62
159
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,38.0,7.57,21.45,17.0,47.37,8.71,6.57,5.0,0.0,29.0,2,7.05,DP Nannes,6.85
160
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,4.0,8.09,51.25,38.0,45.39,12.69,7.41,0.0,0.0,9.0,0,1.34,DP Vijaykumar,2.13
161
+ 1808.0,28.25,123.67,1.0,10.0,16.42,115.99,180.92,38.3,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,78.0,0.0,1,6.52,DPMD Jayawardene,6.54
162
+ 44.0,4.4,100.0,0.0,0.0,9.09,16.67,133.33,50.0,15.0,8.8,35.2,24.0,40.0,11.75,7.15,2.0,13.0,16.0,0,4.59,DR Sams,4.66
163
+ 2385.0,29.44,135.9,0.0,17.0,20.63,125.0,155.41,44.84,27.0,9.18,30.56,19.96,33.21,12.88,10.22,2.0,88.0,46.0,3,11.22,DR Smith,10.93
164
+ 104.0,11.56,96.3,0.0,0.0,8.33,110.0,106.59,41.67,91.0,8.44,27.62,19.64,42.81,10.94,7.64,9.0,20.0,92.0,2,14.03,DS Kulkarni,13.88
165
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,17.0,8.46,38.88,27.59,31.34,10.52,8.03,0.0,0.0,19.0,0,2.74,DS Rathi,2.95
166
+ 460.0,16.43,116.75,0.0,0.0,10.66,35.71,139.57,34.01,40.0,8.28,30.45,22.08,35.79,11.78,8.03,0.0,41.0,49.0,2,8.12,DT Christian,8.13
167
+ 167.0,7.59,104.38,0.0,0.0,10.62,110.0,115.33,43.12,105.0,7.1,24.6,20.78,48.76,8.93,6.43,11.0,33.0,95.0,2,16.35,DW Steyn,14.62
168
+ 928.0,30.93,149.92,0.0,7.0,20.03,140.74,178.39,32.15,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,44.0,0.0,1,6.03,Dhruv Jurel,5.71
169
+ 654.0,27.25,137.11,0.0,4.0,20.55,140.26,160.0,44.44,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,26.0,0.0,1,5.68,E Lewis,5.21
170
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,29.0,8.76,17.28,11.83,40.23,9.0,10.12,5.0,0.0,15.0,2,5.53,E Malinga,5.64
171
+ 1406.0,23.05,122.58,0.0,5.0,15.34,93.36,168.33,41.67,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,74.0,0.0,1,4.59,EJG Morgan,4.83
172
+ 4773.0,35.36,135.79,0.0,39.0,17.47,133.23,199.04,34.22,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,147.0,0.0,1,10.52,F du Plessis,10.78
173
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,2.0,9.07,68.0,45.0,28.89,11.0,9.75,0.0,0.0,4.0,0,1.0,FA Allen,1.34
174
+ 81.0,16.2,184.09,0.0,0.0,38.64,184.09,120.0,50.0,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,4.52,FH Allen,4.53
175
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,6.86,26.67,23.33,53.57,10.23,4.69,0.0,0.0,6.0,0,3.03,FH Edwards,2.89
176
+ 183.0,20.33,106.4,0.0,0.0,13.37,98.86,120.0,38.95,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,11.0,0.0,0,3.34,FY Fazal,3.5
177
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,10.31,73.33,42.67,33.2,14.88,8.82,0.0,0.0,12.0,0,1.59,Fazalhaq Farooqi,1.54
178
+ 31.0,5.17,93.94,0.0,0.0,12.12,110.0,100.0,54.55,15.0,10.61,32.67,18.47,38.27,10.11,10.91,2.0,7.0,14.0,0,4.66,G Coetzee,3.76
179
+ 4217.0,31.47,124.25,0.0,36.0,16.23,121.43,139.84,36.39,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,151.0,0.0,1,10.29,G Gambhir,9.94
180
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,25.0,7.66,23.4,18.32,37.12,8.4,6.54,2.0,0.0,21.0,2,4.86,GB Hogg,5.02
181
+ 739.0,24.63,111.3,0.0,4.0,15.51,95.59,163.64,44.43,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,29.0,0.0,1,5.47,GC Smith,4.98
182
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,8.0,9.96,28.62,17.25,34.06,15.6,9.17,1.0,0.0,6.0,0,2.2,GC Viljoen,2.03
183
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,14.0,6.78,26.14,23.14,50.0,9.45,5.97,1.0,0.0,14.0,0,3.62,GD McGrath,3.68
184
+ 132.0,12.0,118.92,0.0,0.0,13.51,57.89,165.22,43.24,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,13.0,0.0,0,2.99,GD Phillips,3.46
185
+ 284.0,14.2,89.03,0.0,0.0,7.52,71.03,105.77,42.63,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,23.0,0.0,0,2.79,GH Vihari,2.55
186
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,3.0,9.07,45.33,30.0,35.56,6.0,10.8,0.0,0.0,5.0,0,2.27,GHS Garton,2.1
187
+ 663.0,22.86,122.55,0.0,2.0,14.42,99.38,187.58,36.6,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,36.0,0.0,1,4.59,GJ Bailey,4.57
188
+ 2820.0,24.1,155.37,0.0,18.0,21.98,134.12,182.52,35.98,45.0,8.32,31.6,22.8,33.24,8.54,8.21,0.0,134.0,85.0,3,13.74,GJ Maxwell,13.95
189
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,3.0,10.14,47.33,28.0,30.95,18.67,7.0,0.0,0.0,4.0,0,1.0,Gagandeep Singh,1.14
190
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,3.0,9.48,46.33,29.33,35.23,9.38,11.0,0.0,0.0,5.0,0,1.35,Gurjapneet Singh,1.41
191
+ 511.0,18.93,121.09,0.0,2.0,15.64,90.57,160.8,36.97,5.0,7.46,19.4,15.6,33.33,11.0,7.67,0.0,32.0,6.0,1,5.03,Gurkeerat Singh,5.41
192
+ 1829.0,42.53,162.72,2.0,10.0,20.11,128.92,191.48,25.71,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,53.0,0.0,1,7.51,H Klaasen,7.49
193
+ 190.0,21.11,124.18,1.0,0.0,17.65,109.78,145.0,42.48,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,11.0,0.0,0,4.51,HC Brook,4.17
194
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,8.85,34.14,23.14,31.48,13.5,6.0,0.0,0.0,8.0,0,1.95,HF Gurney,2.41
195
+ 886.0,27.69,110.06,0.0,6.0,14.16,103.93,174.29,46.96,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,36.0,0.0,1,4.23,HH Gibbs,4.96
196
+ 2855.0,27.72,146.49,0.0,10.0,19.04,106.47,181.14,33.66,87.0,9.38,31.4,20.08,36.06,12.49,9.5,9.0,146.0,113.0,3,17.32,HH Pandya,17.38
197
+ 577.0,44.38,142.12,2.0,3.0,19.95,124.89,213.16,34.24,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,16.0,0.0,1,6.42,HM Amla,6.44
198
+ 66.0,22.0,101.54,0.0,0.0,13.85,12.5,120.0,47.69,5.0,9.41,64.0,40.8,40.2,11.0,8.15,0.0,5.0,13.0,0,3.69,HR Shokeen,3.72
199
+ 274.0,9.79,117.09,0.0,0.0,13.68,110.0,130.77,42.31,168.0,9.01,22.3,14.85,35.03,10.32,8.87,20.0,43.0,119.0,2,23.31,HV Patel,23.25
200
+ 833.0,14.88,139.07,0.0,1.0,20.2,114.06,158.31,41.9,161.0,7.2,25.47,21.22,38.41,8.75,6.81,15.0,88.0,160.0,3,24.05,Harbhajan Singh,24.23
201
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,31.0,8.16,24.1,17.71,38.8,8.67,8.74,3.0,0.0,28.0,2,5.09,Harmeet Singh,5.19
202
+ 244.0,18.77,120.2,0.0,0.0,14.29,110.0,138.17,40.39,35.0,8.04,32.06,23.91,34.41,11.39,8.38,4.0,26.0,47.0,2,8.44,Harpreet Brar,8.36
203
+ 123.0,20.5,104.24,0.0,0.0,11.02,97.06,88.89,41.53,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,3.21,Harpreet Singh,3.33
204
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,13.0,8.64,18.62,12.92,33.93,6.0,9.48,2.0,0.0,9.0,0,4.45,Harsh Dubey,4.45
205
+ 59.0,8.43,103.51,0.0,0.0,14.04,110.0,85.71,57.89,42.0,9.5,24.93,15.74,41.15,9.99,9.43,4.0,10.0,32.0,2,8.63,Harshit Rana,8.32
206
+ 57.0,8.14,82.61,0.0,0.0,8.7,110.0,83.02,53.62,100.0,8.57,34.65,24.26,44.39,11.46,7.58,6.0,21.0,117.0,2,12.79,I Sharma,14.54
207
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,8.0,9.86,35.75,21.75,28.16,9.78,11.0,0.0,0.0,10.0,0,1.62,I Udana,1.85
208
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,19.0,7.91,32.05,24.32,48.27,12.5,7.75,0.0,0.0,24.0,0,3.64,IC Pandey,3.51
209
+ 1150.0,22.12,121.44,0.0,1.0,13.31,113.79,158.15,35.48,99.0,7.96,27.38,20.64,43.32,9.56,7.21,8.0,82.0,101.0,3,16.73,IK Pathan,16.72
210
+ 76.0,15.2,78.35,0.0,0.0,6.19,61.7,92.31,49.48,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,7.0,0.0,0,2.52,IR Jaggi,2.35
211
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,9.0,6.76,22.67,20.11,36.46,36.0,6.38,1.0,0.0,8.0,0,4.5,IS Sodhi,3.05
212
+ 33.0,8.25,89.19,0.0,0.0,13.51,110.0,107.41,56.76,86.0,7.88,20.1,15.3,34.27,8.61,8.04,13.0,8.0,59.0,2,14.61,Imran Tahir,12.37
213
+ 88.0,88.0,107.32,0.0,0.0,12.2,110.0,118.0,40.24,45.0,7.34,25.0,20.44,37.61,9.51,6.47,5.0,13.0,48.0,2,10.98,Iqbal Abdulla,10.44
214
+ 3310.0,30.65,141.03,1.0,20.0,20.15,131.39,193.15,37.71,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,120.0,0.0,1,8.89,Ishan Kishan,9.62
215
+ 409.0,18.59,114.25,0.0,1.0,12.29,80.28,137.76,37.15,27.0,7.07,30.3,25.7,38.62,8.57,7.57,2.0,28.0,34.0,2,8.24,J Botha,7.95
216
+ 385.0,27.5,200.52,0.0,4.0,35.94,213.16,120.0,43.23,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,15.0,0.0,0,5.48,J Fraser-McGurk,5.22
217
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,13.0,8.97,26.23,17.54,36.84,10.62,9.2,2.0,0.0,11.0,0,3.44,J Little,3.12
218
+ 151.0,30.2,154.08,0.0,0.0,21.43,110.0,155.22,33.67,9.0,10.14,30.22,17.89,36.02,9.78,13.03,2.0,8.0,10.0,0,6.02,J Overton,6.29
219
+ 70.0,17.5,114.75,0.0,0.0,14.75,110.0,176.92,47.54,20.0,8.63,30.2,21.0,33.81,13.5,8.05,0.0,9.0,21.0,2,5.87,J Suchith,6.01
220
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,10.0,8.94,28.6,19.2,26.04,6.0,5.25,0.0,0.0,11.0,0,2.88,J Syed Mohammad,3.4
221
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,13.0,8.44,23.92,17.0,33.94,8.73,9.21,1.0,0.0,10.0,0,3.41,J Theron,3.39
222
+ 40.0,20.0,111.11,0.0,0.0,8.33,110.0,104.17,33.33,9.0,6.88,49.67,43.33,39.74,11.0,7.48,0.0,4.0,20.0,0,5.76,J Yadav,5.47
223
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,10.42,23.17,13.33,46.25,13.12,10.59,1.0,0.0,3.0,0,1.11,JA Duffy,1.33
224
+ 975.0,24.38,142.75,0.0,3.0,16.98,121.74,164.55,33.09,96.0,8.39,25.09,17.95,39.64,9.64,8.62,10.0,67.0,87.0,3,17.44,JA Morkel,17.09
225
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,3.0,10.8,54.0,30.0,35.56,13.5,10.8,0.0,0.0,4.0,0,0.25,JA Richardson,0.39
226
+ 275.0,13.75,143.98,0.0,0.0,17.28,0.0,156.43,37.17,77.0,8.04,25.12,18.74,46.92,10.23,6.78,8.0,34.0,61.0,2,13.55,JC Archer,13.68
227
+ 4391.0,39.21,149.51,7.0,26.0,21.62,138.78,193.84,36.6,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,127.0,0.0,1,12.77,JC Buttler,12.52
228
+ 604.0,20.83,132.75,0.0,4.0,19.34,132.28,147.37,41.98,11.0,7.98,28.55,21.45,35.59,12.0,6.0,1.0,29.0,16.0,1,6.58,JD Ryder,6.17
229
+ 201.0,14.36,118.93,0.0,0.0,13.61,110.0,128.81,39.64,125.0,9.02,28.33,18.84,33.46,11.57,7.93,14.0,28.0,115.0,2,17.54,JD Unadkat,18.45
230
+ 106.0,13.25,99.07,0.0,0.0,10.28,110.0,142.86,43.93,13.0,9.16,27.85,18.23,36.29,8.88,9.37,1.0,11.0,14.0,0,5.02,JDP Oram,4.76
231
+ 92.0,11.5,98.92,0.0,0.0,8.6,110.0,88.89,43.01,8.0,9.5,42.75,27.0,31.48,18.0,9.64,1.0,10.0,13.0,0,3.98,JDS Neesham,3.57
232
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,8.56,27.83,19.5,46.15,11.29,6.38,1.0,0.0,5.0,0,2.12,JE Taylor,2.25
233
+ 327.0,29.73,109.0,0.0,1.0,11.33,84.31,152.94,38.33,9.0,8.94,25.0,16.78,27.15,19.0,10.0,0.0,16.0,15.0,0,5.09,JEC Franklin,5.4
234
+ 101.0,25.25,168.33,0.0,1.0,30.0,176.0,120.0,40.0,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,4.0,0.0,0,4.7,JG Bethell,4.77
235
+ 2427.0,27.27,109.67,0.0,17.0,13.51,103.58,194.23,41.08,74.0,8.09,31.73,23.54,36.74,10.02,7.53,4.0,95.0,89.0,3,15.51,JH Kallis,15.48
236
+ 75.0,9.38,87.21,0.0,0.0,8.14,110.0,82.05,45.35,206.0,7.43,21.23,17.14,42.51,8.47,6.89,31.0,29.0,152.0,2,29.13,JJ Bumrah,28.22
237
+ 614.0,34.11,139.23,0.0,4.0,21.77,131.17,170.0,40.36,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,21.0,0.0,1,5.44,JJ Roy,5.49
238
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,3.0,11.17,44.67,24.0,43.06,12.25,8.2,0.0,0.0,3.0,0,0.2,JJ van der Wath,0.66
239
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,11.0,9.04,29.18,19.36,36.62,10.67,8.76,0.0,0.0,10.0,0,2.58,JL Pattinson,2.75
240
+ 1674.0,33.48,146.2,2.0,9.0,21.57,145.82,155.17,38.86,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,52.0,0.0,1,6.69,JM Bairstow,7.09
241
+ 1053.0,23.4,152.61,0.0,1.0,21.3,84.62,181.95,37.1,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,53.0,0.0,1,5.32,JM Sharma,5.12
242
+ 282.0,13.43,128.77,0.0,0.0,15.53,61.9,141.46,42.01,60.0,8.89,25.78,17.4,34.87,10.18,8.65,10.0,28.0,48.0,2,11.54,JO Holder,11.49
243
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,22.0,9.23,25.59,16.64,39.89,12.88,8.43,3.0,0.0,17.0,2,3.86,JP Behrendorff,4.0
244
+ 2029.0,41.41,124.4,0.0,14.0,12.57,98.35,182.1,31.64,23.0,7.5,36.83,29.48,35.69,11.17,7.32,1.0,75.0,49.0,3,10.55,JP Duminy,10.23
245
+ 527.0,18.82,136.88,0.0,0.0,15.32,70.0,166.95,32.99,76.0,8.96,24.33,16.29,35.54,10.33,7.93,9.0,45.0,60.0,3,14.41,JP Faulkner,14.35
246
+ 278.0,27.8,157.06,0.0,1.0,23.73,162.03,147.37,38.98,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,11.0,0.0,0,4.27,JP Inglis,4.73
247
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,66.0,8.33,20.86,15.03,45.67,10.21,7.52,10.0,0.0,44.0,2,9.79,JR Hazlewood,9.67
248
+ 417.0,24.53,136.72,0.0,4.0,19.67,126.0,143.24,36.39,14.0,9.37,40.14,25.71,33.06,11.43,6.29,0.0,19.0,20.0,0,6.08,JR Hopes,5.98
249
+ 78.0,19.5,101.3,0.0,0.0,12.99,100.0,50.0,45.45,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,2.72,JR Philippe,3.22
250
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,10.24,29.0,17.0,41.18,14.75,8.33,0.0,0.0,7.0,0,2.29,Jaskaran Singh,1.94
251
+ 36.0,9.0,120.0,0.0,0.0,10.0,110.0,126.09,33.33,13.0,9.87,32.38,19.69,28.52,11.61,11.25,0.0,5.0,15.0,0,4.55,Joginder Sharma,4.45
252
+ 218.0,16.77,94.37,0.0,0.0,11.26,97.62,109.09,52.81,0.0,8.55,50.0,40.0,30.3,11.0,5.0,0.0,16.0,6.0,0,2.87,K Goel,3.02
253
+ 247.0,13.72,166.89,0.0,0.0,21.62,114.29,190.0,34.46,22.0,8.42,37.5,26.73,36.73,14.5,8.49,0.0,27.0,35.0,2,7.53,K Gowtham,7.42
254
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,12.0,8.73,34.33,23.58,32.16,13.33,8.83,0.0,0.0,16.0,0,3.21,K Kartikeya,2.98
255
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,10.71,41.67,23.33,29.29,12.97,12.0,0.0,0.0,8.0,0,1.6,K Khejroliya,1.34
256
+ 250.0,13.16,107.76,0.0,0.0,12.93,60.0,132.09,45.69,141.0,8.85,22.07,14.97,41.35,9.82,8.56,17.0,32.0,92.0,2,19.73,K Rabada,19.7
257
+ 77.0,19.25,104.05,0.0,0.0,13.51,110.0,140.62,54.05,15.0,9.86,30.67,18.67,40.71,13.47,9.34,2.0,10.0,14.0,0,5.13,KA Jamieson,5.2
258
+ 3437.0,26.64,148.47,0.0,16.0,19.22,92.13,184.05,36.37,81.0,8.87,27.16,18.37,28.36,11.43,7.65,3.0,168.0,107.0,3,17.16,KA Pollard,16.32
259
+ 51.0,10.2,100.0,0.0,0.0,9.8,110.0,86.21,43.14,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,2.33,KB Arun Karthik,2.97
260
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,8.0,9.69,43.62,27.0,28.7,11.0,11.0,0.0,0.0,11.0,0,1.95,KC Cariappa,1.59
261
+ 1687.0,24.45,121.81,0.0,10.0,16.03,112.03,157.78,37.18,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,68.0,0.0,1,5.89,KC Sangakkara,5.63
262
+ 4843.0,25.9,135.66,0.0,22.0,17.56,100.69,188.55,34.15,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,233.0,0.0,1,8.27,KD Karthik,8.13
263
+ 1792.0,21.85,131.96,0.0,2.0,16.42,99.13,157.14,37.04,106.0,7.62,30.8,24.25,32.87,8.83,7.57,11.0,117.0,140.0,3,18.38,KH Pandya,19.19
264
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,2.0,11.38,91.0,48.0,31.25,12.33,10.43,0.0,0.0,5.0,0,0.2,KJ Abbott,0.49
265
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,96.0,9.05,26.26,17.42,43.96,11.23,8.33,12.0,0.0,76.0,2,12.21,KK Ahmed,11.98
266
+ 116.0,12.89,173.13,0.0,0.0,25.37,122.22,203.03,40.3,36.0,8.22,21.92,16.0,36.28,9.07,7.11,5.0,12.0,25.0,2,10.19,KK Cooper,8.78
267
+ 1699.0,23.27,131.1,0.0,11.0,18.13,124.69,190.09,38.66,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,77.0,0.0,1,5.54,KK Nair,5.54
268
+ 22.0,5.5,66.67,0.0,0.0,3.03,110.0,83.33,48.48,5.0,9.57,57.4,36.0,28.89,7.0,9.0,0.0,7.0,11.0,0,3.79,KL Nagarkoti,3.47
269
+ 5593.0,45.47,138.17,6.0,42.0,17.69,126.16,186.58,33.28,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,143.0,0.0,1,13.52,KL Rahul,13.73
270
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,10.39,33.14,19.14,35.07,15.43,9.67,0.0,0.0,7.0,0,1.34,KM Asif,1.73
271
+ 1208.0,22.37,124.66,0.0,4.0,14.65,88.43,143.38,35.19,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,81.0,0.0,1,4.6,KM Jadhav,4.61
272
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,10.0,8.8,23.9,16.3,33.13,11.19,16.5,2.0,0.0,8.0,0,3.37,KMA Paul,2.82
273
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,7.18,20.33,17.0,46.08,6.4,7.45,0.0,0.0,5.0,0,2.87,KMDN Kulasekara,3.27
274
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,11.0,8.08,26.45,19.64,32.41,11.0,9.33,1.0,0.0,13.0,0,3.34,KP Appanna,3.34
275
+ 1001.0,35.75,134.91,1.0,4.0,17.65,130.19,200.0,37.06,9.0,7.52,24.22,19.33,32.76,9.67,6.0,0.0,36.0,13.0,1,7.81,KP Pietersen,7.79
276
+ 379.0,29.15,146.9,0.0,4.0,23.26,141.98,120.0,48.06,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,13.0,0.0,0,4.49,KR Mayers,4.42
277
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,14.0,9.86,28.29,17.21,36.93,13.96,9.1,2.0,0.0,12.0,0,2.94,KR Sen,2.75
278
+ 199.0,28.43,123.6,0.0,1.0,12.42,110.26,200.0,34.78,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,4.21,KS Bharat,4.23
279
+ 2132.0,36.14,126.0,0.0,18.0,14.83,98.48,168.66,34.46,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,76.0,0.0,1,6.78,KS Williamson,6.94
280
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,2.0,13.06,74.0,34.0,38.24,17.0,11.86,0.0,0.0,4.0,0,0.81,KT Maphaka,0.39
281
+ 352.0,14.08,119.32,0.0,0.0,12.54,71.43,141.61,38.31,89.0,8.56,25.43,17.82,34.05,10.88,7.0,9.0,40.0,87.0,2,13.91,KV Sharma,13.94
282
+ 36.0,12.0,92.31,0.0,0.0,7.69,110.0,75.0,43.59,21.0,8.58,22.81,15.95,40.6,11.26,6.9,1.0,4.0,15.0,2,5.48,KW Richardson,5.4
283
+ 128.0,32.0,166.23,0.0,1.0,27.27,124.39,166.67,42.86,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,6.0,0.0,0,5.32,Kamran Akmal,5.1
284
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,14.0,8.96,17.71,11.86,42.77,10.41,9.33,2.0,0.0,9.0,0,4.06,Kamran Khan,3.7
285
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,14.0,9.5,23.07,14.57,32.35,12.67,8.67,2.0,0.0,9.0,0,2.35,Karanveer Singh,2.86
286
+ 58.0,11.6,113.73,0.0,0.0,13.73,225.0,115.38,50.98,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,3.92,Kartik Sharma,3.61
287
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,25.0,9.98,39.4,23.68,37.67,10.2,10.97,1.0,0.0,27.0,2,2.94,Kartik Tyagi,3.4
288
+ 210.0,14.0,82.35,0.0,0.0,8.24,110.0,89.95,50.2,113.0,8.26,26.93,19.57,31.21,8.54,7.67,13.0,41.0,103.0,2,16.45,Kuldeep Yadav,16.8
289
+ 36.0,5.14,73.47,0.0,0.0,6.12,110.0,80.0,57.14,85.0,8.27,24.51,17.79,38.49,10.52,7.05,8.0,13.0,73.0,2,12.55,L Balaji,12.07
290
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,40.0,8.62,18.68,13.0,39.42,9.4,7.99,7.0,0.0,22.0,2,7.08,L Ngidi,7.11
291
+ 34.0,11.33,100.0,0.0,0.0,20.59,100.0,120.0,67.65,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,2.91,L Ronchi,3.02
292
+ 81.0,27.0,122.73,0.0,0.0,16.67,110.26,180.0,40.91,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,3.91,LA Carseldine,4.1
293
+ 302.0,27.45,124.28,0.0,1.0,15.64,133.33,173.53,41.98,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,16.0,0.0,0,3.95,LA Pomersbach,4.07
294
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,4.0,9.12,57.0,37.5,28.0,8.43,10.78,1.0,0.0,7.0,0,1.86,LE Plunkett,1.83
295
+ 72.0,18.0,156.52,0.0,0.0,19.57,110.0,168.29,26.09,63.0,9.15,25.63,16.81,39.47,10.98,8.77,8.0,8.0,50.0,2,12.62,LH Ferguson,12.31
296
+ 106.0,26.5,179.66,0.0,0.0,32.2,100.0,240.0,32.2,2.0,10.56,62.5,35.5,21.13,19.2,12.0,0.0,5.0,6.0,0,5.4,LJ Wright,5.1
297
+ 1079.0,39.96,127.24,1.0,11.0,18.04,118.47,128.0,43.87,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,29.0,0.0,1,5.92,LMP Simmons,6.41
298
+ 405.0,13.97,115.71,0.0,0.0,14.0,58.33,144.27,41.14,17.0,8.75,26.94,18.47,37.26,9.69,9.63,2.0,33.0,27.0,0,6.72,LR Shukla,6.65
299
+ 1017.0,24.8,124.33,0.0,3.0,13.69,126.45,165.93,37.53,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,54.0,0.0,1,4.61,LRPL Taylor,4.92
300
+ 1066.0,26.0,155.17,0.0,7.0,21.25,130.32,219.01,36.24,13.0,9.06,36.23,24.0,26.28,7.0,6.8,1.0,49.0,27.0,1,8.79,LS Livingstone,8.51
301
+ 305.0,20.33,107.02,0.0,0.0,11.93,70.45,125.0,40.7,11.0,8.96,39.09,26.18,29.86,11.0,9.28,0.0,21.0,19.0,0,5.01,Lalit Yadav,5.21
302
+ 35.0,4.38,70.0,0.0,0.0,6.0,110.0,87.5,54.0,35.0,8.15,33.77,24.86,34.25,7.92,7.65,2.0,12.0,44.0,2,6.51,M Ashwin,6.82
303
+ 151.0,11.62,104.86,0.0,0.0,10.42,100.0,103.88,41.67,43.0,9.4,33.53,21.4,40.65,10.57,9.07,3.0,22.0,42.0,2,7.72,M Jansen,8.02
304
+ 259.0,16.19,104.02,0.0,0.0,11.24,69.39,116.13,44.58,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,22.0,0.0,0,3.33,M Kaif,3.3
305
+ 113.0,16.14,105.61,0.0,0.0,7.48,110.0,102.94,28.97,39.0,7.4,36.36,29.46,35.25,8.32,6.68,1.0,14.0,55.0,2,8.2,M Kartik,8.17
306
+ 73.0,18.25,97.33,0.0,0.0,12.0,96.61,120.0,45.33,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,4.0,0.0,0,2.96,M Klinger,2.93
307
+ 514.0,21.42,109.36,0.0,0.0,11.28,86.11,136.91,38.51,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,38.0,0.0,1,3.47,M Manhas,4.41
308
+ 48.0,16.0,114.29,0.0,0.0,14.29,110.0,128.57,42.86,37.0,9.24,31.27,20.3,29.83,9.2,8.27,3.0,10.0,40.0,2,8.52,M Markande,8.47
309
+ 126.0,11.45,141.57,0.0,0.0,17.98,110.0,154.67,35.96,88.0,7.87,24.27,18.51,45.3,9.48,7.4,8.0,20.0,70.0,2,14.53,M Morkel,14.47
310
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,67.0,6.93,26.34,22.81,42.08,8.75,6.23,5.0,0.0,66.0,2,9.76,M Muralitharan,9.75
311
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,8.0,7.34,32.12,26.25,51.43,9.6,7.0,1.0,0.0,9.0,0,3.11,M Ntini,2.96
312
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,53.0,8.55,19.75,13.87,39.86,9.11,9.0,7.0,0.0,32.0,2,8.12,M Pathirana,8.08
313
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,94.0,9.0,26.77,17.85,42.25,11.04,8.3,10.0,0.0,73.0,2,12.5,M Prasidh Krishna,11.44
314
+ 55.0,11.0,79.71,0.0,0.0,7.25,0.0,94.59,47.83,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,11.0,0.0,0,2.6,M Rawat,2.47
315
+ 767.0,23.97,147.22,0.0,2.0,19.19,112.12,171.84,35.89,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,52.0,0.0,1,5.12,M Shahrukh Khan,4.93
316
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,8.6,34.0,23.71,35.54,12.63,7.78,0.0,0.0,8.0,0,2.51,M Siddharth,2.37
317
+ 17.0,5.67,50.0,0.0,0.0,2.94,110.0,68.18,64.71,36.0,8.22,34.06,24.86,32.63,8.54,8.56,2.0,6.0,38.0,2,6.44,M Theekshana,6.49
318
+ 2619.0,27.28,121.93,2.0,13.0,15.74,113.01,168.18,43.16,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,105.0,0.0,1,7.45,M Vijay,7.24
319
+ 1083.0,22.56,130.8,0.0,3.0,17.75,124.75,200.0,43.24,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,51.0,0.0,1,4.76,M Vohra,4.88
320
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,9.5,28.5,18.0,37.96,12.0,8.2,1.0,0.0,5.0,0,2.07,M de Lange,1.93
321
+ 2764.0,23.42,134.5,1.0,13.0,18.25,122.57,214.44,37.42,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,125.0,0.0,1,7.21,MA Agarwal,7.45
322
+ 111.0,11.1,92.5,0.0,0.0,9.17,110.0,88.31,42.5,78.0,8.86,20.36,13.79,42.75,9.28,8.96,12.0,21.0,50.0,2,13.18,MA Starc,12.52
323
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,11.0,9.6,17.45,10.91,45.0,13.14,8.2,2.0,0.0,5.0,0,3.0,MA Wood,2.88
324
+ 1000.0,26.32,127.39,0.0,5.0,14.65,123.76,175.76,34.27,46.0,8.22,28.3,20.65,33.16,10.36,7.59,3.0,54.0,60.0,3,10.79,MC Henriques,11.27
325
+ 125.0,17.86,97.66,0.0,0.0,9.38,96.3,55.56,37.5,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,7.0,0.0,0,3.61,MC Juneja,3.22
326
+ 156.0,31.2,143.12,0.0,1.0,19.27,110.0,150.7,40.37,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,4.04,MD Choudhary,4.39
327
+ 237.0,15.8,115.05,0.0,0.0,15.53,108.27,153.33,47.09,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,17.0,0.0,0,3.03,MD Mishra,3.4
328
+ 1977.0,38.02,122.8,1.0,15.0,15.53,105.78,188.51,37.64,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,58.0,0.0,1,7.59,MEK Hussey,7.56
329
+ 177.0,17.7,143.9,0.0,0.0,17.07,50.0,171.62,34.96,33.0,7.6,16.12,12.73,42.14,9.79,7.55,5.0,14.0,20.0,2,9.8,MF Maharoof,9.32
330
+ 58.0,29.0,123.4,0.0,0.0,14.89,66.67,100.0,31.91,6.0,8.64,15.83,11.0,39.39,11.0,5.4,0.0,4.0,5.0,0,5.28,MG Bracewell,5.53
331
+ 167.0,11.93,102.45,0.0,0.0,10.43,110.0,108.76,46.63,66.0,8.45,26.36,18.71,45.1,9.69,8.02,3.0,28.0,54.0,2,10.82,MG Johnson,10.34
332
+ 98.0,19.6,104.26,0.0,0.0,12.77,107.89,120.0,43.62,3.0,6.55,24.0,22.0,36.36,11.0,6.0,0.0,6.0,5.0,0,4.76,MJ Clarke,4.74
333
+ 271.0,22.58,138.27,0.0,1.0,19.9,138.46,120.0,44.9,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,13.0,0.0,0,3.74,MJ Guptill,3.97
334
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,5.0,11.56,62.8,32.6,26.99,10.0,10.95,0.0,0.0,9.0,0,1.27,MJ Henry,1.22
335
+ 278.0,27.8,145.55,0.0,1.0,26.7,147.62,120.0,46.6,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,12.0,0.0,0,4.24,MJ Lumb,4.4
336
+ 85.0,7.73,123.19,0.0,0.0,17.39,0.0,119.57,52.17,75.0,8.66,24.52,16.99,41.92,10.18,8.04,9.0,19.0,56.0,2,13.26,MJ McClenaghan,11.7
337
+ 136.0,17.0,108.8,0.0,0.0,12.0,83.33,127.27,42.4,31.0,7.46,28.06,22.58,37.29,8.8,8.27,1.0,21.0,35.0,2,7.56,MJ Santner,7.62
338
+ 527.0,18.17,141.67,0.0,1.0,16.94,80.85,138.53,32.26,2.0,8.47,63.5,45.0,24.44,11.0,7.25,0.0,35.0,11.0,1,4.43,MK Lomror,4.65
339
+ 3951.0,29.49,121.91,1.0,22.0,14.07,111.87,159.89,35.88,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,160.0,0.0,1,8.17,MK Pandey,8.07
340
+ 1695.0,28.25,117.38,0.0,7.0,13.57,95.72,155.11,36.7,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,83.0,0.0,1,5.31,MK Tiwary,5.48
341
+ 1107.0,41.0,138.55,0.0,8.0,20.65,133.2,200.0,41.55,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,32.0,0.0,1,5.88,ML Hayden,6.15
342
+ 1167.0,23.34,139.93,0.0,6.0,19.42,122.08,176.52,39.33,46.0,7.25,22.52,18.63,35.59,6.6,5.5,4.0,59.0,57.0,3,12.4,MM Ali,12.34
343
+ 39.0,7.8,95.12,0.0,0.0,12.2,110.0,105.41,43.9,82.0,7.67,21.13,16.52,45.17,11.04,6.91,9.0,12.0,63.0,2,13.14,MM Patel,13.12
344
+ 125.0,7.35,91.91,0.0,0.0,9.56,110.0,97.37,49.26,149.0,8.78,23.74,16.21,35.06,10.38,8.03,19.0,30.0,119.0,2,20.7,MM Sharma,20.57
345
+ 161.0,13.42,93.6,0.0,0.0,9.3,37.84,158.33,48.84,10.0,7.99,28.5,21.4,37.38,11.35,6.23,1.0,14.0,11.0,0,4.74,MN Samuels,4.53
346
+ 167.0,55.67,127.48,0.0,1.0,15.27,110.34,154.29,31.3,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,4.48,MN van Wyk,4.42
347
+ 2136.0,28.48,147.11,1.0,10.0,19.42,118.18,190.83,34.3,46.0,9.93,32.72,19.76,29.81,13.27,8.31,4.0,104.0,73.0,3,12.6,MP Stoinis,12.63
348
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,10.0,9.7,24.4,15.1,47.68,11.43,11.18,2.0,0.0,7.0,0,2.12,MP Yadav,2.25
349
+ 1504.0,27.85,138.36,1.0,10.0,19.14,144.17,155.45,39.56,37.0,8.6,21.7,15.14,33.75,12.49,7.71,3.0,57.0,34.0,3,10.86,MR Marsh,10.81
350
+ 798.0,21.57,114.0,0.0,4.0,16.57,106.33,160.0,48.43,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,39.0,0.0,1,4.11,MS Bisla,4.49
351
+ 5439.0,34.42,137.91,0.0,24.0,16.2,76.6,187.23,33.87,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,241.0,0.0,1,9.19,MS Dhoni,9.23
352
+ 99.0,11.0,141.43,0.0,0.0,20.0,110.0,164.58,47.14,39.0,8.9,33.77,22.77,41.22,11.69,8.79,3.0,15.0,44.0,2,8.79,MS Gony,8.71
353
+ 183.0,14.08,103.39,0.0,0.0,14.12,110.81,120.0,48.02,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,14.0,0.0,0,3.66,MS Wade,3.27
354
+ 394.0,26.27,128.34,0.0,1.0,14.66,93.1,165.74,34.85,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,23.0,0.0,0,4.48,MV Boucher,4.18
355
+ 153.0,19.12,116.79,0.0,0.0,16.79,123.16,0.0,45.8,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,3.29,MW Short,3.34
356
+ 1706.0,20.31,123.18,0.0,6.0,15.45,115.21,160.59,37.76,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,97.0,0.0,1,5.02,Mandeep Singh,4.98
357
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,2.0,8.98,102.5,68.5,32.12,12.0,11.5,0.0,0.0,8.0,0,0.83,Mayank Dagar,1.35
358
+ 117.0,13.0,144.44,0.0,0.0,19.75,131.82,266.67,37.04,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,4.53,Misbah-ul-Haq,4.31
359
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,9.0,9.59,34.11,21.33,36.98,11.38,9.8,0.0,0.0,8.0,0,1.91,Mohammad Asif,2.07
360
+ 64.0,8.0,77.11,0.0,0.0,10.84,75.68,125.0,60.24,2.0,7.1,35.5,30.0,41.67,11.0,8.0,0.0,8.0,4.0,0,3.93,Mohammad Hafeez,3.69
361
+ 221.0,13.0,146.36,0.0,0.0,19.87,164.71,147.3,36.42,15.0,7.58,35.13,27.8,36.69,10.0,6.45,1.0,19.0,23.0,0,6.37,Mohammad Nabi,6.56
362
+ 115.0,6.39,102.68,0.0,0.0,12.5,110.0,104.26,49.11,157.0,8.69,26.05,17.98,42.79,11.05,7.78,15.0,33.0,127.0,2,21.0,Mohammed Shami,20.36
363
+ 112.0,10.18,88.89,0.0,0.0,11.11,110.0,91.15,55.56,121.0,8.79,30.33,20.7,44.75,10.33,8.21,11.0,22.0,116.0,2,17.25,Mohammed Siraj,17.75
364
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,36.0,8.28,22.39,16.22,45.03,10.08,8.0,4.0,0.0,27.0,2,5.99,Mohsin Khan,5.89
365
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,21.0,8.4,29.81,21.29,35.12,11.88,7.97,1.0,0.0,20.0,2,3.72,Mujeeb Ur Rahman,4.09
366
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,20.0,9.76,28.8,17.7,42.94,13.18,9.02,3.0,0.0,18.0,2,3.87,Mukesh Choudhary,3.98
367
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,51.0,10.26,27.39,16.02,36.72,12.12,9.27,5.0,0.0,39.0,2,6.45,Mukesh Kumar,6.63
368
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,74.0,8.26,25.39,18.45,37.51,9.67,7.22,10.0,0.0,60.0,2,10.7,Mustafizur Rahman,10.43
369
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,16.0,9.72,29.25,18.06,47.75,8.3,10.04,0.0,0.0,14.0,0,3.32,N Burger,2.99
370
+ 162.0,18.0,110.2,0.0,0.0,15.65,104.0,81.82,44.22,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,10.0,0.0,0,3.24,N Jagadeesan,3.44
371
+ 2375.0,31.25,159.61,0.0,14.0,22.45,138.65,173.04,36.63,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,94.0,0.0,1,6.98,N Pooran,7.32
372
+ 3022.0,27.47,137.05,0.0,22.0,19.55,113.26,188.76,39.95,11.0,8.97,29.64,19.82,31.19,7.04,9.55,0.0,118.0,27.0,1,10.33,N Rana,10.46
373
+ 140.0,12.73,100.0,0.0,1.0,11.43,94.68,100.0,46.43,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,10.0,0.0,0,3.09,N Saini,2.89
374
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,9.0,9.53,32.11,20.22,34.62,10.47,9.22,2.0,0.0,8.0,0,3.15,N Thushara,2.79
375
+ 784.0,25.29,138.52,0.0,4.0,18.9,115.25,152.0,38.34,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,36.0,0.0,1,5.22,N Wadhera,4.85
376
+ 121.0,24.2,101.68,0.0,1.0,12.61,78.79,172.22,47.06,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,6.0,0.0,0,4.45,NK Patel,3.86
377
+ 424.0,17.67,138.56,0.0,0.0,16.01,137.5,166.67,36.6,37.0,8.86,27.86,18.86,34.1,11.49,7.28,5.0,30.0,36.0,2,8.67,NLTC Perera,8.81
378
+ 82.0,8.2,113.89,0.0,0.0,15.28,110.0,128.3,50.0,52.0,7.88,21.63,16.48,45.16,9.56,7.24,8.0,16.0,38.0,2,11.15,NM Coulter-Nile,11.09
379
+ 31.0,7.75,62.0,0.0,0.0,4.0,43.75,68.75,56.0,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,4.0,0.0,0,1.91,NS Naik,1.96
380
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,20.0,8.75,27.65,18.95,32.98,11.42,6.74,2.0,0.0,17.0,2,4.52,NT Ellis,4.42
381
+ 1554.0,21.0,118.81,0.0,6.0,15.29,99.63,144.24,45.8,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,94.0,0.0,1,4.52,NV Ojha,4.7
382
+ 546.0,27.3,168.52,0.0,2.0,25.0,151.14,192.42,31.17,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,26.0,0.0,1,5.06,Naman Dhir,5.29
383
+ 33.0,8.25,89.19,0.0,0.0,8.11,0.0,112.5,43.24,26.0,9.0,38.69,25.81,43.37,9.51,8.6,1.0,7.0,32.0,2,5.66,Navdeep Saini,5.58
384
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,26.0,9.31,23.15,14.92,36.34,10.32,9.67,4.0,0.0,17.0,2,3.85,Naveen-ul-Haq,4.29
385
+ 657.0,27.38,137.45,0.0,3.0,16.53,89.0,182.14,34.94,13.0,10.32,34.92,20.31,31.44,13.3,10.16,1.0,29.0,20.0,1,5.99,Nithish Kumar Reddy,6.25
386
+ 30.0,3.0,55.56,0.0,0.0,5.56,110.0,71.05,68.52,56.0,8.24,24.2,17.62,35.76,8.58,8.5,6.0,14.0,45.0,2,8.97,Noor Ahmad,8.8
387
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,5.0,8.5,17.0,12.0,36.67,9.0,9.67,0.0,0.0,4.0,0,2.56,O Thomas,2.49
388
+ 506.0,38.92,130.41,0.0,4.0,14.69,107.14,151.88,34.28,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,22.0,0.0,1,4.91,OA Shah,5.03
389
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,11.0,9.44,23.18,14.73,31.48,8.95,6.0,1.0,0.0,8.0,0,3.62,OC McCoy,3.09
390
+ 51.0,17.0,115.91,0.0,0.0,13.64,110.0,143.75,52.27,7.0,11.93,25.57,12.86,40.0,15.33,7.75,1.0,6.0,6.0,0,4.64,OF Smith,4.51
391
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,10.95,34.43,18.86,25.76,21.0,11.0,0.0,0.0,6.0,0,1.01,P Amarnath,1.19
392
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,43.0,8.4,24.33,17.37,41.1,11.22,8.17,4.0,0.0,33.0,2,6.02,P Awana,6.02
393
+ 127.0,10.58,92.03,0.0,0.0,6.52,110.0,119.05,43.48,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,12.0,0.0,0,2.72,P Dogra,2.5
394
+ 23.0,23.0,69.7,0.0,0.0,6.06,110.0,50.0,51.52,2.0,8.62,56.0,39.0,30.77,11.0,4.0,0.0,2.0,5.0,0,2.51,P Dubey,2.71
395
+ 340.0,10.0,108.97,0.0,0.0,12.5,75.0,112.45,47.44,102.0,7.94,32.76,24.75,45.44,10.44,6.88,6.0,57.0,119.0,2,15.32,P Kumar,15.36
396
+ 365.0,14.04,126.74,0.0,0.0,14.93,62.5,143.95,38.89,38.0,7.99,25.11,18.84,34.78,10.19,7.25,3.0,35.0,42.0,2,9.21,P Negi,9.03
397
+ 147.0,21.0,145.54,0.0,0.0,23.76,156.98,120.0,38.61,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,7.0,0.0,0,3.95,P Nissanka,4.0
398
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,9.0,8.81,25.11,17.11,42.86,10.55,9.75,1.0,0.0,8.0,0,2.04,P Parameswaran,2.37
399
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,3.0,8.69,50.67,35.0,25.71,11.0,9.33,0.0,0.0,5.0,0,2.02,P Sahu,1.93
400
+ 1701.0,29.33,155.34,1.0,12.0,24.29,151.78,172.5,38.81,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,59.0,0.0,1,7.11,P Simran Singh,7.24
401
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,2.0,9.62,77.0,48.0,40.62,12.5,10.0,0.0,0.0,5.0,0,1.67,P Suyal,1.16
402
+ 2848.0,22.43,121.19,0.0,13.0,17.62,121.27,140.0,42.26,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,136.0,0.0,1,5.66,PA Patel,5.66
403
+ 164.0,16.4,102.5,0.0,0.0,10.62,96.49,300.0,40.62,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,10.0,0.0,0,3.67,PA Reddy,3.68
404
+ 277.0,23.08,145.79,0.0,1.0,19.47,158.11,50.0,36.84,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,13.0,0.0,0,4.09,PBB Rajapaksa,4.08
405
+ 505.0,22.95,121.98,1.0,2.0,19.57,109.76,207.69,51.93,7.0,8.23,29.57,21.57,30.46,9.23,9.0,1.0,23.0,10.0,1,6.87,PC Valthaty,6.67
406
+ 203.0,50.75,130.13,0.0,3.0,14.1,116.13,178.38,36.54,5.0,6.81,20.2,17.8,26.97,4.94,9.0,0.0,7.0,6.0,0,7.39,PD Collingwood,7.36
407
+ 1258.0,33.11,172.57,0.0,12.0,28.12,168.92,218.18,36.63,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,40.0,0.0,1,7.41,PD Salt,7.28
408
+ 92.0,23.0,127.78,0.0,0.0,12.5,55.56,100.0,34.72,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,2.96,PHKD Mendis,3.35
409
+ 612.0,18.55,153.0,0.0,3.0,20.0,20.0,161.33,38.5,83.0,8.93,29.67,19.94,38.67,10.79,8.74,8.0,48.0,73.0,3,15.11,PJ Cummins,14.69
410
+ 26.0,3.25,59.09,0.0,0.0,2.27,110.0,62.86,54.55,44.0,8.88,28.8,19.45,39.49,11.36,8.8,4.0,14.0,42.0,2,7.15,PJ Sangwan,7.0
411
+ 273.0,14.37,114.71,0.0,1.0,10.5,98.31,183.33,36.13,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,19.0,0.0,0,3.77,PK Garg,3.52
412
+ 97.0,32.33,134.72,0.0,1.0,20.83,117.5,140.0,40.28,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,4.63,PN Mankad,4.52
413
+ 624.0,10.95,111.23,0.0,0.0,13.55,114.29,124.77,43.67,201.0,8.07,25.77,19.15,35.27,10.02,7.68,15.0,86.0,191.0,3,25.57,PP Chawla,25.69
414
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,11.01,24.17,13.17,45.57,9.23,12.3,1.0,0.0,3.0,0,1.53,PP Hinge,1.53
415
+ 16.0,1.6,36.36,0.0,0.0,0.0,110.0,39.02,65.91,99.0,7.58,24.23,19.18,37.28,9.42,7.26,8.0,19.0,90.0,2,13.64,PP Ojha,13.35
416
+ 1892.0,24.57,147.81,0.0,14.0,23.36,143.43,163.64,37.73,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,79.0,0.0,1,6.91,PP Shaw,6.63
417
+ 92.0,11.5,102.22,0.0,0.0,12.22,97.3,118.75,48.89,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,9.0,0.0,0,2.58,PR Shah,2.93
418
+ 49.0,49.0,136.11,0.0,0.0,22.22,110.0,75.0,36.11,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,2.0,0.0,0,5.07,PR Veer,4.89
419
+ 18.0,18.0,47.37,0.0,0.0,2.63,110.0,42.86,60.53,28.0,7.87,30.93,23.57,32.58,12.5,7.82,2.0,6.0,33.0,2,5.54,PV Tambe,5.57
420
+ 53.0,17.67,117.78,0.0,0.0,13.33,110.0,120.0,42.22,15.0,9.75,43.87,27.0,40.74,11.58,9.56,1.0,11.0,20.0,0,5.59,PVD Chameera,5.49
421
+ 81.0,5.4,92.05,0.0,0.0,9.09,110.0,104.88,46.59,47.0,8.47,24.13,17.09,34.99,8.32,7.87,3.0,19.0,37.0,2,8.58,PWH de Silva,8.66
422
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,11.0,9.44,42.91,27.27,38.33,14.57,7.9,0.0,0.0,17.0,0,2.9,Pankaj Singh,2.12
423
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,4.0,8.27,68.25,49.5,31.31,11.0,8.23,0.0,0.0,11.0,0,2.45,Parvez Rasool,2.16
424
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,21.0,8.47,22.67,16.05,41.25,10.82,7.59,3.0,0.0,14.0,2,4.15,Prince Yadav,4.37
425
+ 828.0,33.12,192.56,1.0,5.0,32.09,189.62,120.0,36.05,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,25.0,0.0,1,6.7,Priyansh Arya,6.7
426
+ 3444.0,31.31,134.69,3.0,24.0,18.65,129.2,206.1,38.8,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,118.0,0.0,1,10.0,Q de Kock,10.72
427
+ 833.0,13.44,118.32,0.0,1.0,13.21,102.38,134.5,36.51,205.0,7.28,27.91,22.99,35.35,9.06,6.93,10.0,93.0,217.0,3,26.32,R Ashwin,26.12
428
+ 342.0,11.79,120.42,0.0,0.0,13.03,100.0,155.78,36.62,82.0,7.55,25.11,19.95,28.55,8.83,7.19,8.0,47.0,91.0,2,13.43,R Bhatia,13.66
429
+ 210.0,21.0,112.3,0.0,0.0,13.37,110.0,138.61,44.92,27.0,8.36,34.15,24.52,32.93,11.11,8.14,0.0,22.0,36.0,2,6.89,R Dhawan,7.04
430
+ 2174.0,28.23,115.76,0.0,11.0,15.81,106.81,179.78,41.53,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,82.0,0.0,1,6.42,R Dravid,6.04
431
+ 159.0,19.88,92.98,0.0,1.0,8.77,73.91,117.02,40.35,14.0,9.46,39.86,25.29,36.16,11.25,8.61,1.0,13.0,18.0,0,4.13,R McLaren,4.05
432
+ 1687.0,24.81,139.54,0.0,7.0,17.7,119.73,161.73,35.48,11.0,9.44,46.91,29.82,24.39,12.4,8.0,0.0,81.0,34.0,1,6.15,R Parag,6.6
433
+ 486.0,20.25,140.06,0.0,1.0,19.02,115.38,188.06,42.36,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,28.0,0.0,0,3.65,R Powell,3.88
434
+ 51.0,10.2,104.08,0.0,0.0,10.2,110.0,103.57,48.98,17.0,7.14,18.76,15.76,51.12,11.22,6.28,1.0,7.0,12.0,0,5.74,R Rampaul,5.71
435
+ 413.0,25.81,142.91,0.0,2.0,19.38,136.19,266.67,34.26,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,18.0,0.0,0,5.43,R Ravindra,4.76
436
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,32.0,8.77,20.47,14.0,31.47,11.07,7.83,2.0,0.0,25.0,2,5.43,R Sai Kishore,5.32
437
+ 270.0,16.88,117.39,0.0,0.0,12.17,0.0,144.44,37.83,6.0,10.06,38.83,23.17,22.3,18.46,4.0,0.0,24.0,14.0,0,3.94,R Sathish,4.11
438
+ 66.0,6.0,88.0,0.0,0.0,10.67,110.0,80.6,61.33,42.0,7.11,26.19,22.1,37.07,9.15,6.58,1.0,19.0,44.0,2,8.58,R Sharma,8.29
439
+ 224.0,22.4,200.0,0.0,1.0,30.36,110.0,238.57,31.25,15.0,12.14,39.4,19.47,30.48,14.7,7.8,2.0,16.0,22.0,0,6.71,R Shepherd,6.73
440
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,10.85,31.0,17.14,36.67,16.67,8.8,0.0,0.0,7.0,0,0.76,R Shukla,1.63
441
+ 1161.0,22.76,135.47,0.0,1.0,17.39,92.86,171.0,36.17,36.0,7.95,31.03,23.42,32.03,6.46,6.53,4.0,82.0,52.0,3,10.74,R Tewatia,10.79
442
+ 310.0,11.92,113.14,0.0,0.0,10.95,110.0,121.94,37.59,127.0,8.58,23.94,16.75,37.66,10.7,7.3,15.0,42.0,104.0,2,18.62,R Vinay Kumar,18.58
443
+ 3392.0,27.14,130.06,0.0,5.0,14.15,104.79,159.37,31.83,185.0,7.74,29.11,22.58,33.06,9.2,7.32,18.0,200.0,232.0,3,27.86,RA Jadeja,27.63
444
+ 2291.0,26.64,138.43,0.0,12.0,18.97,137.7,168.0,36.44,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,98.0,0.0,1,5.65,RA Tripathi,5.95
445
+ 129.0,8.06,104.03,0.0,0.0,14.52,110.0,111.83,54.03,76.0,7.86,29.21,22.3,35.22,9.09,7.18,6.0,22.0,79.0,2,12.21,RD Chahar,12.27
446
+ 2680.0,39.41,136.04,2.0,21.0,17.72,126.1,183.76,35.43,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,78.0,0.0,1,8.23,RD Gaikwad,8.29
447
+ 525.0,29.17,147.89,0.0,4.0,23.94,149.61,50.0,44.23,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,19.0,0.0,1,5.14,RD Rickelton,5.2
448
+ 83.0,13.83,113.7,0.0,1.0,19.18,115.62,120.0,54.79,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,6.0,0.0,0,3.62,RE Levi,3.42
449
+ 159.0,14.45,112.77,0.0,0.0,13.48,102.56,130.56,44.68,25.0,6.98,20.6,17.72,35.89,8.95,8.89,2.0,15.0,21.0,2,7.12,RE van der Merwe,7.3
450
+ 7185.0,28.86,132.64,2.0,48.0,17.8,123.0,198.0,37.95,16.0,8.18,28.88,21.19,27.73,10.4,7.62,2.0,270.0,32.0,1,15.91,RG Sharma,15.32
451
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,2.0,9.65,55.5,34.5,37.68,10.8,9.6,0.0,0.0,3.0,0,0.9,RJ Gleeson,1.22
452
+ 117.0,9.75,105.41,0.0,0.0,8.11,110.0,117.81,41.44,47.0,7.82,23.09,17.7,46.88,9.41,6.84,7.0,21.0,37.0,2,9.78,RJ Harris,9.71
453
+ 32.0,10.67,106.67,0.0,0.0,13.33,110.0,120.0,43.33,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,3.33,RJ Peterson,3.37
454
+ 103.0,14.71,100.98,0.0,1.0,14.71,89.47,120.0,52.94,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,7.0,0.0,0,2.77,RJ Quiney,2.88
455
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,5.0,11.1,44.4,24.0,36.67,14.25,8.73,0.0,0.0,6.0,0,1.29,RJW Topley,0.99
456
+ 1318.0,32.15,143.26,0.0,6.0,18.7,127.27,191.96,33.8,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,58.0,0.0,1,5.49,RK Singh,5.47
457
+ 1349.0,32.12,158.52,1.0,11.0,21.03,119.55,162.07,31.73,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,45.0,0.0,1,6.5,RM Patidar,6.68
458
+ 326.0,19.18,138.72,0.0,1.0,17.45,85.71,173.87,32.77,3.0,7.23,31.33,26.0,28.21,12.0,9.0,0.0,21.0,10.0,0,5.31,RN ten Doeschate,5.31
459
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,21.0,9.6,29.57,18.48,40.21,12.0,8.42,1.0,0.0,18.0,2,2.88,RP Meredith,3.52
460
+ 52.0,3.47,68.42,0.0,0.0,3.95,110.0,75.76,51.32,100.0,8.17,24.17,17.75,44.51,9.55,7.38,12.0,28.0,82.0,2,14.33,RP Singh,14.34
461
+ 3756.0,33.24,146.32,2.0,20.0,20.06,119.41,203.87,34.44,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,131.0,0.0,1,8.77,RR Pant,8.93
462
+ 67.0,22.33,104.69,0.0,0.0,10.94,110.0,120.75,42.19,15.0,7.58,35.87,28.4,40.85,10.0,7.27,0.0,9.0,26.0,0,6.46,RR Powar,6.3
463
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,9.24,30.57,19.86,29.5,12.21,11.33,0.0,0.0,10.0,0,1.79,RR Raje,1.81
464
+ 473.0,22.52,154.58,0.0,2.0,22.88,130.43,215.38,37.58,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,22.0,0.0,0,4.84,RR Rossouw,4.69
465
+ 73.0,24.33,97.33,0.0,0.0,9.33,106.38,120.0,41.33,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,4.0,0.0,0,3.08,RR Sarwan,3.08
466
+ 531.0,27.95,117.22,0.0,3.0,12.14,94.44,161.54,35.32,13.0,8.77,23.15,15.85,32.04,10.17,8.0,1.0,22.0,14.0,1,6.4,RS Bopara,6.37
467
+ 91.0,11.38,71.09,0.0,0.0,5.47,67.05,120.0,53.12,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,9.0,0.0,0,2.13,RT Ponting,2.17
468
+ 50.0,7.14,98.04,0.0,0.0,11.76,0.0,125.71,49.02,6.0,8.12,21.67,16.0,39.58,20.0,4.0,0.0,9.0,9.0,0,4.38,RV Gomez,4.3
469
+ 80.0,16.0,109.59,0.0,0.0,10.96,110.0,132.43,35.62,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,7.0,0.0,0,3.4,RV Patel,3.4
470
+ 4954.0,27.22,130.92,0.0,27.0,17.52,123.26,177.35,38.69,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,197.0,0.0,1,8.97,RV Uthappa,9.19
471
+ 363.0,21.35,134.44,0.0,2.0,20.74,127.88,120.0,49.63,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,18.0,0.0,0,3.97,Rahmanullah Gurbaz,3.96
472
+ 299.0,18.69,145.15,0.0,0.0,17.48,80.0,186.36,34.47,7.0,9.34,13.57,8.71,31.15,8.07,9.0,1.0,26.0,6.0,0,6.11,Ramandeep Singh,6.22
473
+ 613.0,13.62,157.58,0.0,1.0,21.85,110.0,165.89,39.85,174.0,7.31,23.71,19.47,37.58,8.59,7.15,18.0,69.0,144.0,3,25.11,Rashid Khan,25.15
474
+ 40.0,8.0,100.0,0.0,0.0,12.5,110.0,142.11,47.5,17.0,9.95,32.29,19.47,32.33,10.12,8.95,3.0,6.0,18.0,0,4.9,Rasikh Salam,4.54
475
+ 45.0,4.09,65.22,0.0,0.0,5.8,110.0,66.67,63.77,89.0,8.33,28.02,20.18,35.3,11.13,7.73,6.0,18.0,84.0,2,12.51,Ravi Bishnoi,12.24
476
+ 136.0,17.0,121.43,0.0,1.0,14.29,106.45,158.54,40.18,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,12.0,0.0,0,4.34,S Anirudha,3.87
477
+ 59.0,19.67,103.51,0.0,0.0,12.28,110.0,112.2,42.11,48.0,8.34,22.02,15.83,39.74,9.86,7.64,5.0,10.0,38.0,2,9.43,S Aravind,9.77
478
+ 63.0,12.6,140.0,0.0,0.0,20.0,110.0,141.18,42.22,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,6.0,0.0,0,4.04,S Arora,3.95
479
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,11.0,7.65,29.91,23.45,44.19,11.0,7.68,1.0,0.0,12.0,0,3.23,S Badree,3.22
480
+ 1441.0,30.02,119.29,0.0,11.0,15.07,82.17,163.68,37.91,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,65.0,0.0,1,6.92,S Badrinath,6.24
481
+ 25.0,8.33,80.65,0.0,0.0,12.9,80.65,120.0,58.06,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,3.0,0.0,0,2.99,S Chanderpaul,2.68
482
+ 6769.0,35.07,127.62,2.0,51.0,17.36,121.69,165.78,37.14,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,221.0,0.0,1,13.49,S Dhawan,12.86
483
+ 2009.0,30.44,140.69,0.0,10.0,17.51,100.0,159.26,35.85,7.0,10.83,37.14,20.57,22.92,12.35,9.0,1.0,83.0,17.0,1,6.38,S Dube,6.34
484
+ 180.0,13.85,106.51,0.0,0.0,12.43,42.86,135.23,39.64,53.0,8.22,25.62,18.7,32.9,7.58,7.33,5.0,22.0,51.0,2,9.7,S Gopal,9.89
485
+ 20.0,6.67,55.56,0.0,0.0,2.78,110.0,58.06,63.89,63.0,8.79,28.13,19.19,33.91,9.26,9.2,5.0,9.0,55.0,2,9.45,S Kaul,8.47
486
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,8.94,50.67,34.0,35.29,16.67,8.75,1.0,0.0,10.0,0,1.54,S Kaushik,1.79
487
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,5.0,9.78,45.0,27.6,35.51,10.25,10.83,0.0,0.0,9.0,0,1.1,S Ladda,1.42
488
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,14.0,8.49,21.21,15.0,36.67,19.0,8.29,2.0,0.0,9.0,0,2.92,S Lamichhane,3.23
489
+ 39.0,2.44,44.83,0.0,0.0,2.3,110.0,44.23,65.52,54.0,7.63,33.33,26.2,33.14,12.0,7.63,2.0,20.0,70.0,2,7.08,S Nadeem,9.6
490
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,11.49,33.83,17.67,35.85,16.5,9.08,1.0,0.0,6.0,0,2.14,S Narwal,1.7
491
+ 91.0,18.2,115.19,0.0,0.0,12.66,87.5,148.78,40.51,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,3.73,S Rana,3.55
492
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,8.0,7.69,27.88,21.75,34.48,11.0,7.2,0.0,0.0,8.0,0,2.52,S Randiv,2.83
493
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,8.0,9.18,32.12,21.0,44.64,11.0,9.46,1.0,0.0,10.0,0,3.01,S Sandeep Warrier,2.54
494
+ 368.0,20.44,127.34,0.0,2.0,17.99,128.45,44.44,47.06,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,20.0,0.0,0,3.91,S Sohal,3.65
495
+ 34.0,11.33,61.82,0.0,0.0,10.91,110.0,62.96,74.55,43.0,8.33,28.4,20.47,47.27,12.0,7.65,2.0,12.0,44.0,2,6.98,S Sreesanth,7.13
496
+ 31.0,15.5,86.11,0.0,0.0,8.33,116.67,120.0,44.44,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,2.0,0.0,0,3.2,S Sriram,2.89
497
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,8.73,50.67,34.83,47.37,17.45,8.38,0.0,0.0,14.0,0,2.07,S Tyagi,1.98
498
+ 145.0,18.12,133.03,0.0,1.0,22.02,131.71,120.0,44.95,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,3.55,S Vidyut,3.88
499
+ 423.0,22.26,125.52,0.0,2.0,19.58,128.21,120.0,44.21,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,19.0,0.0,0,4.01,SA Asnodkar,3.88
500
+ 4468.0,34.37,148.09,2.0,30.0,21.31,135.1,195.47,34.14,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,158.0,0.0,1,10.4,SA Yadav,10.68
501
+ 49.0,8.17,84.48,0.0,0.0,6.9,110.0,170.59,48.28,6.0,8.84,36.83,25.0,38.0,13.33,5.0,0.0,7.0,9.0,0,3.12,SB Bangar,3.15
502
+ 189.0,27.0,173.39,0.0,0.0,24.77,233.33,198.53,28.44,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,13.0,0.0,0,5.47,SB Dubey,5.16
503
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,50.0,8.15,29.48,21.7,32.72,12.68,7.26,3.0,0.0,57.0,2,7.37,SB Jakati,7.03
504
+ 131.0,18.71,99.24,0.0,0.0,9.85,73.91,116.67,38.64,9.0,7.72,30.89,24.0,39.35,10.14,6.09,1.0,10.0,11.0,0,4.55,SB Styris,4.79
505
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,5.0,8.65,29.4,20.4,49.02,13.5,8.0,1.0,0.0,8.0,0,2.43,SB Wagh,2.41
506
+ 1349.0,24.98,107.32,0.0,7.0,14.24,97.7,175.38,47.26,12.0,8.04,30.83,23.0,29.71,25.0,8.17,2.0,56.0,20.0,1,6.82,SC Ganguly,6.84
507
+ 99.0,14.14,112.5,0.0,0.0,13.64,58.33,126.67,39.77,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,2.98,SD Chitnis,3.09
508
+ 183.0,22.88,150.0,0.0,0.0,19.67,138.57,100.0,36.89,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,9.0,0.0,0,3.75,SD Hope,4.0
509
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,9.0,7.26,25.0,20.67,40.86,9.67,6.33,0.0,0.0,8.0,0,2.7,SE Bond,3.04
510
+ 2489.0,38.29,133.39,1.0,20.0,18.6,112.66,163.46,37.14,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,69.0,0.0,1,8.06,SE Marsh,8.15
511
+ 500.0,22.73,135.87,0.0,1.0,17.93,26.32,148.47,42.39,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,26.0,0.0,1,3.9,SE Rutherford,4.34
512
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,5.0,10.26,57.8,33.8,39.05,9.07,10.21,0.0,0.0,9.0,0,1.84,SH Johnson,1.62
513
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,15.0,9.45,29.6,18.8,37.59,11.43,9.59,0.0,0.0,14.0,0,2.63,SJ Srivastava,2.65
514
+ 5536.0,33.15,137.54,1.0,39.0,17.64,129.17,173.37,33.14,30.0,7.53,37.97,30.27,32.93,8.97,6.76,0.0,200.0,69.0,3,15.82,SK Raina,15.9
515
+ 71.0,14.2,105.97,0.0,0.0,16.42,107.81,120.0,56.72,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,2.79,SK Rasheed,3.13
516
+ 42.0,5.25,72.41,0.0,0.0,6.9,110.0,75.47,58.62,73.0,7.75,26.63,20.63,35.06,9.76,7.68,7.0,14.0,75.0,2,11.02,SK Trivedi,11.08
517
+ 198.0,10.42,92.96,0.0,0.0,9.39,110.0,102.65,46.95,60.0,7.36,24.42,19.9,37.02,10.05,7.16,5.0,27.0,54.0,2,10.63,SK Warne,10.49
518
+ 88.0,7.33,88.89,0.0,0.0,11.11,110.0,89.89,55.56,188.0,7.4,18.54,15.04,43.07,8.19,6.51,24.0,20.0,122.0,2,26.2,SL Malinga,26.47
519
+ 997.0,24.32,136.39,0.0,6.0,17.24,110.06,186.8,35.02,63.0,9.84,32.68,19.92,33.15,11.39,8.37,7.0,53.0,63.0,3,12.77,SM Curran,12.79
520
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,3.0,7.4,24.67,20.0,56.67,8.67,2.33,0.0,0.0,3.0,0,2.79,SM Harwood,2.69
521
+ 241.0,24.1,130.27,0.0,2.0,18.38,129.75,130.77,43.24,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,11.0,0.0,0,4.43,SM Katich,4.05
522
+ 147.0,18.38,132.43,0.0,0.0,18.02,50.0,205.71,37.84,13.0,6.67,23.62,21.23,47.83,11.0,6.51,1.0,8.0,13.0,0,6.33,SM Pollock,6.48
523
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,9.0,6.59,23.44,21.33,39.06,7.5,5.29,0.0,0.0,8.0,0,3.78,SMSM Senanayake,3.76
524
+ 746.0,20.72,137.13,0.0,2.0,19.49,137.78,184.83,35.66,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,43.0,0.0,1,4.4,SN Khan,4.69
525
+ 339.0,12.11,132.42,0.0,1.0,17.19,0.0,139.42,37.5,121.0,9.52,28.71,18.1,35.71,11.02,9.28,10.0,42.0,107.0,2,17.53,SN Thakur,17.7
526
+ 1560.0,26.9,147.73,0.0,5.0,18.37,105.63,178.65,34.38,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,84.0,0.0,1,5.23,SO Hetmyer,5.2
527
+ 196.0,21.78,120.99,0.0,0.0,18.52,116.0,120.0,48.15,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,10.0,0.0,0,2.93,SP Fleming,3.47
528
+ 293.0,14.65,100.0,0.0,1.0,11.95,97.3,78.57,44.71,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,21.0,0.0,0,2.36,SP Goswami,2.88
529
+ 61.0,10.17,107.02,0.0,0.0,10.53,111.11,95.0,35.09,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,2.76,SP Jackson,3.06
530
+ 1820.0,18.57,162.79,1.0,7.0,27.82,164.78,92.38,46.42,221.0,6.92,23.59,20.46,39.68,7.96,6.71,18.0,122.0,194.0,3,30.26,SP Narine,29.81
531
+ 2495.0,31.99,129.21,1.0,11.0,14.81,120.71,173.67,31.18,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,93.0,0.0,1,6.34,SPD Smith,6.8
532
+ 2334.0,32.87,120.25,1.0,13.0,16.74,114.85,169.23,39.82,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,78.0,0.0,1,7.08,SR Tendulkar,7.05
533
+ 3880.0,31.04,138.52,4.0,21.0,20.24,115.16,187.9,41.56,107.0,8.11,25.63,18.96,41.89,10.35,7.19,12.0,141.0,105.0,3,23.02,SR Watson,22.98
534
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,8.85,29.5,20.0,49.17,16.0,7.71,0.0,0.0,6.0,0,2.02,SS Cottrell,2.14
535
+ 4044.0,33.98,135.12,0.0,31.0,16.94,110.18,193.13,34.05,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,138.0,0.0,1,9.08,SS Iyer,8.87
536
+ 126.0,14.0,120.0,0.0,0.0,14.29,87.5,121.05,45.71,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,10.0,0.0,0,3.02,SS Prabhudessai,3.26
537
+ 1494.0,30.49,120.97,0.0,8.0,13.04,109.63,151.59,34.66,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,73.0,0.0,1,5.26,SS Tiwary,5.62
538
+ 768.0,26.48,145.18,1.0,4.0,23.25,139.85,120.0,47.45,16.0,8.08,24.75,18.38,29.25,10.71,11.5,3.0,30.0,21.0,1,7.95,ST Jayasuriya,7.98
539
+ 880.0,20.0,129.03,0.0,0.0,14.81,69.39,160.0,36.8,28.0,7.71,27.25,21.21,34.34,10.14,7.41,1.0,66.0,63.0,3,8.3,STR Binny,11.37
540
+ 5008.0,31.9,140.83,5.0,26.0,18.17,127.86,195.83,34.39,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,179.0,0.0,1,11.79,SV Samson,11.69
541
+ 503.0,19.35,130.65,0.0,3.0,15.58,125.64,165.22,36.1,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,27.0,0.0,1,4.08,SW Billings,4.56
542
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,26.0,8.47,25.69,18.19,46.93,8.67,8.12,4.0,0.0,21.0,2,5.63,SW Tait,5.27
543
+ 144.0,14.4,125.22,0.0,0.0,13.91,0.0,184.78,38.26,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,11.0,0.0,0,3.23,Sachin Baby,3.49
544
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,8.32,21.0,15.14,40.57,7.33,7.71,1.0,0.0,4.0,0,3.41,Sakib Hussain,3.21
545
+ 193.0,27.57,120.62,0.0,1.0,20.0,110.28,200.0,46.88,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,7.0,0.0,0,4.95,Salman Butt,4.65
546
+ 381.0,29.31,139.56,0.0,3.0,19.05,56.25,186.27,40.29,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,16.0,0.0,0,3.87,Sameer Rizvi,4.28
547
+ 60.0,12.0,80.0,0.0,0.0,5.33,110.0,80.0,41.33,169.0,8.16,25.54,18.78,39.95,10.71,7.11,17.0,26.0,141.0,2,21.63,Sandeep Sharma,22.18
548
+ 560.0,18.67,121.21,0.0,1.0,11.9,80.56,156.85,34.63,22.0,9.71,44.05,27.23,27.55,8.28,9.9,2.0,39.0,46.0,3,7.59,Shahbaz Ahmed,7.59
549
+ 81.0,10.12,176.09,0.0,0.0,28.26,226.32,220.0,43.48,9.0,7.9,26.33,20.0,36.11,7.0,7.0,1.0,9.0,10.0,0,7.4,Shahid Afridi,7.54
550
+ 795.0,20.38,125.2,0.0,2.0,14.8,88.46,150.55,33.39,71.0,7.54,26.25,20.9,35.24,10.22,7.08,3.0,52.0,70.0,3,13.07,Shakib Al Hasan,12.98
551
+ 843.0,42.15,156.4,0.0,5.0,20.22,137.14,197.03,29.5,4.0,8.95,22.75,15.25,26.23,15.5,9.0,0.0,38.0,6.0,1,6.46,Shashank Singh,6.5
552
+ 51.0,5.67,91.07,0.0,0.0,10.71,110.0,102.13,53.57,33.0,8.86,29.03,19.67,41.14,11.41,8.13,1.0,11.0,32.0,2,6.39,Shivam Mavi,6.88
553
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,4.0,8.68,41.25,28.5,32.46,8.33,2.0,0.0,0.0,5.0,0,2.11,Shivam Sharma,2.15
554
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,9.47,30.0,19.0,29.32,11.0,9.0,1.0,0.0,7.0,0,2.54,Shivang Kumar,2.2
555
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,5.0,9.06,30.8,20.4,34.31,20.0,10.5,0.0,0.0,7.0,0,1.8,Shoaib Ahmed,1.77
556
+ 52.0,13.0,113.04,0.0,0.0,10.87,116.67,50.0,30.43,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,3.03,Shoaib Malik,3.08
557
+ 4196.0,40.35,138.71,4.0,29.0,17.69,130.55,157.21,31.7,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,121.0,0.0,1,10.82,Shubman Gill,10.9
558
+ 182.0,26.0,133.82,0.0,1.0,14.71,129.41,125.93,38.24,3.0,10.31,48.67,28.33,27.06,11.0,14.0,0.0,9.0,7.0,0,4.01,Sikandar Raza,4.16
559
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,12.0,10.15,34.25,20.25,44.86,13.0,9.88,1.0,0.0,14.0,0,2.18,Simarjeet Singh,2.45
560
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,24.0,6.68,11.46,10.29,52.63,6.88,6.61,6.0,0.0,11.0,2,6.6,Sohail Tanvir,6.51
561
+ 43.0,10.75,138.71,0.0,0.0,22.58,160.0,77.78,38.71,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,3.46,Sunny Singh,3.9
562
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,26.0,8.66,40.12,27.81,35.27,8.05,8.0,4.0,0.0,34.0,2,5.17,Suyash Sharma,5.24
563
+ 51.0,10.2,113.33,0.0,0.0,13.33,110.0,136.84,44.44,7.0,8.93,34.43,23.14,24.07,11.0,8.54,0.0,9.0,14.0,0,5.07,Swapnil Singh,4.73
564
+ 48.0,16.0,88.89,0.0,0.0,14.81,90.57,120.0,61.11,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,3.0,0.0,0,3.25,T Kohler-Cadmore,2.85
565
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,82.0,9.12,28.26,18.6,32.33,10.36,8.34,9.0,0.0,71.0,2,10.58,T Natarajan,10.79
566
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,3.0,9.25,61.67,40.0,26.67,15.0,8.0,0.0,0.0,5.0,0,1.66,T Shamsi,1.5
567
+ 912.0,45.6,155.9,0.0,5.0,18.8,121.88,216.74,24.62,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,37.0,0.0,1,5.86,T Stubbs,5.89
568
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,10.0,7.29,16.4,13.5,44.44,11.54,5.73,1.0,0.0,6.0,0,2.34,T Thushara,2.84
569
+ 86.0,9.56,102.38,0.0,0.0,9.52,110.0,102.99,44.05,152.0,8.52,25.76,18.14,42.64,10.72,7.43,13.0,24.0,122.0,2,19.58,TA Boult,19.95
570
+ 120.0,10.91,113.21,0.0,0.0,11.32,110.0,135.06,42.45,57.0,8.83,31.12,21.16,39.39,10.85,8.11,8.0,19.0,54.0,2,9.84,TG Southee,9.98
571
+ 1029.0,36.75,174.41,0.0,2.0,23.9,110.0,202.9,31.19,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,51.0,0.0,1,5.75,TH David,5.82
572
+ 127.0,25.4,118.69,0.0,1.0,12.15,110.0,131.82,33.64,13.0,10.89,33.23,18.31,24.79,13.61,9.57,1.0,10.0,13.0,0,4.83,TK Curran,4.86
573
+ 45.0,7.5,109.76,0.0,0.0,17.07,116.22,50.0,53.66,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,6.0,0.0,0,3.63,TL Seifert,3.36
574
+ 676.0,22.53,117.98,0.0,2.0,14.14,102.5,131.51,42.06,7.0,7.92,28.29,21.43,29.33,12.0,7.0,0.0,39.0,11.0,1,5.42,TL Suman,5.32
575
+ 1153.0,28.12,115.18,0.0,9.0,16.38,108.15,188.37,45.05,5.0,8.15,73.6,54.2,29.89,11.54,7.15,0.0,50.0,25.0,1,6.31,TM Dilshan,6.29
576
+ 1332.0,32.49,161.45,1.0,8.0,25.58,169.57,195.83,36.73,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,45.0,0.0,1,7.17,TM Head,7.21
577
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,1.0,11.74,137.0,70.0,27.14,14.62,10.0,0.0,0.0,3.0,0,0.2,TP Sudhindra,0.47
578
+ 75.0,15.0,131.58,0.0,0.0,19.3,20.0,182.14,43.86,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,5.0,0.0,0,4.04,TR Birt,3.89
579
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,11.0,10.02,31.73,19.0,35.89,10.75,8.83,1.0,0.0,10.0,0,2.71,TS Mills,2.64
580
+ 53.0,17.67,155.88,0.0,0.0,17.65,110.0,155.88,35.29,59.0,9.97,30.0,18.05,38.59,11.59,8.9,6.0,9.0,50.0,2,10.41,TU Deshpande,10.39
581
+ 24.0,24.0,77.42,0.0,0.0,9.68,76.0,120.0,54.84,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,1.0,0.0,0,3.18,Tanush Kotian,3.02
582
+ 1680.0,38.18,145.2,1.0,8.0,18.58,123.4,196.32,31.89,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,58.0,0.0,1,6.78,Tilak Varma,6.61
583
+ 300.0,15.0,100.33,0.0,1.0,13.71,94.8,87.5,51.84,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,20.0,0.0,0,2.93,UBT Chand,2.95
584
+ 127.0,25.4,128.28,0.0,0.0,17.17,137.5,120.0,37.37,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,6.0,0.0,0,4.0,UT Khawaja,3.89
585
+ 208.0,10.4,103.48,0.0,0.0,12.44,110.0,114.29,47.76,163.0,8.72,27.25,18.75,41.28,11.11,7.95,21.0,48.0,147.0,2,23.55,UT Yadav,22.57
586
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,14.0,8.8,14.14,9.64,43.7,11.38,6.43,2.0,0.0,6.0,0,3.43,Umar Gul,3.34
587
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,31.0,9.53,25.32,15.94,44.13,10.75,12.92,4.0,0.0,26.0,2,5.2,Umran Malik,4.76
588
+ 72.0,18.0,194.59,0.0,0.0,32.43,176.92,120.0,40.54,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,4.0,0.0,0,4.55,Urvil Patel,4.68
589
+ 9022.0,38.07,133.8,8.0,66.0,16.57,123.74,202.63,33.01,5.0,8.87,74.2,50.2,21.91,16.29,6.21,0.0,267.0,26.0,1,18.31,V Kohli,13.6
590
+ 154.0,25.67,173.03,0.0,0.0,29.21,250.0,172.34,35.96,14.0,9.22,31.71,20.64,33.56,5.69,8.74,0.0,9.0,17.0,0,7.95,V Nigam,7.92
591
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,12.0,8.82,25.0,17.0,36.76,9.0,8.47,1.0,0.0,9.0,0,2.82,V Pratap Singh,3.06
592
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,8.96,18.17,12.17,34.25,11.08,9.0,1.0,0.0,5.0,0,2.31,V Puthur,2.46
593
+ 2728.0,27.84,156.78,2.0,16.0,25.29,146.67,235.71,37.36,6.0,10.41,39.33,22.67,33.09,12.6,18.67,0.0,104.0,15.0,1,9.11,V Sehwag,8.95
594
+ 1233.0,26.8,129.52,0.0,7.0,14.29,91.72,172.84,32.35,12.0,8.67,28.67,19.83,33.61,7.64,9.0,0.0,63.0,22.0,1,7.77,V Shankar,7.75
595
+ 652.0,40.75,215.18,2.0,3.0,37.29,218.4,120.0,38.28,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,16.0,0.0,1,6.81,V Suryavanshi,7.0
596
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,1.0,9.0,90.0,60.0,31.67,11.0,5.5,0.0,0.0,3.0,0,1.7,V Viyaskanth,1.63
597
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,49.0,9.5,26.96,17.02,39.93,10.25,8.81,3.0,0.0,39.0,2,6.36,VG Arora,6.35
598
+ 50.0,12.5,70.42,0.0,0.0,5.63,110.0,74.24,59.15,46.0,9.22,33.2,21.61,41.75,12.04,8.65,1.0,12.0,50.0,2,6.88,VR Aaron,7.01
599
+ 1497.0,29.94,137.47,1.0,12.0,18.73,130.65,182.5,38.38,3.0,10.74,48.33,27.0,20.99,11.71,9.0,0.0,57.0,9.0,1,6.29,VR Iyer,7.03
600
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,16.0,9.15,34.31,22.5,33.61,9.24,9.67,2.0,0.0,18.0,0,3.29,VRV Singh,3.12
601
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,7.84,44.67,34.17,42.93,10.29,7.8,0.0,0.0,13.0,0,2.51,VS Malik,2.41
602
+ 282.0,17.62,106.02,0.0,1.0,14.29,100.0,50.0,44.74,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,20.0,0.0,0,3.55,VVS Laxman,3.54
603
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,22.0,9.04,23.23,15.41,37.46,9.29,11.0,2.0,0.0,17.0,2,3.83,VY Mahesh,4.04
604
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,28.0,10.15,28.46,16.82,31.63,12.0,11.33,3.0,0.0,22.0,2,4.43,Vijaykumar Vyshak,4.32
605
+ 56.0,9.33,100.0,0.0,0.0,10.71,47.62,150.0,46.43,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,6.0,0.0,0,3.44,Vishnu Vinod,3.18
606
+ 69.0,69.0,146.81,0.0,1.0,23.4,111.54,120.0,34.04,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,1.0,0.0,0,5.28,Vivrant Sharma,4.95
607
+ 130.0,18.57,107.44,0.0,1.0,14.05,86.46,120.0,46.28,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,8.0,0.0,0,4.07,W Jaffer,3.5
608
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,6.0,12.38,22.0,10.67,26.56,12.86,12.48,1.0,0.0,3.0,0,1.15,W O'Rourke,1.27
609
+ 56.0,11.2,74.67,0.0,0.0,2.67,110.0,92.86,38.67,4.0,8.17,24.5,18.0,34.72,18.5,9.0,0.0,8.0,7.0,0,2.65,WA Mota,2.69
610
+ 65.0,6.5,81.25,0.0,0.0,6.25,78.57,83.67,46.25,40.0,8.03,24.2,18.08,43.15,8.51,7.9,5.0,13.0,33.0,2,7.53,WD Parnell,7.69
611
+ 463.0,28.94,152.81,1.0,2.0,22.11,144.44,100.0,36.63,8.0,9.21,27.62,18.0,34.03,10.29,10.53,0.0,19.0,13.0,0,7.04,WG Jacks,7.06
612
+ 2934.0,24.86,127.79,1.0,13.0,16.68,128.72,156.94,37.67,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,143.0,0.0,1,7.17,WP Saha,7.0
613
+ 81.0,11.57,112.5,0.0,0.0,6.94,110.0,114.58,33.33,22.0,7.74,16.55,12.82,47.52,12.0,6.39,3.0,11.0,13.0,2,6.46,WPUJC Vaas,6.44
614
+ 668.0,18.05,128.21,0.0,1.0,15.36,117.65,153.27,34.17,42.0,7.8,35.67,27.43,34.03,11.48,8.08,4.0,51.0,66.0,3,10.06,Washington Sundar,10.31
615
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,7.0,10.7,56.29,31.57,33.03,9.86,10.58,0.0,0.0,11.0,0,1.15,XC Bartlett,1.31
616
+ 285.0,19.0,110.04,0.0,0.0,11.2,45.45,144.66,39.0,4.0,11.36,31.25,16.5,24.24,11.0,10.0,0.0,20.0,8.0,0,4.65,Y Nagar,4.22
617
+ 985.0,23.45,118.39,0.0,3.0,13.7,82.64,157.87,38.94,7.0,9.39,48.29,30.86,27.78,14.0,9.57,0.0,52.0,20.0,1,5.13,Y Venugopal Rao,5.45
618
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,15.0,8.93,20.73,13.93,44.02,11.21,6.82,3.0,0.0,11.0,0,3.62,YA Abdulla,3.52
619
+ 2472.0,35.83,151.94,2.0,18.0,24.59,156.53,225.0,39.77,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,75.0,0.0,1,9.22,YBK Jaiswal,9.17
620
+ 3222.0,29.29,144.29,1.0,13.0,18.99,146.44,167.91,34.98,46.0,7.55,31.37,24.93,36.53,12.2,6.7,3.0,153.0,82.0,3,13.84,YK Pathan,13.89
621
+ 37.0,6.17,43.02,0.0,0.0,0.0,110.0,52.46,62.79,237.0,8.11,22.59,16.71,34.59,9.91,7.52,25.0,16.0,179.0,2,25.69,YS Chahal,26.29
622
+ 192.0,24.0,108.47,0.0,0.0,16.38,92.14,241.67,53.67,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,10.0,0.0,0,3.77,YV Takawale,3.93
623
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,45.0,9.59,31.38,19.62,37.26,11.32,9.45,3.0,0.0,43.0,2,6.12,Yash Dayal,6.12
624
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,28.0,10.5,27.93,15.96,34.23,11.04,9.79,4.0,0.0,21.0,2,5.13,Yash Thakur,4.69
625
+ 47.0,11.75,72.31,0.0,0.0,7.69,48.65,110.0,56.92,0.0,10.5,50.0,40.0,30.0,11.0,9.0,0.0,4.0,0.0,0,2.8,Yashpal Singh,2.42
626
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,8.0,10.78,32.12,17.88,42.66,14.5,10.33,1.0,0.0,9.0,0,2.45,Yudhvir Singh,1.73
627
+ 2754.0,25.27,130.21,0.0,13.0,17.35,97.41,181.02,42.08,39.0,7.53,27.97,22.28,30.96,8.69,6.6,5.0,126.0,73.0,3,12.86,Yuvraj Singh,13.35
628
+ 117.0,7.8,83.57,0.0,0.0,9.29,0.0,104.12,52.86,119.0,7.8,24.03,18.49,42.23,9.08,6.88,12.0,27.0,99.0,2,16.58,Z Khan,16.59
629
+ 0.0,0.0,0.0,0.0,0.0,0.0,110.0,120.0,30.0,8.0,9.59,41.75,26.12,25.84,12.0,9.0,1.0,0.0,10.0,0,1.76,Zeeshan Ansari,1.73
data/processed/models/shap_auction_beeswarm.png ADDED

Git LFS Details

  • SHA256: 92047a4e9d8136d1cde25c4967d79d19c519f41d17e5e90a2b874f3cf078b569
  • Pointer size: 131 Bytes
  • Size of remote file: 135 kB
data/processed/models/shap_win_beeswarm.png ADDED

Git LFS Details

  • SHA256: ae3790739068e658d08a5417cfb4728efa18fb57e1e00da3ca2b6310f9e805f7
  • Pointer size: 130 Bytes
  • Size of remote file: 43.9 kB
data/processed/models/win_prob_dataset.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/models/win_prob_features.json ADDED
@@ -0,0 +1 @@
 
 
1
+ ["A_form5", "B_form5", "form_diff5", "A_form10", "B_form10", "form_diff10", "A_overall_wr", "B_overall_wr", "overall_wr_diff", "A_venue_wr", "B_venue_wr", "A_venue_exp", "B_venue_exp", "venue_exp_diff", "venue_wr_diff", "venue_bat_first_wr", "A_avg_score", "B_avg_score", "score_diff", "A_avg_wickets", "B_avg_wickets", "wicket_diff", "h2h_wr_A", "h2h_n", "toss_decision_bat", "toss_correct", "A_consistency", "B_consistency", "season_stage"]
data/processed/models/win_prob_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c8b42e317eb65e395c8d14c3b7d0cbd40c12258170de558a91f1ce2248daee0a
3
+ size 4272468
data/processed/models/win_prob_model_uncalibrated.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:916df0d7d9a6a7330b5bd7e2848be2e774ce79dfc2a34e08e0645b7e0ec0a3bf
3
+ size 897593
data/processed/sanity_check.png ADDED

Git LFS Details

  • SHA256: 3e30d28d95878bf6bdde1dd5da5ed576ae5c707692bd9dc81c0e362d071c3dd8
  • Pointer size: 130 Bytes
  • Size of remote file: 39.1 kB
data/processed/team_season_stats.csv ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ season,team,matches_played,matches_won,win_pct,toss_wins,toss_bat_choice
2
+ 2008,Royal Challengers Bangalore,14,4,28.6,5,2
3
+ 2008,Kings XI Punjab,15,10,66.7,8,4
4
+ 2008,Delhi Capitals,14,7,50.0,6,2
5
+ 2008,Mumbai Indians,14,7,50.0,8,1
6
+ 2008,Kolkata Knight Riders,13,6,46.2,6,6
7
+ 2008,Rajasthan Royals,16,13,81.2,11,3
8
+ 2008,Deccan Chargers,14,2,14.3,9,4
9
+ 2008,Chennai Super Kings,16,9,56.2,5,4
10
+ 2009,Chennai Super Kings,14,8,57.1,7,6
11
+ 2009,Royal Challengers Bangalore,16,9,56.2,8,5
12
+ 2009,Delhi Capitals,15,10,66.7,9,4
13
+ 2009,Deccan Chargers,16,9,56.2,10,5
14
+ 2009,Kings XI Punjab,14,7,50.0,6,3
15
+ 2009,Kolkata Knight Riders,13,3,23.1,7,4
16
+ 2009,Mumbai Indians,13,5,38.5,6,6
17
+ 2009,Rajasthan Royals,13,6,46.2,4,2
18
+ 2010,Deccan Chargers,16,8,50.0,9,5
19
+ 2010,Mumbai Indians,16,11,68.8,9,7
20
+ 2010,Kings XI Punjab,14,4,28.6,5,3
21
+ 2010,Kolkata Knight Riders,14,7,50.0,7,6
22
+ 2010,Chennai Super Kings,16,9,56.2,10,7
23
+ 2010,Rajasthan Royals,14,6,42.9,6,5
24
+ 2010,Royal Challengers Bangalore,16,8,50.0,6,1
25
+ 2010,Delhi Capitals,14,7,50.0,8,5
26
+ 2011,Chennai Super Kings,16,11,68.8,9,7
27
+ 2011,Deccan Chargers,14,6,42.9,6,3
28
+ 2011,Kochi Tuskers Kerala,14,6,42.9,8,3
29
+ 2011,Delhi Capitals,14,4,28.6,9,4
30
+ 2011,Pune Warriors India,14,4,28.6,5,2
31
+ 2011,Kolkata Knight Riders,15,8,53.3,7,1
32
+ 2011,Rajasthan Royals,13,6,46.2,7,1
33
+ 2011,Royal Challengers Bangalore,16,10,62.5,6,0
34
+ 2011,Kings XI Punjab,14,7,50.0,10,3
35
+ 2011,Mumbai Indians,16,10,62.5,6,1
36
+ 2012,Chennai Super Kings,18,10,55.6,7,4
37
+ 2012,Kolkata Knight Riders,17,12,70.6,7,4
38
+ 2012,Mumbai Indians,17,10,58.8,11,3
39
+ 2012,Rajasthan Royals,16,7,43.8,10,8
40
+ 2012,Royal Challengers Bangalore,15,8,53.3,6,1
41
+ 2012,Deccan Chargers,15,4,26.7,9,7
42
+ 2012,Pune Warriors India,16,4,25.0,6,4
43
+ 2012,Delhi Capitals,18,11,61.1,10,2
44
+ 2012,Kings XI Punjab,16,8,50.0,8,4
45
+ 2013,Kolkata Knight Riders,16,6,37.5,12,6
46
+ 2013,Royal Challengers Bangalore,16,9,56.2,5,2
47
+ 2013,Sunrisers Hyderabad,17,10,58.8,7,6
48
+ 2013,Delhi Capitals,16,3,18.8,5,3
49
+ 2013,Chennai Super Kings,18,12,66.7,8,5
50
+ 2013,Pune Warriors India,16,4,25.0,9,5
51
+ 2013,Rajasthan Royals,18,11,61.1,11,6
52
+ 2013,Mumbai Indians,19,13,68.4,12,10
53
+ 2013,Kings XI Punjab,16,8,50.0,7,2
54
+ 2014,Mumbai Indians,15,7,46.7,6,3
55
+ 2014,Delhi Capitals,14,2,14.3,4,1
56
+ 2014,Chennai Super Kings,16,10,62.5,10,4
57
+ 2014,Sunrisers Hyderabad,14,6,42.9,7,4
58
+ 2014,Royal Challengers Bangalore,14,5,35.7,9,2
59
+ 2014,Kolkata Knight Riders,16,11,68.8,9,2
60
+ 2014,Rajasthan Royals,14,7,50.0,8,2
61
+ 2014,Kings XI Punjab,17,12,70.6,7,1
62
+ 2015,Kolkata Knight Riders,13,7,53.8,8,1
63
+ 2015,Chennai Super Kings,17,10,58.8,10,7
64
+ 2015,Kings XI Punjab,14,3,21.4,7,3
65
+ 2015,Delhi Capitals,14,5,35.7,5,2
66
+ 2015,Mumbai Indians,16,10,62.5,7,5
67
+ 2015,Royal Challengers Bangalore,16,8,50.0,10,2
68
+ 2015,Rajasthan Royals,14,7,50.0,6,1
69
+ 2015,Sunrisers Hyderabad,14,7,50.0,6,4
70
+ 2016,Mumbai Indians,14,7,50.0,9,2
71
+ 2016,Kolkata Knight Riders,15,8,53.3,6,0
72
+ 2016,Kings XI Punjab,14,4,28.6,6,2
73
+ 2016,Royal Challengers Bangalore,16,9,56.2,6,1
74
+ 2016,Gujarat Lions,16,9,56.2,8,0
75
+ 2016,Delhi Capitals,14,7,50.0,8,0
76
+ 2016,Sunrisers Hyderabad,17,11,64.7,10,3
77
+ 2016,Rising Pune Supergiants,14,5,35.7,7,3
78
+ 2017,Sunrisers Hyderabad,14,8,57.1,5,1
79
+ 2017,Rising Pune Supergiants,16,10,62.5,6,0
80
+ 2017,Gujarat Lions,14,4,28.6,7,1
81
+ 2017,Kings XI Punjab,14,7,50.0,4,0
82
+ 2017,Royal Challengers Bangalore,13,3,23.1,9,4
83
+ 2017,Mumbai Indians,17,12,70.6,11,2
84
+ 2017,Kolkata Knight Riders,16,9,56.2,9,0
85
+ 2017,Delhi Capitals,14,6,42.9,8,3
86
+ 2018,Mumbai Indians,14,6,42.9,5,1
87
+ 2018,Delhi Capitals,14,5,35.7,8,3
88
+ 2018,Royal Challengers Bangalore,14,6,42.9,7,0
89
+ 2018,Rajasthan Royals,15,7,46.7,6,2
90
+ 2018,Kolkata Knight Riders,16,9,56.2,9,0
91
+ 2018,Kings XI Punjab,14,6,42.9,7,1
92
+ 2018,Chennai Super Kings,16,11,68.8,11,1
93
+ 2018,Sunrisers Hyderabad,17,10,58.8,7,2
94
+ 2019,Royal Challengers Bangalore,14,5,35.7,4,0
95
+ 2019,Sunrisers Hyderabad,15,6,40.0,4,0
96
+ 2019,Delhi Capitals,16,10,62.5,10,2
97
+ 2019,Kings XI Punjab,14,6,42.9,6,0
98
+ 2019,Kolkata Knight Riders,14,6,42.9,5,0
99
+ 2019,Mumbai Indians,16,11,68.8,8,3
100
+ 2019,Rajasthan Royals,14,5,35.7,11,2
101
+ 2019,Chennai Super Kings,17,10,58.8,12,3
102
+ 2020,Mumbai Indians,16,11,68.8,8,4
103
+ 2020,Delhi Capitals,17,9,52.9,10,5
104
+ 2020,Royal Challengers Bangalore,15,7,46.7,6,4
105
+ 2020,Rajasthan Royals,14,6,42.9,7,2
106
+ 2020,Kings XI Punjab,14,6,42.9,4,1
107
+ 2020,Sunrisers Hyderabad,16,8,50.0,11,4
108
+ 2020,Kolkata Knight Riders,14,7,50.0,6,4
109
+ 2020,Chennai Super Kings,14,6,42.9,8,3
110
+ 2021,Mumbai Indians,14,7,50.0,8,3
111
+ 2021,Chennai Super Kings,16,11,68.8,6,2
112
+ 2021,Kolkata Knight Riders,17,9,52.9,8,1
113
+ 2021,Punjab Kings,14,6,42.9,5,1
114
+ 2021,Royal Challengers Bangalore,15,9,60.0,10,4
115
+ 2021,Delhi Capitals,16,10,62.5,8,1
116
+ 2021,Rajasthan Royals,14,5,35.7,8,1
117
+ 2021,Sunrisers Hyderabad,14,3,21.4,7,3
118
+ 2022,Chennai Super Kings,14,4,28.6,6,2
119
+ 2022,Mumbai Indians,14,4,28.6,9,0
120
+ 2022,Royal Challengers Bangalore,16,9,56.2,8,2
121
+ 2022,Lucknow Super Giants,15,9,60.0,7,2
122
+ 2022,Rajasthan Royals,17,10,58.8,4,2
123
+ 2022,Kolkata Knight Riders,14,6,42.9,8,1
124
+ 2022,Punjab Kings,14,7,50.0,4,1
125
+ 2022,Gujarat Titans,16,12,75.0,10,4
126
+ 2022,Delhi Capitals,14,7,50.0,8,0
127
+ 2022,Sunrisers Hyderabad,14,6,42.9,10,1
128
+ 2023,Chennai Super Kings,16,10,62.5,10,4
129
+ 2023,Punjab Kings,14,6,42.9,5,1
130
+ 2023,Lucknow Super Giants,15,8,53.3,3,0
131
+ 2023,Rajasthan Royals,14,7,50.0,10,4
132
+ 2023,Mumbai Indians,16,9,56.2,10,1
133
+ 2023,Delhi Capitals,14,5,35.7,7,2
134
+ 2023,Kolkata Knight Riders,14,6,42.9,5,1
135
+ 2023,Sunrisers Hyderabad,14,4,28.6,7,3
136
+ 2023,Gujarat Titans,17,11,64.7,9,2
137
+ 2023,Royal Challengers Bangalore,14,7,50.0,8,3
138
+ 2024,Royal Challengers Bangalore,15,7,46.7,8,2
139
+ 2024,Delhi Capitals,14,7,50.0,7,2
140
+ 2024,Kolkata Knight Riders,14,11,78.6,3,1
141
+ 2024,Rajasthan Royals,15,9,60.0,11,3
142
+ 2024,Gujarat Titans,12,5,41.7,3,0
143
+ 2024,Punjab Kings,14,5,35.7,10,2
144
+ 2024,Chennai Super Kings,14,7,50.0,3,0
145
+ 2024,Sunrisers Hyderabad,16,9,56.2,7,4
146
+ 2024,Lucknow Super Giants,14,7,50.0,9,4
147
+ 2024,Mumbai Indians,14,4,28.6,10,1
148
+ 2025,Kolkata Knight Riders,13,5,38.5,6,2
149
+ 2025,Sunrisers Hyderabad,14,6,42.9,7,2
150
+ 2025,Mumbai Indians,16,9,56.2,8,1
151
+ 2025,Lucknow Super Giants,14,6,42.9,5,1
152
+ 2025,Punjab Kings,18,10,55.6,13,6
153
+ 2025,Rajasthan Royals,14,4,28.6,7,0
154
+ 2025,Royal Challengers Bangalore,15,11,73.3,7,0
155
+ 2025,Gujarat Titans,15,9,60.0,7,0
156
+ 2025,Delhi Capitals,15,6,40.0,8,1
157
+ 2025,Chennai Super Kings,14,4,28.6,6,1
158
+ 2026,Sunrisers Hyderabad,8,5,62.5,1,0
159
+ 2026,Kolkata Knight Riders,8,1,12.5,4,2
160
+ 2026,Chennai Super Kings,8,3,37.5,2,0
161
+ 2026,Gujarat Titans,8,4,50.0,3,0
162
+ 2026,Lucknow Super Giants,8,2,25.0,5,0
163
+ 2026,Mumbai Indians,7,2,28.6,4,0
164
+ 2026,Rajasthan Royals,9,6,66.7,6,2
165
+ 2026,Royal Challengers Bangalore,8,6,75.0,4,0
166
+ 2026,Punjab Kings,8,6,75.0,4,0
167
+ 2026,Delhi Capitals,8,3,37.5,7,1
data/processed/win_prob_features.csv ADDED
The diff for this file is too large to render. See raw diff
 
notebooks/01_setup_and_inspection.ipynb ADDED
@@ -0,0 +1,475 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "id": "efe72401-0379-4732-9c40-17c00ecd6b5a",
7
+ "metadata": {},
8
+ "outputs": [],
9
+ "source": [
10
+ "import pandas as pd\n",
11
+ "import numpy as np\n",
12
+ "import matplotlib.pyplot as plt\n",
13
+ "import seaborn as sns\n",
14
+ "from pathlib import Path\n",
15
+ "\n",
16
+ "RAW = Path(r\"E:\\ipl-analytics\\data\\raw\")\n",
17
+ "PROCESSED = Path(r\"E:\\ipl-analytics\\data\\processed\")\n",
18
+ "PROCESSED.mkdir(parents=True, exist_ok=True)"
19
+ ]
20
+ },
21
+ {
22
+ "cell_type": "code",
23
+ "execution_count": 2,
24
+ "id": "3a243c35-ed5f-46ed-991c-c929cb4b2015",
25
+ "metadata": {},
26
+ "outputs": [
27
+ {
28
+ "name": "stdout",
29
+ "output_type": "stream",
30
+ "text": [
31
+ "=== matches.csv ===\n",
32
+ "Shape : (1208, 20)\n",
33
+ "Columns : ['match_id', 'season', 'city', 'date', 'match_type', 'player_of_match', 'venue', 'team1', 'team2', 'toss_winner', 'toss_decision', 'winner', 'result', 'result_margin', 'target_runs', 'target_overs', 'super_over', 'method', 'umpire1', 'umpire2']\n",
34
+ "\n",
35
+ "=== deliveries ===\n",
36
+ "Shape : (287271, 17)\n",
37
+ "Columns : ['match_id', 'inning', 'batting_team', 'bowling_team', 'over', 'ball', 'batter', 'bowler', 'non_striker', 'batsman_runs', 'extra_runs', 'total_runs', 'extras_type', 'is_wicket', 'player_dismissed', 'dismissal_kind', 'fielder']\n",
38
+ "\n",
39
+ "=== matches datatypes ===\n",
40
+ "match_id int64\n",
41
+ "season str\n",
42
+ "city str\n",
43
+ "date str\n",
44
+ "match_type str\n",
45
+ "player_of_match str\n",
46
+ "venue str\n",
47
+ "team1 str\n",
48
+ "team2 str\n",
49
+ "toss_winner str\n",
50
+ "toss_decision str\n",
51
+ "winner str\n",
52
+ "result str\n",
53
+ "result_margin float64\n",
54
+ "target_runs float64\n",
55
+ "target_overs float64\n",
56
+ "super_over str\n",
57
+ "method str\n",
58
+ "umpire1 str\n",
59
+ "umpire2 str\n",
60
+ "dtype: object \n",
61
+ "\n",
62
+ "=== deliveries datatypes ===\n",
63
+ "match_id int64\n",
64
+ "inning int64\n",
65
+ "batting_team str\n",
66
+ "bowling_team str\n",
67
+ "over int64\n",
68
+ "ball int64\n",
69
+ "batter str\n",
70
+ "bowler str\n",
71
+ "non_striker str\n",
72
+ "batsman_runs int64\n",
73
+ "extra_runs int64\n",
74
+ "total_runs int64\n",
75
+ "extras_type str\n",
76
+ "is_wicket int64\n",
77
+ "player_dismissed str\n",
78
+ "dismissal_kind str\n",
79
+ "fielder str\n",
80
+ "dtype: object \n",
81
+ "\n"
82
+ ]
83
+ }
84
+ ],
85
+ "source": [
86
+ "matches = pd.read_csv(RAW / \"matches.csv\")\n",
87
+ "deliveries = pd.read_csv(RAW / \"deliveries.csv\", low_memory=False)\n",
88
+ "\n",
89
+ "print(\"=== matches.csv ===\")\n",
90
+ "print(f\"Shape : {matches.shape}\")\n",
91
+ "print(f\"Columns : {list(matches.columns)}\\n\")\n",
92
+ "\n",
93
+ "print(\"=== deliveries ===\")\n",
94
+ "print(f\"Shape : {deliveries.shape}\")\n",
95
+ "print(f\"Columns : {list(deliveries.columns)}\\n\")\n",
96
+ "\n",
97
+ "print(\"=== matches datatypes ===\")\n",
98
+ "print(matches.dtypes, \"\\n\")\n",
99
+ "\n",
100
+ "print(\"=== deliveries datatypes ===\")\n",
101
+ "print(deliveries.dtypes, \"\\n\")\n",
102
+ "\n"
103
+ ]
104
+ },
105
+ {
106
+ "cell_type": "code",
107
+ "execution_count": 3,
108
+ "id": "277b0d5b-14af-4ed7-b146-db39e4475946",
109
+ "metadata": {},
110
+ "outputs": [
111
+ {
112
+ "name": "stdout",
113
+ "output_type": "stream",
114
+ "text": [
115
+ "=== nulls in matches ===\n",
116
+ "city 51\n",
117
+ "match_type 113\n",
118
+ "player_of_match 118\n",
119
+ "toss_winner 113\n",
120
+ "toss_decision 113\n",
121
+ "winner 5\n",
122
+ "result_margin 19\n",
123
+ "target_runs 116\n",
124
+ "target_overs 116\n",
125
+ "super_over 113\n",
126
+ "method 1187\n",
127
+ "umpire1 113\n",
128
+ "umpire2 113\n",
129
+ "dtype: int64 \n",
130
+ "\n",
131
+ "=== nulls in deliveries ===\n",
132
+ "extras_type 273146\n",
133
+ "player_dismissed 272973\n",
134
+ "dismissal_kind 272973\n",
135
+ "fielder 276874\n",
136
+ "dtype: int64 \n",
137
+ "\n"
138
+ ]
139
+ }
140
+ ],
141
+ "source": [
142
+ "print(\"=== nulls in matches ===\")\n",
143
+ "null_matches = matches.isnull().sum()\n",
144
+ "print(null_matches[null_matches > 0], \"\\n\")\n",
145
+ "\n",
146
+ "print(\"=== nulls in deliveries ===\")\n",
147
+ "null_deliveries = deliveries.isnull().sum()\n",
148
+ "print(null_deliveries[null_deliveries > 0], \"\\n\")"
149
+ ]
150
+ },
151
+ {
152
+ "cell_type": "code",
153
+ "execution_count": 4,
154
+ "id": "db0f4e9c-e5f0-4f28-b42e-c0c206cdda72",
155
+ "metadata": {},
156
+ "outputs": [
157
+ {
158
+ "name": "stdout",
159
+ "output_type": "stream",
160
+ "text": [
161
+ "=== matches.describe() ===\n",
162
+ " count unique top freq mean \\\n",
163
+ "match_id 1208.0 NaN NaN NaN 953614.823675 \n",
164
+ "season 1208 19 2013 76 NaN \n",
165
+ "city 1157 37 Mumbai 184 NaN \n",
166
+ "date 1208 916 2008-04-19 2 NaN \n",
167
+ "match_type 1095 8 League 1029 NaN \n",
168
+ "player_of_match 1090 291 AB de Villiers 25 NaN \n",
169
+ "venue 1208 59 Eden Gardens 77 NaN \n",
170
+ "team1 1208 19 Chennai Super Kings 140 NaN \n",
171
+ "team2 1208 19 Mumbai Indians 149 NaN \n",
172
+ "toss_winner 1095 19 Mumbai Indians 143 NaN \n",
173
+ "toss_decision 1095 2 field 704 NaN \n",
174
+ "winner 1203 20 Mumbai Indians 155 NaN \n",
175
+ "result 1208 5 wickets 637 NaN \n",
176
+ "result_margin 1189.0 NaN NaN NaN 17.369218 \n",
177
+ "target_runs 1092.0 NaN NaN NaN 165.684066 \n",
178
+ "target_overs 1092.0 NaN NaN NaN 19.759341 \n",
179
+ "super_over 1095 2 N 1081 NaN \n",
180
+ "method 21 1 D/L 21 NaN \n",
181
+ "umpire1 1095 62 AK Chaudhary 115 NaN \n",
182
+ "umpire2 1095 62 S Ravi 83 NaN \n",
183
+ "\n",
184
+ " std min 25% 50% 75% \\\n",
185
+ "match_id 381648.321465 335982.0 548361.75 1082617.5 1304076.25 \n",
186
+ "season NaN NaN NaN NaN NaN \n",
187
+ "city NaN NaN NaN NaN NaN \n",
188
+ "date NaN NaN NaN NaN NaN \n",
189
+ "match_type NaN NaN NaN NaN NaN \n",
190
+ "player_of_match NaN NaN NaN NaN NaN \n",
191
+ "venue NaN NaN NaN NaN NaN \n",
192
+ "team1 NaN NaN NaN NaN NaN \n",
193
+ "team2 NaN NaN NaN NaN NaN \n",
194
+ "toss_winner NaN NaN NaN NaN NaN \n",
195
+ "toss_decision NaN NaN NaN NaN NaN \n",
196
+ "winner NaN NaN NaN NaN NaN \n",
197
+ "result NaN NaN NaN NaN NaN \n",
198
+ "result_margin 22.037405 0.0 6.0 8.0 20.0 \n",
199
+ "target_runs 33.427048 43.0 146.0 166.0 187.0 \n",
200
+ "target_overs 1.581108 5.0 20.0 20.0 20.0 \n",
201
+ "super_over NaN NaN NaN NaN NaN \n",
202
+ "method NaN NaN NaN NaN NaN \n",
203
+ "umpire1 NaN NaN NaN NaN NaN \n",
204
+ "umpire2 NaN NaN NaN NaN NaN \n",
205
+ "\n",
206
+ " max \n",
207
+ "match_id 1426425.0 \n",
208
+ "season NaN \n",
209
+ "city NaN \n",
210
+ "date NaN \n",
211
+ "match_type NaN \n",
212
+ "player_of_match NaN \n",
213
+ "venue NaN \n",
214
+ "team1 NaN \n",
215
+ "team2 NaN \n",
216
+ "toss_winner NaN \n",
217
+ "toss_decision NaN \n",
218
+ "winner NaN \n",
219
+ "result NaN \n",
220
+ "result_margin 146.0 \n",
221
+ "target_runs 288.0 \n",
222
+ "target_overs 20.0 \n",
223
+ "super_over NaN \n",
224
+ "method NaN \n",
225
+ "umpire1 NaN \n",
226
+ "umpire2 NaN \n",
227
+ "\n",
228
+ "=== deliveries.describe() ===\n",
229
+ " count mean std min 25% \\\n",
230
+ "match_id 287271.0 954701.438732 381397.139578 335982.0 548363.0 \n",
231
+ "inning 287271.0 1.482764 0.502517 1.0 1.0 \n",
232
+ "over 287271.0 9.282232 5.686963 0.0 4.0 \n",
233
+ "ball 287271.0 3.628121 1.818273 1.0 2.0 \n",
234
+ "batsman_runs 287271.0 1.283199 1.657209 0.0 0.0 \n",
235
+ "extra_runs 287271.0 0.068214 0.342788 0.0 0.0 \n",
236
+ "total_runs 287271.0 1.351414 1.643276 0.0 0.0 \n",
237
+ "is_wicket 287271.0 0.049772 0.217474 0.0 0.0 \n",
238
+ "\n",
239
+ " 50% 75% max \n",
240
+ "match_id 1082621.0 1304077.0 1426425.0 \n",
241
+ "inning 1.0 2.0 6.0 \n",
242
+ "over 9.0 14.0 20.0 \n",
243
+ "ball 4.0 5.0 11.0 \n",
244
+ "batsman_runs 1.0 1.0 6.0 \n",
245
+ "extra_runs 0.0 0.0 7.0 \n",
246
+ "total_runs 1.0 1.0 7.0 \n",
247
+ "is_wicket 0.0 0.0 1.0 \n",
248
+ "\n"
249
+ ]
250
+ }
251
+ ],
252
+ "source": [
253
+ "print(\"=== matches.describe() ===\")\n",
254
+ "print(matches.describe(include=\"all\").T, \"\\n\")\n",
255
+ "\n",
256
+ "print(\"=== deliveries.describe() ===\")\n",
257
+ "print(deliveries.describe().T, \"\\n\")"
258
+ ]
259
+ },
260
+ {
261
+ "cell_type": "code",
262
+ "execution_count": 5,
263
+ "id": "42030b94-d9a6-42b2-8488-674edd4fb917",
264
+ "metadata": {},
265
+ "outputs": [
266
+ {
267
+ "name": "stdout",
268
+ "output_type": "stream",
269
+ "text": [
270
+ "=== unique teams in matches ===\n",
271
+ "['Chennai Super Kings', 'Deccan Chargers', 'Delhi Capitals', 'Delhi Daredevils', 'Gujarat Lions', 'Gujarat Titans', 'Kings XI Punjab', 'Kochi Tuskers Kerala', 'Kolkata Knight Riders', 'Lucknow Super Giants', 'Mumbai Indians', 'Pune Warriors', 'Punjab Kings', 'Rajasthan Royals', 'Rising Pune Supergiant', 'Rising Pune Supergiants', 'Royal Challengers Bangalore', 'Royal Challengers Bengaluru', 'Sunrisers Hyderabad'] \n",
272
+ "\n",
273
+ "=== seasons in a dataset ===\n",
274
+ "['2007/08', '2009', '2009/10', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020/21', '2021', '2022', '2023', '2024', '2025', '2026'] \n",
275
+ "\n",
276
+ "=== Venues (top 15 by match count ===\n",
277
+ "venue\n",
278
+ "Eden Gardens 77\n",
279
+ "Wankhede Stadium 73\n",
280
+ "M Chinnaswamy Stadium 65\n",
281
+ "Feroz Shah Kotla 60\n",
282
+ "Wankhede Stadium, Mumbai 56\n",
283
+ "Rajiv Gandhi International Stadium, Uppal 49\n",
284
+ "MA Chidambaram Stadium, Chepauk 48\n",
285
+ "Sawai Mansingh Stadium 47\n",
286
+ "Dubai International Cricket Stadium 46\n",
287
+ "MA Chidambaram Stadium, Chepauk, Chennai 38\n",
288
+ "Narendra Modi Stadium, Ahmedabad 36\n",
289
+ "Punjab Cricket Association Stadium, Mohali 35\n",
290
+ "Sheikh Zayed Stadium 29\n",
291
+ "Sharjah Cricket Stadium 28\n",
292
+ "Arun Jaitley Stadium, Delhi 27\n",
293
+ "Name: count, dtype: int64 \n",
294
+ "\n",
295
+ "=== Toss Descision ===\n",
296
+ "toss_decision\n",
297
+ "field 704\n",
298
+ "bat 391\n",
299
+ "Name: count, dtype: int64 \n",
300
+ "\n"
301
+ ]
302
+ }
303
+ ],
304
+ "source": [
305
+ "print(\"=== unique teams in matches ===\")\n",
306
+ "all_teams = pd.concat([matches[\"team1\"], matches[\"team2\"]]).unique()\n",
307
+ "print(sorted(all_teams), \"\\n\")\n",
308
+ "\n",
309
+ "print(\"=== seasons in a dataset ===\")\n",
310
+ "print(sorted(matches[\"season\"].unique()), \"\\n\")\n",
311
+ "\n",
312
+ "print(\"=== Venues (top 15 by match count ===\")\n",
313
+ "print(matches[\"venue\"].value_counts().head(15), \"\\n\")\n",
314
+ "\n",
315
+ "print(\"=== Toss Descision ===\")\n",
316
+ "print(matches[\"toss_decision\"].value_counts(), \"\\n\")"
317
+ ]
318
+ },
319
+ {
320
+ "cell_type": "code",
321
+ "execution_count": 6,
322
+ "id": "407af91d-cf0e-4b7a-bc1b-0b29aa72904c",
323
+ "metadata": {},
324
+ "outputs": [
325
+ {
326
+ "data": {
327
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAGGCAYAAACqvTJ0AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAdZtJREFUeJzt3QncTOX///GPnazZKbelyFYpe2QvIXsLKes3JUuoSIVosVSobCmRb2lRaCcpKtklaaFFiFCJ25J9/o/39f/NfGdu9y3Luc99z9yv5+NxuOecM3POuc7MnGs+57o+V7pAIBAwAAAAAAAAwEfp/dwYAAAAAAAAIASlAAAAAAAA4DuCUgAAAAAAAPAdQSkAAAAAAAD4jqAUAAAAAAAAfEdQCgAAAAAAAL4jKAUAAAAAAADfEZQCAAAAAACA7whKAQAAAAAAwHcEpQB4avr06ZYuXTpbtWoVJQsAQAx6+OGH3bXeD/Xq1XNT0KJFi9y233zzTV+237lzZytRooSlZvv377f//Oc/VrhwYVc2ffv2tdQsGsoU3vv111/d+/PJJ5+keBGBoBQQpUEfTV988cVJywOBgBUrVswtv/76689qG48//rjNnTvXg72FvPvuu1a3bl0rWLCgnXfeeVaqVCm76aabbN68eRQQACDV1Cs0Zc2a1YoWLWqNGze2Z555xvbt2+fJdrZv3+6CWWvXrrXUJjXv2+nW23Qee/ToYf/973/ttttuS7Y63nfffefKSgEGpD0zZ860cePGpfRuIMYQlAKilCqNujAktHjxYvvtt98sS5YsZ/3aBKW8o7tBLVq0cBX9QYMG2dixY61t27b2448/2muvvebhlgAAOHvDhw93AY1JkyZZ79693Ty1uLn00ktt3bp1Ees+9NBD9s8//5xx4GfYsGFnHPj56KOP3JScTrVvzz//vG3YsMFSs08++cRq1KhhQ4cOtVtvvdUqV66crEEplRVBqbSJoBSSQ8ZkeVUAya5p06Y2a9YsdxczY8aMERcLVUb+/PNPzoIP1DLt0KFDli1btpOWHTt2zB555BG75pprEq1Q79q1i3MEAEgVmjRpYlWqVAk91o0UBTvU6lo3V77//vvQtU71jvC6R3I4ePCga12cOXNmS0mZMmVK0e2fDtUnypcvb2m5zhXrdNz6LKRPT5sSxB7e1UCUat++vf3111+2YMGC0LwjR464HAu33HJLkq12rrrqKsuXL5+7oCt4lTAng1r0HDhwwF566aVQU371/Q/atm2bdevWzTXtV2uskiVLuubi2na4w4cPW//+/a1AgQKWPXt2a926tf3xxx8n7dOHH35oV199tVsnZ86c1qxZM/v2228j1tmxY4d16dLFLrzwQrfNIkWKWMuWLf/1Lp32O0eOHPbLL7+4bgjahvZbd4NVsQl34sQJ1xy5QoUKrhVaoUKF7I477rC///47Yj3lQFAFff78+a7yrnJ87rnnEt2+AoPx8fFWq1atRJerO1/CMtNdzosvvtgdp7phDhgwwM0PN23aNGvQoIF7vtZTRVR3thNSXi8dd/78+d1+6lx17do1Yh2d63vuucdtS691ySWXuPdJwvLR+6BXr17u7mrFihXduioruiACQOzStWbw4MG2efNme/nll0+ZU0r1kdq1a1uePHnctVfXkwceeCCUB6pq1arub13Pg/ULdTkT5YzStWX16tVWp04dF4wKPjdhTqmg48ePu3WUR0nXdwXOtm7detI1O7wOExT+mv+2b4nlP/Lr2qlgk+pcqpOobnL55Ze7+lnC/FqbNm2y999/P7TvSdWP/q2O99VXX7ngZK5cudw5bNiwoS1btiy0XGVy4403ur/r168feg3th7z99tuuHhesI1500UXu5pzO1dlIqs4VzE0UPEcJj1Hvz4Tv1Z9++skdq96fuXPndudagc/TfQ+fSvA8v/LKK+45OleqY3/22Wcnrat6tOpiOqfB98OLL74YsU7wvKpFvVolXnDBBe4zoTrlv+VqmjBhgksTofWvvfZa95nQ+1LnQfVolaHq0Lt37454jdM5d/rM6H2m74PguQ//bChwpvIuU6aMKwPV19u0aWM///zzSfs8ZcoUtw1tS5+/lStX/ms5I3bRUgqIUroI1KxZ01599VVXgQgGePbu3Wvt2rVzLagSevrpp12lrUOHDi6IpIudKhfvvfeeuxCJmu4rWWa1atWse/fubp4uGsHm7Zq/Z88et6xs2bLu4qrAli7s4Xcz1fT//PPPd0EWXSwV8NEF+/XXXw+to2116tTJBU5GjRrlXkPBFVUIVDEKXujU3U2BKr2m5qmSporDli1b/jVRpi6m1113nWvWPnr0aFcR1D6pFZOCU0EKQKlyo0pKnz59XAVv/Pjxbj+WLFkScadUzfgV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I15j9+7d1qFDB8uVK5flyZPHunXrZvv370+BowEAAPgfglIAAACp2IEDB+zyyy+3CRMmnLTs4MGDtmbNGhs8eLD7f/bs2bZhwwZr0aJFxHoKSH377be2YMECe++991ygq3v37j4eBQAAwMkyJjIPAAAAqUSTJk3clJjcuXO7QFO48ePHW7Vq1WzLli0WFxdn33//vc2bN89WrlxpVapUces8++yz1rRpU3vyySdd6yoAAICUQEspAACAGLJ3717XzU/d9GTp0qXu72BASho1amTp06e35cuXp+CeAgCAtI6WUgAAADHi0KFDLsdU+/btXf4o2bFjhxUsWDBivYwZM1revHndsqQcPnzYTUHx8fHJuOcAACAtoqUUAABADFDS85tuuskCgYBNmjTpnF9vxIgRrntgcCpWrJgn+wkAABBEUAoAACBGAlKbN292OaaCraSkcOHCtmvXroj1jx075kbk07KkDBo0yHUFDE5bt25N1mMAAABpD933AAAAYiAg9eOPP9qnn35q+fLli1hes2ZN27Nnj61evdoqV67s5n3yySd24sQJq169epKvmyVLFjcBAACkmpZSDRo0cBWbhJRnQMsAAADgnf3799vatWvdJJs2bXJ/a3Q9BaRuuOEGW7Vqlb3yyit2/PhxlydK05EjR9z65cqVs+uuu85uv/12W7FihS1ZssR69epl7dq1Y+Q9AAAQXS2lFi1aFKrkJEys+fnnn3u1XwAAADBzAaf69euHyqJ///7u/06dOtnDDz9s77zzjntcqVKliPJSq6l69eq5vxWwUiCqYcOGbtS9tm3b2jPPPEP5AoCZxU0bcE7lsKXLaMoRSO6g1Lp160J/f/fddxGjteiu3Lx58+yCCy442/0AAABAIhRYUvLypJxqWZBG2ps5cyblCwAAojMopbtv6dKlc1Ni3fSyZctmzz77rNf7BwAAAAAAgLQclFL+At2JK1WqlMtHUKBAgdCyzJkzW8GCBS1DhgzJtZ8AAAAAAABIi4nOixcvbiVKlHAjtVSpUsU9Dk5FihQ5q4CU8iAEW18Fp7Jly0bkqerZs6cbRSZHjhwu/8HOnTvPeDsAAAAAAACI8kTnEhxyeNeuXS5IFW7IkCFn9FoVKlSwjz/++H87lPF/u9SvXz97//33bdasWZY7d26XoLNNmzZu1BgAAAAAAACkoaDU888/bz16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8uTJE7G+KnQ7duxI8vWU22rYsGFnvB8AAABeCI5MHKR8mcEbegAAADiHROeJyZs371k3Q1c+KgWgli9fbj169LBOnTrZd999d9b7MmjQINu7d29o2rp161m/FgAAgNdBKgAAAJxhS6muXbue1npK6Hkm1BpKLa5ESUBXrlxpTz/9tGvqfuTIEduzZ09EaymNvle4cOEkXy9LlixuAgAASAm6UZfwZh05pAAAAM4hKDV9+nQ3wt4VV1yRrHf8Tpw44XJCKUCVKVMmW7hwobVt29Yt0+h+W7Zscd39AAAAUiPVkzp37hy6SaYUBXfeeedJo+/Nnj07hfYQAAAgyoJS6lr36quv2qZNm6xLly526623um5750Jd7Zo0aeKSl+/bt8+NtLdo0SKbP3++5c6d27p162b9+/d328mVK5f17t3bBaQYeQ8AAKRWSkUQTnUmAAAAnENQasKECTZmzBh3V09d9BRQatasmQscXXvttWfVLH3Xrl3WsWNHN0KNglCXXXaZC0hdc801bvnYsWMtffr0rqWUWk8pyfrEiRPPeDsAAAB+mTZtGoUNAADg9eh7aobevn17N23evNl16bvrrrvs2LFj9u2337rR887E1KlTT7k8a9asLhimCQAAAInbtm2bDRw40I30d/DgQZevU8GxKlWqhLoUDh061J5//nmXr7NWrVo2adIkK126NEUKxIC4aQNSehcAwN/R99SCSa2jVMk5fvz42b4MAAAAzsHff//tgkzKxamglEYxfuqpp+z8888PrTN69Gh75plnbPLkyW7EY+W3Ugt05bsCAACIipZS6kIX7L73xRdf2PXXX2/jx4+36667zgWpAAAA4K9Ro0ZZsWLFIroNlixZMvS3biCOGzfOHnroIWvZsqWbN2PGDCtUqJDNnTvX2rVrxykDAAAp4rQjSeqmV6RIERs5cqQLRm3dutVmzZplTZs2JSAFAACQQt555x3XTe/GG2+0ggULupGS1U0vSIPU7Nixwxo1ahSap1ye1atXt6VLl57yZmR8fHzEBAAAkCItpdTcW6PklSpVyhYvXuymxDC8MQAAgH9++eUXlx9KIxY/8MADtnLlSuvTp49lzpzZjQSogJSoZVQ4PQ4uS8yIESNs2LBhyb7/AAAg7TrtoJRGyTubEfYAAACQfE6cOOFaSj3++OPusVpKrV+/3t1QVFDqbGmk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JZcETpw4EZqn/LJqfRTsSne63ffUMkldpc+kpZR+aq5du/Zf9zOxllL6jRKk/S9YsGBg0qRJ7nHv3r0DDRo0iDguANGLoFQg4JKg5suXzzUrbdy4ceDNN98MNWv12qFDhwJ33nmna0KrH3FqEqtJf2tejx493DpemjFjhktCfM899wQefPBB19T1/vvvd1/sujDkz58/sHHjxqg8Pj+3F8vH5vf2YvnY/N5eSnynTJ8+PZAxY8ZAu3btXKXzgw8+cJP+bt++fSBTpkzue8cLsVyWbC96zx0ApDaJBXtat24d6Ny5c8Q8BYkULArelE4qKDV+/Hg3KJJ+J2TPnt1d29UN8EyCUvr+TRg4Ot2g1OjRoyPWueyyy9wATbJ69epA3rx5A6VLl3YBqvnz55+ybACkbun0j6Vx6sqmIc41lPSLL75oH374oZ1//vnWsWNH1/2kXLlynm9T3QxWr14dMWx15cqVLVeuXJ5vS/uvJro333yze7xq1Spr3bq1bdmyxdKlS2ft2rWzI0eO2OzZs6Py+PzeXiwfm9/bi+Vj83t7fm6rTJkydvfdd1vPnj0TXT5x4kQbO3as/fjjj55tM1bLku1Fd1kCQGpRr149q1Spko0bNy40r02bNpY7d26bNm1aaN7XX3/t1tu8ebPr+pbY81577TXr0qWL60JXs2ZNy5kzpz3xxBO2fPlyW7t2rVtHXQL37Nljc+fOTXR/pk+fbn379nXrhGvQoIFdeumlrutgULNmzVy3QT1HSpQo4Z6rKUj72KpVK/ebJvh9r99sH3/8setm2KhRI9fND0D0IadUsCAyZnRfdJp+//1396WoL3D9sKpevbr95z//sa5du3pW8Kog169f3/ygi46OIahKlSquwq7jLFq0qPXv398aN27s6Tb9PD6/txfLx+b39mL52Pzenp/bUkBblb+kKD/dPffc4+k2Y7Us2V50lyUApBaZM2d2uWMT3ph+66231DPG3YiWJUuWuCCTckYl9Tytc9VVV9ldd90Vmvfzzz97sp8KPuk3SJC2vX79+jP+7tb3vW64a7rhhhvsuuuus927d1vevHk92U8A/knv47ZSreCXdJCS+A0aNMgl/lu4cKFddNFF1qdPH8+2988//9gXX3xh33333UnLDh065BIRekl3G9Q6KmjNmjWudVihQoXcY315Hz16NGqPz8/txfKx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",
328
+ "text/plain": [
329
+ "<Figure size 1200x400 with 2 Axes>"
330
+ ]
331
+ },
332
+ "metadata": {},
333
+ "output_type": "display_data"
334
+ },
335
+ {
336
+ "name": "stdout",
337
+ "output_type": "stream",
338
+ "text": [
339
+ "Sanity check chart saved\n"
340
+ ]
341
+ }
342
+ ],
343
+ "source": [
344
+ "fig, axes = plt.subplots(1, 2, figsize=(12, 4))\n",
345
+ "\n",
346
+ "matches[\"season\"].value_counts().sort_index().plot(\n",
347
+ " kind=\"bar\", ax=axes[0], color=\"#7F77DD\"\n",
348
+ ")\n",
349
+ "axes[0].set_title(\"Matches per Season\")\n",
350
+ "axes[0].set_xlabel(\"Season\")\n",
351
+ "axes[0].set_ylabel(\"Match Count\")\n",
352
+ "\n",
353
+ "deliveries.groupby(\"match_id\")[\"total_runs\"].sum().plot(\n",
354
+ " kind=\"hist\", bins=30, ax=axes[1], color=\"#1D9E75\"\n",
355
+ ")\n",
356
+ "axes[1].set_title(\"Distribution of total runs per match\")\n",
357
+ "axes[1].set_xlabel(\"total runs\")\n",
358
+ "\n",
359
+ "plt.tight_layout()\n",
360
+ "plt.savefig(r\"E:\\ipl-analytics\\data\\processed\\sanity_check.png\", dpi=120)\n",
361
+ "plt.show()\n",
362
+ "print(\"Sanity check chart saved\")"
363
+ ]
364
+ },
365
+ {
366
+ "cell_type": "code",
367
+ "execution_count": 9,
368
+ "id": "5274f225-3cea-43c7-8a1e-f2b2ce7661a2",
369
+ "metadata": {},
370
+ "outputs": [
371
+ {
372
+ "name": "stdout",
373
+ "output_type": "stream",
374
+ "text": [
375
+ "=== Merged Shappe\n",
376
+ "(287271, 21)\n",
377
+ "\n",
378
+ "=== Merge null check (winner column) ===\n",
379
+ "490 unmatched rows\n",
380
+ "\n",
381
+ "=== Sample merged rows ===\n",
382
+ " match_id inning batting_team bowling_team over ball batter bowler non_striker batsman_runs extra_runs total_runs extras_type is_wicket player_dismissed dismissal_kind fielder season team1 team2 winner\n",
383
+ "0 335982 1 Kolkata Knight Riders Royal Challengers Bangalore 0 1 SC Ganguly P Kumar BB McCullum 0 1 1 legbyes 0 NaN NaN NaN 2007/08 Royal Challengers Bangalore Kolkata Knight Riders Kolkata Knight Riders\n",
384
+ "1 335982 1 Kolkata Knight Riders Royal Challengers Bangalore 0 2 BB McCullum P Kumar SC Ganguly 0 0 0 NaN 0 NaN NaN NaN 2007/08 Royal Challengers Bangalore Kolkata Knight Riders Kolkata Knight Riders\n",
385
+ "2 335982 1 Kolkata Knight Riders Royal Challengers Bangalore 0 3 BB McCullum P Kumar SC Ganguly 0 1 1 wides 0 NaN NaN NaN 2007/08 Royal Challengers Bangalore Kolkata Knight Riders Kolkata Knight Riders\n"
386
+ ]
387
+ }
388
+ ],
389
+ "source": [
390
+ "merged = deliveries.merge(\n",
391
+ " matches[[\"match_id\", \"season\", \"team1\", \"team2\", \"winner\"]],\n",
392
+ " left_on=\"match_id\",\n",
393
+ " right_on=\"match_id\",\n",
394
+ " how=\"left\"\n",
395
+ ")\n",
396
+ "\n",
397
+ "print(\"=== Merged Shappe\")\n",
398
+ "print(merged.shape)\n",
399
+ "\n",
400
+ "print(\"\\n=== Merge null check (winner column) ===\")\n",
401
+ "print(merged[\"winner\"].isnull().sum(), \"unmatched rows\")\n",
402
+ "\n",
403
+ "print(\"\\n=== Sample merged rows ===\")\n",
404
+ "print(merged.head(3).to_string())"
405
+ ]
406
+ },
407
+ {
408
+ "cell_type": "code",
409
+ "execution_count": 11,
410
+ "id": "afe201b0-7494-4a78-9c8c-c0a28174be68",
411
+ "metadata": {},
412
+ "outputs": [
413
+ {
414
+ "name": "stdout",
415
+ "output_type": "stream",
416
+ "text": [
417
+ "\n",
418
+ "=== Anomaly Report ===\n",
419
+ " duplicate_match_ids : 0\n",
420
+ " matches_without_winner : 5\n",
421
+ " deliveries_without_batsman : 0\n",
422
+ " total_seasons : 19\n",
423
+ " total_teams_ever : 19\n",
424
+ " total_matches : 1208\n",
425
+ " total_deliveries : 287271\n"
426
+ ]
427
+ }
428
+ ],
429
+ "source": [
430
+ "anomalies = {\n",
431
+ " \"duplicate_match_ids\": int(matches[\"match_id\"].duplicated().sum()),\n",
432
+ " \"matches_without_winner\": int(matches[\"winner\"].isnull().sum()),\n",
433
+ " \"deliveries_without_batsman\": int(deliveries[\"batter\"].isnull().sum()),\n",
434
+ " \"total_seasons\": int(matches[\"season\"].nunique()),\n",
435
+ " \"total_teams_ever\": len(all_teams),\n",
436
+ " \"total_matches\": len(matches),\n",
437
+ " \"total_deliveries\": len(deliveries),\n",
438
+ "}\n",
439
+ "\n",
440
+ "print(\"\\n=== Anomaly Report ===\")\n",
441
+ "for k, v in anomalies.items():\n",
442
+ " print(f\" {k:<35}: {v}\")"
443
+ ]
444
+ },
445
+ {
446
+ "cell_type": "code",
447
+ "execution_count": null,
448
+ "id": "40da6ce3-2a15-42b9-82e4-7fecc8d6168b",
449
+ "metadata": {},
450
+ "outputs": [],
451
+ "source": []
452
+ }
453
+ ],
454
+ "metadata": {
455
+ "kernelspec": {
456
+ "display_name": "Python 3 (ipykernel)",
457
+ "language": "python",
458
+ "name": "python3"
459
+ },
460
+ "language_info": {
461
+ "codemirror_mode": {
462
+ "name": "ipython",
463
+ "version": 3
464
+ },
465
+ "file_extension": ".py",
466
+ "mimetype": "text/x-python",
467
+ "name": "python",
468
+ "nbconvert_exporter": "python",
469
+ "pygments_lexer": "ipython3",
470
+ "version": "3.13.5"
471
+ }
472
+ },
473
+ "nbformat": 4,
474
+ "nbformat_minor": 5
475
+ }
notebooks/02_cleaning_and_features.ipynb ADDED
@@ -0,0 +1,503 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "id": "812251b0-5245-4688-8c4d-c7371abe6af6",
7
+ "metadata": {},
8
+ "outputs": [],
9
+ "source": [
10
+ "import sys\n",
11
+ "sys.path.append(\"..\")\n",
12
+ "\n",
13
+ "import pandas as pd\n",
14
+ "from pathlib import Path\n",
15
+ "from src.clean import clean_matches, clean_deliveries\n",
16
+ "from src.features import (\n",
17
+ " build_batting_features,\n",
18
+ " build_bowling_features,\n",
19
+ " build_match_summary,\n",
20
+ " build_team_season_stats,\n",
21
+ ")\n",
22
+ "RAW = Path(r\"E:\\ipl-analytics\\data\\raw\")\n",
23
+ "PROCESSED = Path(r\"E:\\ipl-analytics\\data\\processed\")"
24
+ ]
25
+ },
26
+ {
27
+ "cell_type": "code",
28
+ "execution_count": 2,
29
+ "id": "9c4a93ae-ed2a-4d10-92b2-77b736e4617a",
30
+ "metadata": {},
31
+ "outputs": [
32
+ {
33
+ "name": "stdout",
34
+ "output_type": "stream",
35
+ "text": [
36
+ "RAW matches: (1209, 20)\n",
37
+ "RAW deliveries: (1209, 20)\n",
38
+ "\n",
39
+ "Raw season (before cleaning):\n",
40
+ "['2007/08', '2009', '2009/10', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020/21', '2021', '2022', '2023', '2024', '2025', '2026']\n"
41
+ ]
42
+ }
43
+ ],
44
+ "source": [
45
+ "matches_raw = pd.read_csv(RAW / \"matches.csv\")\n",
46
+ "deliveries_raw = pd.read_csv(RAW / \"deliveries.csv\", low_memory=False)\n",
47
+ "\n",
48
+ "print(f\"RAW matches: {matches_raw.shape}\")\n",
49
+ "print(f\"RAW deliveries: {matches_raw.shape}\")\n",
50
+ "print(f\"\\nRaw season (before cleaning):\")\n",
51
+ "print(sorted(matches_raw[\"season\"].astype(str).unique()))"
52
+ ]
53
+ },
54
+ {
55
+ "cell_type": "code",
56
+ "execution_count": 3,
57
+ "id": "13eb99e8-d89d-4e10-9894-8354fbb0fe73",
58
+ "metadata": {},
59
+ "outputs": [
60
+ {
61
+ "name": "stdout",
62
+ "output_type": "stream",
63
+ "text": [
64
+ "OK — all seasons are valid IPL years.\n",
65
+ "OK — all expected IPL seasons are present.\n",
66
+ "\n",
67
+ "Season distribution : [np.int32(2008), np.int32(2009), np.int32(2010), np.int32(2011), np.int32(2012), np.int32(2013), np.int32(2014), np.int32(2015), np.int32(2016), np.int32(2017), np.int32(2018), np.int32(2019), np.int32(2020), np.int32(2021), np.int32(2022), np.int32(2023), np.int32(2024), np.int32(2025), np.int32(2026)]\n",
68
+ "Season range : 2008 – 2026\n",
69
+ "Total seasons : 19\n",
70
+ "Total matches : 1209\n",
71
+ "\n",
72
+ "clean_matches done: (1209, 20) → (1209, 24)\n",
73
+ "Remaining nulls:\n",
74
+ "city 51\n",
75
+ "match_type 114\n",
76
+ "target_overs 117\n",
77
+ "super_over 114\n",
78
+ "method 1188\n",
79
+ "umpire1 114\n",
80
+ "umpire2 114\n",
81
+ "\n",
82
+ "clean_deliveries: (287513, 17) → (287513, 24)\n",
83
+ " Nulls remaining:\n",
84
+ "extras_type 273388\n",
85
+ "fielder 277108\n"
86
+ ]
87
+ }
88
+ ],
89
+ "source": [
90
+ "matches = clean_matches(matches_raw)\n",
91
+ "deliveries = clean_deliveries(deliveries_raw)"
92
+ ]
93
+ },
94
+ {
95
+ "cell_type": "code",
96
+ "execution_count": 4,
97
+ "id": "aa7b3c1d-e6d1-42c0-b0e4-9679559bab1c",
98
+ "metadata": {},
99
+ "outputs": [
100
+ {
101
+ "name": "stdout",
102
+ "output_type": "stream",
103
+ "text": [
104
+ "All assertions passed.\n"
105
+ ]
106
+ }
107
+ ],
108
+ "source": [
109
+ "assert pd.api.types.is_datetime64_any_dtype(matches[\"date\"]), \\\n",
110
+ " \"date column should be datetime64\"\n",
111
+ "\n",
112
+ "matches[\"season\"] = pd.to_numeric(matches[\"season\"], errors='coerce').astype('int64')\n",
113
+ "\n",
114
+ "assert matches[\"season\"].dtype == int or matches[\"season\"].dtype == \"int64\", \\\n",
115
+ " \"season should be int\"\n",
116
+ "\n",
117
+ "assert matches[\"season\"].min() == 2008, \\\n",
118
+ " f\"Earliest season should be 2008, got {matches['season'].min()}\"\n",
119
+ "\n",
120
+ "assert 2007 not in matches[\"season\"].values, \\\n",
121
+ " \"2007 should not exist - IPL started in 2008\"\n",
122
+ "\n",
123
+ "assert deliveries[\"is_wicket\"].sum() > 0, \\\n",
124
+ " \"is_ wicket column looks wrong - no wickets found\"\n",
125
+ "\n",
126
+ "assert deliveries[\"is_four\"].sum() > 0, \\\n",
127
+ " \"is_four columns wrong - no fours found\"\n",
128
+ "\n",
129
+ "assert (\n",
130
+ " deliveries[\"match_id\"].isin(matches[\"match_id\"]).all()\n",
131
+ "), \"some delivery match_ids have no corresponding match row\" \n",
132
+ "\n",
133
+ "print(\"All assertions passed.\")"
134
+ ]
135
+ },
136
+ {
137
+ "cell_type": "code",
138
+ "execution_count": 5,
139
+ "id": "3fdd4af4-e1fc-490f-9a89-e0111f89d692",
140
+ "metadata": {},
141
+ "outputs": [
142
+ {
143
+ "name": "stdout",
144
+ "output_type": "stream",
145
+ "text": [
146
+ "Raw season values that might be 2020:\n",
147
+ "['2007/08', '2009', '2009/10', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020/21', '2021', '2022', '2023', '2024', '2025', '2026']\n",
148
+ "\n",
149
+ "Matches with dates in 2020: 60\n",
150
+ "Their season values: <StringArray>\n",
151
+ "['2020/21']\n",
152
+ "Length: 1, dtype: str\n"
153
+ ]
154
+ }
155
+ ],
156
+ "source": [
157
+ "print(\"Raw season values that might be 2020:\")\n",
158
+ "raw_seasons = matches_raw[\"season\"].astype(str).unique()\n",
159
+ "candidates = [s for s in raw_seasons if \"20\" in s]\n",
160
+ "print(sorted(candidates))\n",
161
+ "\n",
162
+ "if \"date\" in matches_raw.columns:\n",
163
+ " matches_raw[\"_date\"] = pd.to_datetime(matches_raw[\"date\"], errors=\"coerce\")\n",
164
+ " year_2020 = matches_raw[matches_raw[\"_date\"].dt.year == 2020]\n",
165
+ " print(f\"\\nMatches with dates in 2020: {len(year_2020)}\")\n",
166
+ " if len(year_2020) > 0:\n",
167
+ " print(f\"Their season values: {year_2020['season'].unique()}\")"
168
+ ]
169
+ },
170
+ {
171
+ "cell_type": "code",
172
+ "execution_count": 6,
173
+ "id": "3053c77c-a9a4-42ce-8614-c1569c9da973",
174
+ "metadata": {},
175
+ "outputs": [
176
+ {
177
+ "name": "stdout",
178
+ "output_type": "stream",
179
+ "text": [
180
+ "build_batting_features: 460 batters with 30+ balls faced\n",
181
+ "build_bowling_features: 402 bowlers with 60+ balls bowled\n",
182
+ "build_match_summary: (1209, 45)\n",
183
+ "build_team_season_stats: (166, 7)\n"
184
+ ]
185
+ }
186
+ ],
187
+ "source": [
188
+ "batting_stats = build_batting_features(deliveries)\n",
189
+ "bowling_stats = build_bowling_features(deliveries)\n",
190
+ "match_summary = build_match_summary(matches, deliveries)\n",
191
+ "team_season_stats = build_team_season_stats(match_summary)"
192
+ ]
193
+ },
194
+ {
195
+ "cell_type": "code",
196
+ "execution_count": 7,
197
+ "id": "be5a9fd0-9446-4c7b-94d8-30e0e6f3d8f2",
198
+ "metadata": {},
199
+ "outputs": [
200
+ {
201
+ "name": "stdout",
202
+ "output_type": "stream",
203
+ "text": [
204
+ "\n",
205
+ "All files saved to data/processed/\n"
206
+ ]
207
+ }
208
+ ],
209
+ "source": [
210
+ "matches.to_csv(PROCESSED / \"matches_clean.csv\", index=False)\n",
211
+ "deliveries.to_csv(PROCESSED / \"deliveries_clean.csv\", index=False)\n",
212
+ "batting_stats.to_csv(PROCESSED / \"batting_features.csv\", index=False)\n",
213
+ "bowling_stats.to_csv(PROCESSED / \"bowling_features.csv\", index=False)\n",
214
+ "match_summary.to_csv(PROCESSED / \"match_summary.csv\", index=False)\n",
215
+ "team_season_stats.to_csv(PROCESSED / \"team_season_stats.csv\", index=False)\n",
216
+ "\n",
217
+ "print(\"\\nAll files saved to data/processed/\")"
218
+ ]
219
+ },
220
+ {
221
+ "cell_type": "code",
222
+ "execution_count": 8,
223
+ "id": "ec238a06-b38a-41f3-a11e-efeedb404d62",
224
+ "metadata": {},
225
+ "outputs": [
226
+ {
227
+ "name": "stdout",
228
+ "output_type": "stream",
229
+ "text": [
230
+ "SQLite DB saved: data/processed/ipl.db\n"
231
+ ]
232
+ }
233
+ ],
234
+ "source": [
235
+ "import sqlite3\n",
236
+ "\n",
237
+ "conn = sqlite3.connect(PROCESSED / \"ipl.db\")\n",
238
+ "matches.to_sql(\"matches\", conn, if_exists=\"replace\", index=False)\n",
239
+ "deliveries.to_sql(\"deliveries\", conn, if_exists=\"replace\", index=False)\n",
240
+ "batting_stats.to_sql(\"batting\", conn, if_exists=\"replace\", index=False)\n",
241
+ "bowling_stats.to_sql(\"bowling\", conn, if_exists=\"replace\", index=False)\n",
242
+ "match_summary.to_sql(\"match_summary\", conn, if_exists=\"replace\", index=False)\n",
243
+ "team_season_stats.to_sql(\"team_season\", conn, if_exists=\"replace\", index=False)\n",
244
+ "conn.close()\n",
245
+ "\n",
246
+ "print(\"SQLite DB saved: data/processed/ipl.db\")"
247
+ ]
248
+ },
249
+ {
250
+ "cell_type": "code",
251
+ "execution_count": 9,
252
+ "id": "d22080d1-858d-4b86-a9f5-7e30fa4d9409",
253
+ "metadata": {},
254
+ "outputs": [
255
+ {
256
+ "name": "stdout",
257
+ "output_type": "stream",
258
+ "text": [
259
+ "\n",
260
+ "=== OUTPUT SUMMARY ===\n",
261
+ " matches_clean : shape=(1209, 24) nulls=1812\n",
262
+ " deliveries_clean : shape=(287513, 24) nulls=550496\n",
263
+ " batting_features : shape=(460, 19) nulls=164\n",
264
+ " bowling_features : shape=(402, 20) nulls=37\n",
265
+ " match_summary : shape=(1209, 45) nulls=1866\n",
266
+ " team_season_stats : shape=(166, 7) nulls=0\n"
267
+ ]
268
+ }
269
+ ],
270
+ "source": [
271
+ "print(\"\\n=== OUTPUT SUMMARY ===\")\n",
272
+ "for name, df in {\n",
273
+ " \"matches_clean\" : matches,\n",
274
+ " \"deliveries_clean\": deliveries,\n",
275
+ " \"batting_features\": batting_stats,\n",
276
+ " \"bowling_features\": bowling_stats,\n",
277
+ " \"match_summary\": match_summary,\n",
278
+ " \"team_season_stats\": team_season_stats,\n",
279
+ "}.items():\n",
280
+ " nulls = df.isnull().sum().sum()\n",
281
+ " print(f\" {name:<22}: shape={str(df.shape):<16} nulls={nulls}\")"
282
+ ]
283
+ },
284
+ {
285
+ "cell_type": "code",
286
+ "execution_count": 10,
287
+ "id": "48df6a69-39d5-4cc2-b329-0b988fb458dd",
288
+ "metadata": {},
289
+ "outputs": [
290
+ {
291
+ "name": "stdout",
292
+ "output_type": "stream",
293
+ "text": [
294
+ "\n",
295
+ "=== Top 10 run scorers ===\n",
296
+ " batter total_runs batting_average strike_rate hundreds fifties\n",
297
+ " V Kohli 9022 38.07 133.80 8 66\n",
298
+ " RG Sharma 7185 28.86 132.64 2 48\n",
299
+ " S Dhawan 6769 35.07 127.62 2 51\n",
300
+ " DA Warner 6567 40.04 140.26 4 62\n",
301
+ " KL Rahul 5593 45.47 138.17 6 42\n",
302
+ " SK Raina 5536 33.15 137.54 1 39\n",
303
+ " MS Dhoni 5439 34.42 137.91 0 24\n",
304
+ " AM Rahane 5194 29.85 124.92 2 34\n",
305
+ "AB de Villiers 5181 41.45 152.38 3 40\n",
306
+ " SV Samson 5008 31.90 140.83 5 26\n",
307
+ "\n",
308
+ "=== Top 10 wicket takers ===\n",
309
+ " bowler wickets economy_rate bowling_average dot_ball_pct\n",
310
+ " YS Chahal 237 8.11 22.59 34.59\n",
311
+ " B Kumar 228 7.84 25.35 43.80\n",
312
+ " SP Narine 221 6.92 23.59 39.68\n",
313
+ " DJ Bravo 207 8.53 21.43 33.78\n",
314
+ " JJ Bumrah 206 7.43 21.23 42.51\n",
315
+ " R Ashwin 205 7.28 27.91 35.35\n",
316
+ " PP Chawla 201 8.07 25.77 35.27\n",
317
+ "SL Malinga 188 7.40 18.54 43.07\n",
318
+ " RA Jadeja 185 7.74 29.11 33.06\n",
319
+ " A Mishra 183 7.46 22.91 36.19\n",
320
+ "\n",
321
+ "=== New columns in deliveries ===\n",
322
+ " is_wicket is_four is_six is_dot_ball over_phase is_legal_delivery\n",
323
+ " 0 0 0 1 powerplay 1\n",
324
+ " 0 0 0 1 powerplay 1\n",
325
+ " 0 0 0 0 powerplay 0\n",
326
+ " 0 0 0 1 powerplay 1\n",
327
+ " 0 0 0 1 powerplay 1\n",
328
+ " 0 0 0 1 powerplay 1\n",
329
+ " 0 0 0 1 powerplay 1\n",
330
+ " 0 0 0 1 powerplay 1\n",
331
+ " 0 1 0 0 powerplay 1\n",
332
+ " 0 1 0 0 powerplay 1\n"
333
+ ]
334
+ }
335
+ ],
336
+ "source": [
337
+ "print(\"\\n=== Top 10 run scorers ===\")\n",
338
+ "print(batting_stats[[\"batter\", \"total_runs\", \"batting_average\", \"strike_rate\", \"hundreds\", \"fifties\"]].head(10).to_string(index=False))\n",
339
+ "\n",
340
+ "print(\"\\n=== Top 10 wicket takers ===\")\n",
341
+ "print(bowling_stats[[\"bowler\", \"wickets\", \"economy_rate\", \"bowling_average\", \"dot_ball_pct\"]].head(10).to_string(index=False))\n",
342
+ "\n",
343
+ "print(\"\\n=== New columns in deliveries ===\")\n",
344
+ "new_cols = [\"is_wicket\", \"is_four\", \"is_six\", \"is_dot_ball\", \"over_phase\", \"is_legal_delivery\"]\n",
345
+ "print(deliveries[new_cols].head(10).to_string(index=False))"
346
+ ]
347
+ },
348
+ {
349
+ "cell_type": "code",
350
+ "execution_count": 11,
351
+ "id": "67d96b8e-4306-4fb3-b00d-859b4ca6efdc",
352
+ "metadata": {},
353
+ "outputs": [
354
+ {
355
+ "name": "stdout",
356
+ "output_type": "stream",
357
+ "text": [
358
+ "True\n",
359
+ "['match_id', 'season', 'city', 'date', 'match_type', 'player_of_match', 'venue', 'team1', 'team2', 'toss_winner', 'toss_decision', 'winner', 'result', 'result_margin', 'target_runs', 'target_overs', 'super_over', 'method', 'umpire1', 'umpire2', 'result_type', 'is_no_result', 'day_of_week', 'month', 'inn1_batting_team', 'inn1_total_runs', 'inn1_total_wickets', 'inn1_total_balls', 'inn1_total_fours', 'inn1_total_sixes', 'inn1_dot_balls', 'inn1_run_rate', 'inn2_batting_team', 'inn2_total_runs', 'inn2_total_wickets', 'inn2_total_balls', 'inn2_total_fours', 'inn2_total_sixes', 'inn2_dot_balls', 'inn2_run_rate', 'toss_winner_won', 'batting_first_team', 'batting_first_won', 'score_diff', 'season_num']\n"
360
+ ]
361
+ }
362
+ ],
363
+ "source": [
364
+ "# Quick check — run this in a notebook\n",
365
+ "import pandas as pd\n",
366
+ "summary = pd.read_csv(r\"E:/ipl-analytics/data/processed/match_summary.csv\")\n",
367
+ "print(\"batting_first_won\" in summary.columns)\n",
368
+ "print(summary.columns.tolist())"
369
+ ]
370
+ },
371
+ {
372
+ "cell_type": "code",
373
+ "execution_count": 12,
374
+ "id": "b9a549cc-5eaf-46e3-a89a-08def3234b43",
375
+ "metadata": {},
376
+ "outputs": [
377
+ {
378
+ "name": "stdout",
379
+ "output_type": "stream",
380
+ "text": [
381
+ "['match_id', 'season', 'city', 'date', 'match_type']\n"
382
+ ]
383
+ }
384
+ ],
385
+ "source": [
386
+ "# In callbacks.py, check these lines at the top\n",
387
+ "matches = pd.read_csv(PROCESSED / \"matches_clean.csv\", parse_dates=[\"date\"])\n",
388
+ "print(matches.columns.tolist()[:5])"
389
+ ]
390
+ },
391
+ {
392
+ "cell_type": "code",
393
+ "execution_count": 13,
394
+ "id": "9edf3ceb-9a25-423a-9461-175553fc6431",
395
+ "metadata": {},
396
+ "outputs": [
397
+ {
398
+ "name": "stdout",
399
+ "output_type": "stream",
400
+ "text": [
401
+ "['A_form5', 'B_form5', 'form_diff5', 'A_form10', 'B_form10', 'form_diff10', 'A_overall_wr', 'B_overall_wr', 'overall_wr_diff', 'A_venue_wr', 'B_venue_wr', 'venue_wr_diff', 'venue_bat_first_wr', 'A_avg_score', 'B_avg_score', 'score_diff', 'A_avg_wickets', 'B_avg_wickets', 'wicket_diff', 'h2h_wr_A', 'h2h_n', 'toss_decision_bat', 'toss_correct', 'A_consistency', 'B_consistency', 'season_stage']\n"
402
+ ]
403
+ }
404
+ ],
405
+ "source": [
406
+ "import json\n",
407
+ "with open(r\"E:/ipl-analytics/data/processed/models/win_prob_features.json\") as f:\n",
408
+ " print(json.load(f))\n",
409
+ " "
410
+ ]
411
+ },
412
+ {
413
+ "cell_type": "code",
414
+ "execution_count": 14,
415
+ "id": "aa04d396-d78c-478b-8269-c10d2f2a508e",
416
+ "metadata": {},
417
+ "outputs": [
418
+ {
419
+ "name": "stdout",
420
+ "output_type": "stream",
421
+ "text": [
422
+ "True\n",
423
+ "(1209, 45)\n"
424
+ ]
425
+ }
426
+ ],
427
+ "source": [
428
+ "import pandas as pd\n",
429
+ "df = pd.read_csv(r\"E:/ipl-analytics/data/processed/match_summary.csv\")\n",
430
+ "print(\"batting_first_won\" in df.columns)\n",
431
+ "print(df.shape)"
432
+ ]
433
+ },
434
+ {
435
+ "cell_type": "code",
436
+ "execution_count": 17,
437
+ "id": "74439927-12bc-4a07-bc8d-177e3e1f06be",
438
+ "metadata": {},
439
+ "outputs": [
440
+ {
441
+ "name": "stderr",
442
+ "output_type": "stream",
443
+ "text": [
444
+ "C:\\Users\\BHUMI\\AppData\\Local\\Temp\\ipykernel_25556\\3219913361.py:3: DtypeWarning: Columns (0: extras_type) have mixed types. Specify dtype option on import or set low_memory=False.\n",
445
+ " deliveries = pd.read_csv(r\"E:/ipl-analytics/data/processed/deliveries_clean.csv\")\n"
446
+ ]
447
+ },
448
+ {
449
+ "name": "stdout",
450
+ "output_type": "stream",
451
+ "text": [
452
+ "batting_team\n",
453
+ "Mumbai Indians 34133\n",
454
+ "Royal Challengers Bangalore 32592\n",
455
+ "Delhi Capitals 32365\n",
456
+ "Kolkata Knight Riders 31779\n",
457
+ "Chennai Super Kings 31414\n",
458
+ "Name: count, dtype: int64\n",
459
+ "['match_id', 'inning', 'batting_team', 'bowling_team', 'over', 'ball', 'batter', 'bowler', 'non_striker', 'batsman_runs', 'extra_runs', 'total_runs', 'extras_type', 'is_wicket', 'player_dismissed', 'dismissal_kind', 'fielder', 'is_wide', 'is_noball', 'is_four', 'is_six', 'is_dot_ball', 'over_phase', 'is_legal_delivery']\n"
460
+ ]
461
+ }
462
+ ],
463
+ "source": [
464
+ "# In your notebook or terminal\n",
465
+ "import pandas as pd\n",
466
+ "deliveries = pd.read_csv(r\"E:/ipl-analytics/data/processed/deliveries_clean.csv\")\n",
467
+ "\n",
468
+ "# Check what batting_team values look like\n",
469
+ "print(deliveries[\"batting_team\"].value_counts().head(5))\n",
470
+ "print(deliveries.columns.tolist())"
471
+ ]
472
+ },
473
+ {
474
+ "cell_type": "code",
475
+ "execution_count": null,
476
+ "id": "66c87d74-17eb-4828-b5b6-ac0a2b18b3c9",
477
+ "metadata": {},
478
+ "outputs": [],
479
+ "source": []
480
+ }
481
+ ],
482
+ "metadata": {
483
+ "kernelspec": {
484
+ "display_name": "Python 3 (ipykernel)",
485
+ "language": "python",
486
+ "name": "python3"
487
+ },
488
+ "language_info": {
489
+ "codemirror_mode": {
490
+ "name": "ipython",
491
+ "version": 3
492
+ },
493
+ "file_extension": ".py",
494
+ "mimetype": "text/x-python",
495
+ "name": "python",
496
+ "nbconvert_exporter": "python",
497
+ "pygments_lexer": "ipython3",
498
+ "version": "3.13.5"
499
+ }
500
+ },
501
+ "nbformat": 4,
502
+ "nbformat_minor": 5
503
+ }
notebooks/03_eda_visualisations.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
notebooks/04_ml_models.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
render.yaml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ services:
2
+ - type: web
3
+ name: ipl-analytics
4
+ runtime: python
5
+ buildCommand: pip install -r requirements.txt
6
+ startCommand: python waitress_server.py
requirements.txt ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ pandas
2
+ numpy
3
+ matplotlib
4
+ seaborn
5
+ plotly
6
+ dash
7
+ dash-bootstrap-components
8
+ scikit-learn
9
+ xgboost
10
+ statsmodels
11
+ shap
12
+ jupyter
13
+ ipykernel
14
+ waitress
src/__init__.py ADDED
@@ -0,0 +1 @@
 
 
1
+ from .models import get_available_teams, get_available_venues
src/clean.py ADDED
@@ -0,0 +1,187 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import numpy as np
3
+ from pathlib import Path
4
+
5
+ RAW = Path("E:/ipl-analytics/data/raw")
6
+ PROCESSED = Path("E:/ipl-analytics/data/processed")
7
+ PROCESSED.mkdir(parents=True, exist_ok=True)
8
+
9
+ TEAM_NAME_MAP = {
10
+ "Rising Pune Supergiant" : "Rising Pune Supergiants",
11
+ "King XI Punjab" : "Punjab Kings",
12
+ "Pune Warriors" : "Pune Warriors India",
13
+ "Deccan Chargrers" : "Sunrisers Hyderabad",
14
+ "Delhi Daredevils" : "Delhi Capitals",
15
+ "Royal Challengers Bengaluru" : "Royal Challengers Bangalore",
16
+
17
+ }
18
+
19
+ VENUE_KEYWORDS = {
20
+ "Wankhede": "Wankhede Stadium",
21
+ "Chinnaswamy": "M Chinnaswamy Stadium",
22
+ "Chidambaram": "MA Chidambaram Stadium",
23
+ "Chepauk": "MA Chidambaram Stadium",
24
+ "Eden Gardens": "Eden Gardens",
25
+ "Arun Jaitley": "Feroz Shah Kotla",
26
+ "Feroz Shah Kotla": "Feroz Shah Kotla",
27
+ "Rajasekhara": "Vizag Stadium",
28
+ "Yadavindra": "Mullanpur Stadium",
29
+ "Ekana": "Ekana Stadium",
30
+ "Rajiv Gandhi": "Uppal Stadium",
31
+ "IS Bindra": "PCA Stadium",
32
+ "Mohali": "PCA Stadium",
33
+ "Narendra Modi": "Motera Stadium",
34
+ "Dy Patil": "DY Patil Stadium",
35
+ "Brabourne": "Brabourne Stadium",
36
+ }
37
+
38
+ IPL_VALID_SEASONS = set(range(2008, 2025))
39
+
40
+ import datetime
41
+ IPL_VALID_SEASONS = set(range(2008, datetime.date.today().year + 1))
42
+
43
+ SLASH_SEASON_MAP = {
44
+ "2007/08" : 2008,
45
+ "2009/10" : 2010,
46
+ "2020/21" : 2020,
47
+ }
48
+
49
+ def clean_matches(matches: pd.DataFrame) -> pd.DataFrame:
50
+ df = matches.copy()
51
+
52
+ if "id" in df.columns:
53
+ df = df.rename(columns={"id": "match_id"})
54
+
55
+ df["date"] = pd.to_datetime(df["date"], errors="coerce")
56
+
57
+ def fix_season(val):
58
+ val = str(val).strip()
59
+
60
+ if val in SLASH_SEASON_MAP:
61
+ return SLASH_SEASON_MAP[val]
62
+
63
+ if "/" in val:
64
+ parts = val.split("/")
65
+ suffix = parts[1].strip()
66
+ prefix = parts[0].strip()[:2]
67
+ return int(prefix + suffix)
68
+
69
+ val_clean = val.replace("IPL", "").replace("Season", "").strip()
70
+ year = int(float(val_clean))
71
+
72
+ if year == 2007:
73
+ return 2008
74
+ return year
75
+
76
+ df["season"] = df["season"].apply(fix_season).astype("int32")
77
+
78
+ detected = set(df["season"].unique())
79
+ unexpected = detected - IPL_VALID_SEASONS
80
+ missing = IPL_VALID_SEASONS - detected
81
+
82
+ if unexpected:
83
+ print(f"WARNING — unexpected seasons found : {sorted(unexpected)}")
84
+ print(f" Dropping {len(df[df['season'].isin(unexpected)])} rows.")
85
+ df = df[df["season"].isin(IPL_VALID_SEASONS)].copy()
86
+ else:
87
+ print("OK — all seasons are valid IPL years.")
88
+
89
+ if missing:
90
+ print(f"INFO — seasons not in dataset : {sorted(missing)}")
91
+ print(f" Expected if your CSV doesn't cover those years yet.")
92
+ else:
93
+ print("OK — all expected IPL seasons are present.")
94
+
95
+ print(f"\nSeason distribution : {sorted(df['season'].unique())}")
96
+ print(f"Season range : {df['season'].min()} – {df['season'].max()}")
97
+ print(f"Total seasons : {df['season'].nunique()}")
98
+ print(f"Total matches : {len(df)}")
99
+
100
+ df["venue"] = df["venue"].astype(str).str.strip()
101
+ for keyword, clean_name in VENUE_KEYWORDS.items():
102
+ mask = df["venue"].str.contains(keyword, case=False, na=False)
103
+ df.loc[mask, "venue"] = clean_name
104
+
105
+ for col in ["result_margin", "dl_applied", "target_runs"]:
106
+ if col in df.columns:
107
+ df[col] = pd.to_numeric(df[col], errors="coerce").fillna(0).astype(int)
108
+
109
+ for col in ["team1", "team2", "winner", "toss_winner"]:
110
+ if col in df.columns:
111
+ df[col] = df[col].replace(TEAM_NAME_MAP)
112
+
113
+ df["player_of_match"] = df["player_of_match"].fillna("N/A")
114
+
115
+ def result_type(row):
116
+ r = str(row.get("result", "")).lower().strip()
117
+ if r == "runs": return "runs"
118
+ if r == "wickets": return "wickets"
119
+ return "no_result"
120
+
121
+ df["result_type"] = df.apply(result_type, axis=1)
122
+
123
+ df["is_no_result"] = df["winner"].isna().astype(int)
124
+ df["winner"] = df["winner"].fillna("No Result")
125
+
126
+ df["day_of_week"] = df["date"].dt.day_name()
127
+ df["month"] = df["date"].dt.month
128
+
129
+ df = df.sort_values(["season", "date"]).reset_index(drop=True)
130
+
131
+ print(f"\nclean_matches done: {matches.shape} → {df.shape}")
132
+ remaining_nulls = df.isnull().sum()
133
+ remaining_nulls = remaining_nulls[remaining_nulls > 0]
134
+ if len(remaining_nulls):
135
+ print(f"Remaining nulls:\n{remaining_nulls.to_string()}")
136
+ else:
137
+ print("No nulls remaining.")
138
+
139
+ return df
140
+
141
+ def clean_deliveries(deliveries: pd.DataFrame) -> pd.DataFrame:
142
+ df = deliveries.copy()
143
+
144
+ df = df.rename(columns={"batter":"batsman"})
145
+
146
+ for col in ["batting_team", "bowling_team"]:
147
+ if col in df.columns:
148
+ df[col] = df[col].replace(TEAM_NAME_MAP)
149
+
150
+ num_cols = ["inning", "over", "ball", "batsman_runs", "extra_runs", "total_runs"]
151
+ for col in num_cols:
152
+ if col in df.columns:
153
+ df[col] = pd.to_numeric(df[col], errors="coerce").fillna(0).astype(int)
154
+
155
+ df["is_wide"] = (df["extras_type"] == "wides").astype(int)
156
+ df["is_noball"] = (df["extras_type"] == "noballs").astype(int)
157
+
158
+ for col in ["batting_team", "bowling_team"]:
159
+ df[col] = df[col].replace(TEAM_NAME_MAP)
160
+
161
+ df["player_dismissed"] = df["player_dismissed"].fillna("not_out")
162
+ df["dismissal_kind"] = df["dismissal_kind"].fillna("not_out")
163
+
164
+ df["is_wicket"] = df["is_wicket"].fillna(0).astype(int)
165
+
166
+ df["is_four"] = (df["batsman_runs"] == 4).astype(int)
167
+ df["is_six"] = (df["batsman_runs"] == 6).astype(int)
168
+
169
+ df["is_dot_ball"] = (
170
+ (df["batsman_runs"] == 0) &
171
+ (df["is_wide"] == 0) &
172
+ (df["is_noball"] == 0)
173
+ ).astype(int)
174
+
175
+ def over_phase(over):
176
+ if over <= 6: return "powerplay"
177
+ if over <= 15: return "middle"
178
+ return "death"
179
+
180
+ df["over_phase"] = df["over"].apply(over_phase)
181
+
182
+ df["is_legal_delivery"] = ((df["is_wide"] == 0) & (df["is_noball"] == 0)).astype(int)
183
+
184
+ df = df.sort_values(["match_id", "inning", "over", "ball"]).reset_index(drop=True)
185
+ print(f"\nclean_deliveries: {deliveries.shape} → {df.shape}")
186
+ print(f" Nulls remaining:\n{df.isnull().sum()[df.isnull().sum()>0].to_string()}")
187
+ return df
src/diagnose_cricsheet.py ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # src/diagnose_cricsheet.py
2
+ from pathlib import Path
3
+ import pandas as pd
4
+
5
+ cricsheet_dir = Path("E:/ipl-analytics/data/raw/cricsheet_ipl")
6
+
7
+ match_files = sorted([f for f in cricsheet_dir.glob("*.csv")
8
+ if "_info" not in f.stem])
9
+
10
+ print(f"Match files : {len(match_files)}")
11
+
12
+ print("\nScanning all match files for seasons (30 seconds)...")
13
+ season_counts = {}
14
+ for fp in match_files:
15
+ try:
16
+ row = pd.read_csv(fp, usecols=["season"], nrows=1)
17
+ s = str(row["season"].iloc[0]).strip()
18
+ season_counts[s] = season_counts.get(s, 0) + 1
19
+ except Exception:
20
+ continue
21
+
22
+ print(f"\nAll unique season labels in Cricsheet:")
23
+ for s in sorted(season_counts):
24
+ print(f" '{s}' : {season_counts[s]} matches")
src/features.py ADDED
@@ -0,0 +1,159 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import numpy as np
3
+
4
+ def build_batting_features(deliveries: pd.DataFrame) -> pd.DataFrame:
5
+
6
+ d = deliveries[deliveries["is_wide"] == 0].copy()
7
+
8
+ agg = d.groupby("batter").agg(
9
+ total_runs = ("batsman_runs", "sum"),
10
+ balls_faced = ("is_legal_delivery", "sum"),
11
+ matches_batted = ("match_id", "nunique"),
12
+ innings = ("inning", "count"),
13
+ fours = ("is_four", "sum"),
14
+ sixes = ("is_six", "sum"),
15
+ dot_balls = ("is_dot_ball", "sum"),
16
+ dismissals = ("is_wicket", "sum"),
17
+ ).reset_index()
18
+
19
+ agg["strike_rate"] = (agg["total_runs"] / agg["balls_faced"].replace(0, np.nan) * 100).round(2)
20
+ agg["batting_average"] = (agg["total_runs"] / agg["dismissals"].replace(0, np.nan)).round(2)
21
+ agg["boundary_rate"] = ((agg["fours"] + agg["sixes"]) / agg["balls_faced"].replace(0, np.nan) * 100).round(2)
22
+ agg["dot_ball_pct"] = (agg["dot_balls"] / agg["balls_faced"].replace(0, np.nan) * 100).round(2)
23
+ agg["runs_per_match"] = (agg["total_runs"] / agg["matches_batted"].replace(0, np.nan)).round(2)
24
+
25
+ for phase in ["powerplay", "middle", "death"]:
26
+ phase_df = d[d["over_phase"] == phase].groupby("batter").agg(
27
+ _runs = ("batsman_runs", "sum"),
28
+ _balls = ("is_legal_delivery", "sum"),
29
+ ).reset_index()
30
+ phase_df[f"sr_{phase}"] = (phase_df["_runs"] / phase_df["_balls"].replace(0, np.nan) * 100).round(2)
31
+ agg = agg.merge(phase_df[["batter", f"sr_{phase}"]], on="batter", how="left")
32
+
33
+ inning_scores = d.groupby(["batter", "match_id", "inning"])["batsman_runs"].sum().reset_index()
34
+ inning_scores.columns = ["batter", "match_id", "inning", "innings_runs"]
35
+
36
+ fifties = inning_scores[inning_scores["innings_runs"].between(50, 99)].groupby("batter").size().rename("fifties")
37
+ hundreds = inning_scores[inning_scores["innings_runs"] >= 100].groupby("batter").size().rename("hundreds")
38
+
39
+ agg = agg.merge(fifties, on="batter", how="left")
40
+ agg = agg.merge(hundreds, on="batter", how="left")
41
+ agg["fifties"] = agg["fifties"].fillna(0).astype(int)
42
+ agg["hundreds"] = agg["hundreds"].fillna(0).astype(int)
43
+
44
+ agg = agg[agg["balls_faced"] >= 30].copy()
45
+
46
+ print(f"build_batting_features: {len(agg)} batters with 30+ balls faced")
47
+ return agg.sort_values("total_runs", ascending=False).reset_index(drop=True)
48
+
49
+
50
+ def build_bowling_features(deliveries: pd.DataFrame) -> pd.DataFrame:
51
+ d = deliveries.copy()
52
+
53
+ agg = d.groupby("bowler").agg(
54
+ balls_bowled = ("is_legal_delivery", "sum"),
55
+ runs_conceded = ("total_runs", "sum"),
56
+ wickets = ("is_wicket", "sum"),
57
+ dot_balls = ("is_dot_ball", "sum"),
58
+ wides = ("is_wide", "sum"),
59
+ no_balls = ("is_noball", "sum"),
60
+ matches_bowled = ("match_id", "nunique"),
61
+ fours_conceded = ("is_four", "sum"),
62
+ sixes_conceded = ("is_six", "sum"),
63
+ ).reset_index()
64
+
65
+ overs = agg["balls_bowled"] / 6
66
+ agg["economy_rate"] = (agg["runs_conceded"] / overs.replace(0, np.nan)).round(2)
67
+ agg["bowling_average"] = (agg["runs_conceded"] / agg["wickets"].replace(0, np.nan)).round(2)
68
+ agg["bowling_sr"] = (agg["balls_bowled"] / agg["wickets"].replace(0, np.nan)).round(2)
69
+ agg["dot_ball_pct"] = (agg["dot_balls"] / agg["balls_bowled"].replace(0, np.nan) * 100).round(2)
70
+ agg["wickets_per_match"] = (agg["wickets"] / agg["matches_bowled"].replace(0, np.nan)).round(2)
71
+
72
+ for phase in ["powerplay", "middle", 'death']:
73
+ phase_df = d[d["over_phase"] == phase].groupby("bowler").agg(
74
+ _runs = ("total_runs", "sum"),
75
+ _balls = ("is_legal_delivery", "sum"),
76
+ ).reset_index()
77
+ phase_df[f"economy_{phase}"] = (phase_df["_runs"] / (phase_df["_balls"] / 6).replace(0, np.nan)).round(2)
78
+ agg = agg.merge(phase_df[["bowler", f"economy_{phase}"]], on="bowler", how="left")
79
+
80
+ inning_wkt = d.groupby(["bowler", "match_id", "inning"])["is_wicket"].sum().reset_index()
81
+ inning_wkt.columns = ["bowler", "match_id", "inning", "wickets_in_inning"]
82
+
83
+ three_wkt = inning_wkt[inning_wkt["wickets_in_inning"] >= 3].groupby("bowler").size().rename("three_wicket_haul")
84
+ five_wkt = inning_wkt[inning_wkt["wickets_in_inning"] >= 5].groupby("bowler").size().rename("five_wicket_haul")
85
+
86
+ agg = agg.merge(three_wkt, on="bowler", how="left")
87
+ agg = agg.merge(five_wkt, on="bowler", how="left")
88
+ agg["three_wicket_haul"] = agg["three_wicket_haul"].fillna(0).astype(int)
89
+ agg["five_wicket_haul"] = agg["five_wicket_haul"].fillna(0).astype(int)
90
+
91
+ agg = agg[agg["balls_bowled"] >= 60].copy()
92
+
93
+ print(f"build_bowling_features: {len(agg)} bowlers with 60+ balls bowled")
94
+ return agg.sort_values("wickets", ascending=False).reset_index(drop=True)
95
+
96
+ def build_match_summary(matches: pd.DataFrame, deliveries: pd.DataFrame) -> pd.DataFrame:
97
+
98
+ innings_total = deliveries.groupby(["match_id", "inning", "batting_team"]).agg(
99
+ total_runs = ("total_runs", "sum"),
100
+ total_wickets = ("is_wicket", "sum"),
101
+ total_balls = ("is_legal_delivery", "sum"),
102
+ total_fours = ("is_four", "sum"),
103
+ total_sixes = ("is_six", "sum"),
104
+ dot_balls = ("is_dot_ball", "sum"),
105
+ ).reset_index()
106
+
107
+ innings_total["run_rate"] = (
108
+ innings_total["total_runs"] / (innings_total["total_balls"] / 6).replace(0, np.nan)
109
+ ).round(2)
110
+
111
+ inn1 = innings_total[innings_total["inning"] == 1].add_prefix("inn1_").rename(columns={"inn1_match_id": "match_id"})
112
+ inn2 = innings_total[innings_total["inning"] == 2].add_prefix("inn2_").rename(columns={"inn2_match_id": "match_id"})
113
+
114
+ summary = matches.merge(inn1.drop(columns=["inn1_inning"]), on="match_id", how="left")
115
+ summary = summary.merge(inn2.drop(columns=["inn2_inning"]), on="match_id", how="left")
116
+
117
+ summary["toss_winner_won"] = (summary["toss_winner"] == summary["winner"]).astype(int)
118
+ summary["batting_first_team"] = summary["inn1_batting_team"]
119
+
120
+ summary["batting_first_won"] = (
121
+ summary["inn1_batting_team"] == summary["winner"]
122
+ ).astype(int)
123
+
124
+ summary["score_diff"] = summary["inn1_total_runs"] - summary["inn2_total_runs"]
125
+
126
+ min_season = summary["season"].min()
127
+ summary["season_num"] = summary["season"] - min_season + 1
128
+
129
+ print(f"build_match_summary: {summary.shape}")
130
+ return summary.reset_index(drop=True)
131
+
132
+ def build_team_season_stats(matches: pd.DataFrame) -> pd.DataFrame:
133
+
134
+ records = []
135
+ for season in sorted(matches["season"].unique()):
136
+ season_df = matches[matches["season"] == season]
137
+ all_teams = pd.concat([season_df["team1"], season_df["team2"]]).unique()
138
+
139
+ for team in all_teams:
140
+ played = season_df[(season_df["team1"] == team) | (season_df["team2"] == team)]
141
+ won = season_df[season_df["winner"] == team]
142
+
143
+ bat_first = played[played["inn1_batting_team"] == team] if "inn1_batting_team" in played.columns else pd.DataFrame()
144
+ toss_won = played[played["toss_winner"] == team]
145
+ toss_bat = toss_won[toss_won["toss_decision"] == "bat"]
146
+
147
+ records.append({
148
+ "season": season,
149
+ "team": team,
150
+ "matches_played": len(played),
151
+ "matches_won": len(won),
152
+ "win_pct": round(len(won) / len(played) * 100, 1) if len(played) > 0 else 0,
153
+ "toss_wins": len(toss_won),
154
+ "toss_bat_choice": len(toss_bat),
155
+ })
156
+
157
+ df = pd.DataFrame(records)
158
+ print(f"build_team_season_stats: {df.shape}")
159
+ return df
src/fix_raw_ids.py ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ from pathlib import Path
3
+
4
+ RAW = Path("E:/ipl-analytics/data/raw")
5
+
6
+ matches = pd.read_csv(RAW / "matches.csv")
7
+ deliveries = pd.read_csv(RAW / "deliveries.csv")
8
+
9
+ print("=== RAW matches.csv ===")
10
+ print(f" shape : {matches.shape}")
11
+ print(f" columns : {matches.columns.tolist()}")
12
+
13
+ print("\n=== RAW deliveries.csv ===")
14
+ print(f" shape : {deliveries.shape}")
15
+ print(f" columns : {deliveries.columns.tolist()}")
16
+
17
+ match_id_col = "match_id" if "match_id" in matches.columns else "id"
18
+ delivery_id_col = "match_id" if "match_id" in deliveries.columns else "id"
19
+
20
+ print(f"\nMatches ID col : '{match_id_col}'")
21
+ print(f"Deliveries ID col : '{delivery_id_col}'")
22
+
23
+ print(f"\nMatches {match_id_col} nulls : {matches[match_id_col].isna().sum()}")
24
+ print(f"Deliveries {delivery_id_col} nulls : {deliveries[delivery_id_col].isna().sum()}")
25
+
26
+ null_mask = matches[match_id_col].isna()
27
+ print(f"\nRows with null match ID : {null_mask.sum()}")
28
+
29
+ if null_mask.sum() > 0:
30
+ last_valid_id = int(matches[match_id_col].dropna().max())
31
+ new_ids = range(last_valid_id + 1,
32
+ last_valid_id + 1 + null_mask.sum())
33
+ matches.loc[null_mask, match_id_col] = list(new_ids)
34
+ matches[match_id_col] = matches[match_id_col].astype(int)
35
+ print(f"Assigned new IDs : {last_valid_id + 1} → {last_valid_id + null_mask.sum()}")
36
+ else:
37
+ print("No null match IDs — matches.csv is fine.")
38
+
39
+ if match_id_col == "id":
40
+ matches = matches.rename(columns={"id": "match_id"})
41
+ print("Renamed 'id' → 'match_id' in matches.csv")
42
+ match_id_col = "match_id"
43
+
44
+ if delivery_id_col == "id":
45
+ deliveries = deliveries.rename(columns={"id": "match_id"})
46
+ print("Renamed 'id' → 'match_id' in deliveries.csv")
47
+ delivery_id_col = "match_id"
48
+
49
+ valid_ids = set(matches["match_id"].unique())
50
+ delivery_ids = set(deliveries["match_id"].unique())
51
+ orphans = delivery_ids - valid_ids
52
+
53
+ print(f"\nOrphaned delivery match_ids : {len(orphans)}")
54
+
55
+ if orphans:
56
+ print(f"Sample orphan IDs : {list(orphans)[:10]}")
57
+
58
+ new_id_range = set(range(last_valid_id + 1,
59
+ last_valid_id + 1 + null_mask.sum())) \
60
+ if null_mask.sum() > 0 else set()
61
+
62
+ recoverable = orphans & new_id_range
63
+ unrecoverable = orphans - new_id_range
64
+
65
+ print(f" Recoverable (within new ID range) : {len(recoverable)}")
66
+ print(f" Unrecoverable (unknown origin) : {len(unrecoverable)}")
67
+
68
+ if unrecoverable:
69
+ print(f" Dropping {len(unrecoverable)} truly orphaned match_ids from deliveries")
70
+ deliveries = deliveries[
71
+ ~deliveries["match_id"].isin(unrecoverable)
72
+ ].copy()
73
+
74
+ orphans_after = set(deliveries["match_id"].unique()) - set(matches["match_id"].unique())
75
+ print(f"\nOrphaned deliveries after fix : {len(orphans_after)}")
76
+
77
+ matches.to_csv(RAW / "matches.csv", index=False)
78
+ deliveries.to_csv(RAW / "deliveries.csv", index=False)
79
+
80
+ print("\n=== Saved ===")
81
+ print(f" matches.csv : {matches.shape}")
82
+ print(f" deliveries.csv : {deliveries.shape}")
83
+ print(f" Seasons : {sorted(matches['season'].unique())}")
84
+
85
+ m2 = pd.read_csv(RAW / "matches.csv")
86
+ d2 = pd.read_csv(RAW / "deliveries.csv")
87
+
88
+ print("\n=== Post-save verification ===")
89
+ print(f" matches ID col : {'match_id' if 'match_id' in m2.columns else 'id'}")
90
+ print(f" deliveries ID col : {'match_id' if 'match_id' in d2.columns else 'id'}")
91
+ print(f" match_id nulls : {m2['match_id'].isna().sum() if 'match_id' in m2.columns else d2['id'].isna().sum()}")
92
+ final_orphans = set(d2["match_id" if "match_id" in d2.columns else "id"].unique()) - \
93
+ set(m2["match_id" if "match_id" in m2.columns else "id"].unique())
94
+ print(f" Final orphan count : {len(final_orphans)}")
95
+
96
+ if len(final_orphans) == 0:
97
+ print("\nAll clean. Re-run notebook 02 now.")
98
+ else:
99
+ print(f"\nWARNING — {len(final_orphans)} orphans remain. Share output for further diagnosis.")
src/models.py ADDED
@@ -0,0 +1,240 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import joblib, json
2
+ import pandas as pd
3
+ import numpy as np
4
+ from pathlib import Path
5
+ import warnings
6
+ warnings.filterwarnings("ignore", category=UserWarning, module="sklearn")
7
+
8
+ # ── Paths ─────────────────────────────────────────────────────────────
9
+ _BASE = Path(__file__).parent.parent # project root
10
+ MODELS = _BASE / "data" / "processed" / "models"
11
+ DATA = _BASE / "data" / "processed"
12
+
13
+ # ── Load artefacts once at import time ────────────────────────────────
14
+ _wp_model = joblib.load(MODELS / "win_prob_model.pkl")
15
+ _auc_model = joblib.load(MODELS / "auction_model.pkl")
16
+
17
+ with open(MODELS / "win_prob_features.json") as f: _wp_features = json.load(f)
18
+ with open(MODELS / "auction_features.json") as f: _auc_features = json.load(f)
19
+
20
+ _matches = pd.read_csv(DATA / "matches_clean.csv", parse_dates=["date"])
21
+ _deliveries = pd.read_csv(DATA / "deliveries_clean.csv", low_memory=False)
22
+
23
+
24
+ # ── Internal helpers ──────────────────────────────────────────────────
25
+
26
+ def _recent_form(team: str, past: pd.DataFrame, n: int = 5) -> float:
27
+ t = past[(past["team1"]==team)|(past["team2"]==team)].tail(n)
28
+ if len(t) == 0:
29
+ return 0.5
30
+ return round((t["winner"]==team).sum() / len(t), 4)
31
+
32
+
33
+ def _h2h_win_rate(team_a: str, team_b: str, past: pd.DataFrame) -> tuple:
34
+ h = past[
35
+ ((past["team1"]==team_a)&(past["team2"]==team_b))|
36
+ ((past["team1"]==team_b)&(past["team2"]==team_a))
37
+ ]
38
+ if len(h) == 0:
39
+ return 0.5, 0
40
+ return round((h["winner"]==team_a).sum() / len(h), 4), len(h)
41
+
42
+
43
+ def _venue_win_rate(team: str, venue: str, past: pd.DataFrame) -> float:
44
+ v = past[past["venue"]==venue]
45
+ vt = v[(v["team1"]==team)|(v["team2"]==team)]
46
+ if len(vt) == 0:
47
+ return 0.5
48
+ return round((vt["winner"]==team).sum() / len(vt), 4)
49
+
50
+
51
+ def _team_avg_score(team: str, past_ids: list) -> float:
52
+ d = _deliveries[_deliveries["match_id"].isin(past_ids)]
53
+ if d.empty:
54
+ return 150.0
55
+ scores = d[d["batting_team"]==team].groupby("match_id")["total_runs"].sum()
56
+ return round(scores.mean() if len(scores) > 0 else 150.0, 2)
57
+
58
+
59
+ def _team_avg_wickets(team: str, past_ids: list) -> float:
60
+ d = _deliveries[_deliveries["match_id"].isin(past_ids)]
61
+ if d.empty:
62
+ return 7.0
63
+ wkts = d[d["bowling_team"]==team].groupby("match_id")["is_wicket"].sum()
64
+ return round(wkts.mean() if len(wkts) > 0 else 7.0, 2)
65
+
66
+
67
+ def _form_std(team: str, past: pd.DataFrame, n: int = 8) -> float:
68
+ t = past[(past["team1"]==team)|(past["team2"]==team)].tail(n)
69
+ if len(t) < 3:
70
+ return 0.3
71
+ return round(float(np.std((t["winner"]==team).astype(int).tolist())), 4)
72
+
73
+
74
+ # ── Public API ────────────────────────────────────────────────────────
75
+
76
+ def get_available_teams() -> list:
77
+ """Return sorted list of all IPL team names in the dataset."""
78
+ all_teams = pd.concat([
79
+ _matches["team1"], _matches["team2"]
80
+ ]).dropna().unique()
81
+ return sorted(all_teams.tolist())
82
+
83
+
84
+ def get_available_venues() -> list:
85
+ """Return sorted list of all venues in the dataset."""
86
+ return sorted(_matches["venue"].dropna().unique().tolist())
87
+
88
+
89
+ def predict_winner(team1: str, team2: str, venue: str,
90
+ toss_winner: str, toss_decision: str,
91
+ season: int = None) -> dict:
92
+ """
93
+ Predict win probability for a match before it starts.
94
+
95
+ team_A is always the toss winner — consistent with how the model
96
+ was trained (toss_winner_won as target).
97
+
98
+ Returns
99
+ -------
100
+ dict with keys:
101
+ toss_winner : str
102
+ other_team : str
103
+ toss_winner_prob : float (0–100)
104
+ other_team_prob : float (0–100)
105
+ predicted_winner : str
106
+ key_factors : dict
107
+ """
108
+
109
+
110
+ past = _matches[
111
+ _matches["winner"].notna() &
112
+ (_matches["winner"] != "No Result")
113
+ ].copy()
114
+ past_ids = past["match_id"].tolist()
115
+
116
+ team_A = toss_winner
117
+ team_B = team2 if toss_winner == team1 else team1
118
+
119
+
120
+ def _venue_exp(team):
121
+ v = past[past["venue"] == venue]
122
+ vt = v[(v["team1"] == team) | (v["team2"] == team)]
123
+ return len(vt)
124
+
125
+ A_venue_exp = _venue_exp(team_A)
126
+ B_venue_exp = _venue_exp(team_B)
127
+ venue_exp_diff = A_venue_exp - B_venue_exp
128
+
129
+ A_form5 = _recent_form(team_A, past, 5)
130
+ B_form5 = _recent_form(team_B, past, 5)
131
+ A_form10 = _recent_form(team_A, past, 10)
132
+ B_form10 = _recent_form(team_B, past, 10)
133
+ A_overall = _recent_form(team_A, past, len(past))
134
+ B_overall = _recent_form(team_B, past, len(past))
135
+ A_venue = _venue_win_rate(team_A, venue, past)
136
+ B_venue = _venue_win_rate(team_B, venue, past)
137
+ A_score = _team_avg_score(team_A, past_ids)
138
+ B_score = _team_avg_score(team_B, past_ids)
139
+ A_wkts = _team_avg_wickets(team_A, past_ids)
140
+ B_wkts = _team_avg_wickets(team_B, past_ids)
141
+ h2h_wr, h2h_n = _h2h_win_rate(team_A, team_B, past)
142
+ A_cons = _form_std(team_A, past)
143
+ B_cons = _form_std(team_B, past)
144
+
145
+ v_past = past[past["venue"] == venue]
146
+ if len(v_past) >= 5 and "batting_first_won" in v_past.columns:
147
+ vbfwr = round(
148
+ (v_past["batting_first_won"]==1).sum() / len(v_past), 4
149
+ )
150
+ else:
151
+ vbfwr = 0.5
152
+
153
+ toss_correct = int(
154
+ (toss_decision == "bat" and vbfwr >= 0.5) or
155
+ (toss_decision == "field" and vbfwr < 0.5)
156
+ )
157
+
158
+ features = {
159
+ "A_form5" : A_form5,
160
+ "B_form5" : B_form5,
161
+ "form_diff5" : round(A_form5 - B_form5, 4),
162
+ "A_form10" : A_form10,
163
+ "B_form10" : B_form10,
164
+ "form_diff10" : round(A_form10 - B_form10, 4),
165
+ "A_overall_wr" : A_overall,
166
+ "B_overall_wr" : B_overall,
167
+ "overall_wr_diff" : round(A_overall - B_overall, 4),
168
+ "A_venue_wr" : A_venue,
169
+ "B_venue_wr" : B_venue,
170
+ "venue_wr_diff" : round(A_venue - B_venue, 4),
171
+ "A_venue_exp" : A_venue_exp,
172
+ "B_venue_exp" : B_venue_exp,
173
+ "venue_exp_diff" : venue_exp_diff,
174
+ "venue_bat_first_wr": vbfwr,
175
+ "A_avg_score" : A_score,
176
+ "B_avg_score" : B_score,
177
+ "score_diff" : round(A_score - B_score, 2),
178
+ "A_avg_wickets" : A_wkts,
179
+ "B_avg_wickets" : B_wkts,
180
+ "wicket_diff" : round(A_wkts - B_wkts, 2),
181
+ "h2h_wr_A" : h2h_wr,
182
+ "h2h_n" : h2h_n,
183
+ "toss_decision_bat" : 1 if toss_decision == "bat" else 0,
184
+ "toss_correct" : toss_correct,
185
+ "A_consistency" : A_cons,
186
+ "B_consistency" : B_cons,
187
+ "season_stage" : 1,
188
+ }
189
+
190
+ df = pd.DataFrame([features])[_wp_features]
191
+ prob = _wp_model.predict_proba(df)[0]
192
+ a_prob = round(float(prob[1]) * 100, 1)
193
+ b_prob = round(100 - a_prob, 1)
194
+
195
+ return {
196
+ "toss_winner" : team_A,
197
+ "other_team" : team_B,
198
+ "toss_winner_prob": a_prob,
199
+ "other_team_prob" : b_prob,
200
+ "predicted_winner": team_A if a_prob >= 50 else team_B,
201
+ "key_factors" : {
202
+ "form_edge" : team_A if A_form5 > B_form5 else team_B,
203
+ "venue_edge": team_A if A_venue > B_venue else team_B,
204
+ "h2h_edge" : team_A if h2h_wr > 0.5 else team_B,
205
+ "score_edge": team_A if A_score > B_score else team_B,
206
+ },
207
+ }
208
+
209
+
210
+ def predict_auction_value(player_stats: dict) -> dict:
211
+ """
212
+ Predict IPL auction price given a player stats dictionary.
213
+
214
+ Returns
215
+ -------
216
+ dict with keys:
217
+ predicted_price_cr : float
218
+ tier : str
219
+ """
220
+ defaults = {
221
+ "total_runs":0, "batting_average":0, "strike_rate":0,
222
+ "hundreds":0, "fifties":0, "boundary_rate":0,
223
+ "sr_powerplay":110, "sr_death":120, "dot_ball_pct_bat":30,
224
+ "wickets":0, "economy_rate":10.5, "bowling_average":50,
225
+ "bowling_sr":40, "dot_ball_pct_bowl":30, "economy_death":11,
226
+ "economy_powerplay":9, "three_wicket_haul":0,
227
+ "matches_batted":0, "matches_bowled":0, "role":0,
228
+ }
229
+ defaults.update(player_stats)
230
+
231
+ df = pd.DataFrame([defaults])[_auc_features]
232
+ price = round(float(_auc_model.predict(df)[0]), 2)
233
+ price = max(0.2, price)
234
+
235
+ if price >= 12: tier = "Icon (12 Cr+)"
236
+ elif price >= 7: tier = "Premium (7–12 Cr)"
237
+ elif price >= 3: tier = "Standard (3–7 Cr)"
238
+ else: tier = "Emerging (< 3 Cr)"
239
+
240
+ return {"predicted_price_cr": price, "tier": tier}
src/update_dataset.py ADDED
@@ -0,0 +1,399 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # src/update_dataset.py
2
+ import requests, zipfile, io, datetime, json
3
+ import pandas as pd
4
+ import numpy as np
5
+ from pathlib import Path
6
+
7
+ RAW = Path("E:/ipl-analytics/data/raw")
8
+
9
+ SLASH_SEASON_MAP = {
10
+ "2007/08" : 2008,
11
+ "2009/10" : 2010,
12
+ "2020/21" : 2020,
13
+ }
14
+
15
+ def normalize_season(val) -> int:
16
+ val = str(val).strip()
17
+ if val in SLASH_SEASON_MAP:
18
+ return SLASH_SEASON_MAP[val]
19
+ if "/" in val:
20
+ parts = val.split("/")
21
+ prefix = parts[0].strip()[:2]
22
+ suffix = parts[1].strip()
23
+ return int(prefix + suffix)
24
+ return int(float(val.replace("IPL","").replace("Season","").strip()))
25
+
26
+
27
+ def safe_int(val, default: int = 0) -> int:
28
+ try:
29
+ if val is None:
30
+ return default
31
+ if isinstance(val, float) and np.isnan(val):
32
+ return default
33
+ return int(float(val))
34
+ except (ValueError, TypeError):
35
+ return default
36
+
37
+
38
+ def download_cricsheet_json() -> Path:
39
+ url = "https://cricsheet.org/downloads/ipl_json.zip"
40
+ print("Fetching Cricsheet IPL JSON data...")
41
+ r = requests.get(url, timeout=180)
42
+ r.raise_for_status()
43
+ out = RAW / "cricsheet_ipl_json"
44
+ out.mkdir(parents=True, exist_ok=True)
45
+ zipfile.ZipFile(io.BytesIO(r.content)).extractall(out)
46
+ json_files = list(out.glob("*.json"))
47
+ print(f" {len(json_files)} JSON match files extracted.")
48
+ return out
49
+
50
+
51
+ def get_existing_seasons(matches_path: Path) -> set:
52
+ df = pd.read_csv(matches_path, usecols=["season"])
53
+ return set(df["season"].apply(normalize_season).unique())
54
+
55
+
56
+ def parse_json_match(filepath: Path, match_id: int) -> tuple:
57
+ try:
58
+ with open(filepath, encoding="utf-8") as f:
59
+ data = json.load(f)
60
+ except Exception:
61
+ return None, []
62
+
63
+ info = data.get("info", {})
64
+
65
+ # ── Season ────────────────────────────────────────────────────────
66
+ try:
67
+ season = normalize_season(info.get("season", ""))
68
+ except Exception:
69
+ return None, []
70
+
71
+ # ── Teams ─────────────────────────────────────────────────────────
72
+ teams = info.get("teams", [])
73
+ if len(teams) < 2:
74
+ return None, []
75
+ team1 = teams[0]
76
+ team2 = teams[1]
77
+
78
+ # ── Date ──────────────────────────────────────────────────────────
79
+ dates = info.get("dates", [])
80
+ raw_date = dates[0] if dates else np.nan
81
+ parsed_date = pd.to_datetime(raw_date, errors="coerce")
82
+ day_of_week = parsed_date.day_name() if pd.notna(parsed_date) else np.nan
83
+ month = int(parsed_date.month) if pd.notna(parsed_date) else np.nan
84
+
85
+ # ── Toss — directly from info["toss"] dict ────────────────────────
86
+ toss = info.get("toss", {})
87
+ toss_winner = toss.get("winner", np.nan)
88
+ toss_decision = toss.get("decision", np.nan)
89
+
90
+ # ── Outcome ───────────────────────────────────────────────────────
91
+ outcome = info.get("outcome", {})
92
+ winner = outcome.get("winner", np.nan)
93
+ is_no_result = 0
94
+
95
+ if pd.isna(winner) or winner == "":
96
+ if outcome.get("result") == "no result" or "result" in outcome:
97
+ winner = "No Result"
98
+ is_no_result = 1
99
+ else:
100
+ winner = "No Result"
101
+
102
+ by = outcome.get("by", {})
103
+ result_margin = 0
104
+ result_type = "normal"
105
+ if "runs" in by:
106
+ result_margin = safe_int(by["runs"])
107
+ result_type = "runs"
108
+ elif "wickets" in by:
109
+ result_margin = safe_int(by["wickets"])
110
+ result_type = "wickets"
111
+
112
+ # ── Player of match ───────────────────────────────────────────────
113
+ pom_list = info.get("player_of_match", [])
114
+ player_of_match = pom_list[0] if pom_list else np.nan
115
+
116
+ # ── Venue / city ──────────────────────────────────────────────────
117
+ venue = info.get("venue", np.nan)
118
+ city = info.get("city", np.nan)
119
+
120
+ match_row = {
121
+ "match_id" : match_id,
122
+ "season" : season,
123
+ "date" : raw_date,
124
+ "team1" : team1,
125
+ "team2" : team2,
126
+ "toss_winner" : toss_winner,
127
+ "toss_decision" : toss_decision,
128
+ "winner" : winner,
129
+ "player_of_match" : player_of_match,
130
+ "venue" : venue,
131
+ "result" : result_type,
132
+ "result_margin" : result_margin,
133
+ "method" : info.get("method", np.nan),
134
+ "city" : city,
135
+ "is_no_result" : is_no_result,
136
+ "result_type" : result_type,
137
+ "day_of_week" : day_of_week,
138
+ "month" : month,
139
+ }
140
+
141
+ # ── Deliveries ────────────────────────────────────────────────────
142
+ delivery_rows = []
143
+
144
+ for inning_idx, inning in enumerate(data.get("innings", []), start=1):
145
+ batting_team = inning.get("team", np.nan)
146
+ bowling_team = team2 if batting_team == team1 else team1
147
+
148
+ for over_data in inning.get("overs", []):
149
+ over_num = safe_int(over_data.get("over", 0)) + 1
150
+
151
+ if over_num <= 6: phase = "powerplay"
152
+ elif over_num <= 15: phase = "middle"
153
+ else: phase = "death"
154
+
155
+ for ball_idx, delivery in enumerate(
156
+ over_data.get("deliveries", []), start=1
157
+ ):
158
+ runs = delivery.get("runs", {})
159
+ bat_runs = safe_int(runs.get("batter", 0))
160
+ extra_runs = safe_int(runs.get("extras", 0))
161
+ total_runs = safe_int(runs.get("total", 0))
162
+
163
+ extras = delivery.get("extras", {})
164
+ wide_runs = safe_int(extras.get("wides", 0))
165
+ noball = safe_int(extras.get("noballs", 0))
166
+ bye_runs = safe_int(extras.get("byes", 0))
167
+ legbye_runs = safe_int(extras.get("legbyes", 0))
168
+ is_legal = 1 if (wide_runs == 0 and noball == 0) else 0
169
+
170
+ wickets = delivery.get("wickets", [])
171
+ is_wicket = 1 if wickets else 0
172
+ wicket_type = np.nan
173
+ player_dismissed = np.nan
174
+ fielder = np.nan
175
+
176
+ if wickets:
177
+ w = wickets[0]
178
+ wicket_type = w.get("kind", np.nan)
179
+ player_dismissed = w.get("player_out", np.nan)
180
+ fielders = w.get("fielders", [])
181
+ fielder = (fielders[0].get("name", np.nan)
182
+ if fielders else np.nan)
183
+
184
+ delivery_rows.append({
185
+ "match_id" : match_id,
186
+ "inning" : inning_idx,
187
+ "batting_team" : batting_team,
188
+ "bowling_team" : bowling_team,
189
+ "over" : over_num,
190
+ "ball" : ball_idx,
191
+ "batter" : delivery.get("batter", np.nan),
192
+ "non_striker" : delivery.get("non_striker", np.nan),
193
+ "bowler" : delivery.get("bowler", np.nan),
194
+ "wide_runs" : wide_runs,
195
+ "bye_runs" : bye_runs,
196
+ "legbye_runs" : legbye_runs,
197
+ "noball_runs" : noball,
198
+ "batsman_runs" : bat_runs,
199
+ "extra_runs" : extra_runs,
200
+ "total_runs" : total_runs,
201
+ "player_dismissed" : player_dismissed,
202
+ "dismissal_kind" : wicket_type,
203
+ "fielder" : fielder,
204
+ "extras_type" : np.nan,
205
+ "is_wicket" : is_wicket,
206
+ "is_four" : 1 if bat_runs == 4 else 0,
207
+ "is_six" : 1 if bat_runs == 6 else 0,
208
+ "is_dot_ball" : 1 if (bat_runs == 0 and
209
+ wide_runs == 0 and
210
+ noball == 0) else 0,
211
+ "is_legal_delivery": is_legal,
212
+ "over_phase" : phase,
213
+ })
214
+
215
+ return match_row, delivery_rows
216
+
217
+
218
+ def build_dataframes_from_json(json_dir: Path,
219
+ seasons_to_add: list,
220
+ start_match_id: int) -> tuple:
221
+ json_files = sorted(json_dir.glob("*.json"))
222
+ print(f"Scanning {len(json_files)} JSON files "
223
+ f"for seasons {seasons_to_add}...")
224
+
225
+ match_rows = []
226
+ delivery_rows = []
227
+ next_id = start_match_id
228
+ skipped = 0
229
+
230
+ for fp in json_files:
231
+ try:
232
+ with open(fp, encoding="utf-8") as f:
233
+ peek = json.load(f)
234
+ season = normalize_season(
235
+ peek.get("info", {}).get("season", "")
236
+ )
237
+ except Exception:
238
+ skipped += 1
239
+ continue
240
+
241
+ if season not in seasons_to_add:
242
+ continue
243
+
244
+ match_row, deliveries = parse_json_match(fp, next_id)
245
+ if match_row is None:
246
+ skipped += 1
247
+ continue
248
+
249
+ match_rows.append(match_row)
250
+ delivery_rows.extend(deliveries)
251
+ next_id += 1
252
+
253
+ new_matches = pd.DataFrame(match_rows)
254
+ new_deliveries = pd.DataFrame(delivery_rows)
255
+
256
+ if not new_matches.empty:
257
+ print(f" Parsed : {len(new_matches)} matches, "
258
+ f"{len(new_deliveries):,} deliveries")
259
+ print(f" toss_winner nulls : "
260
+ f"{new_matches['toss_winner'].isna().sum()}")
261
+ print(f" winner nulls : "
262
+ f"{new_matches['winner'].isna().sum()}")
263
+ print(f" Skipped : {skipped} files")
264
+
265
+ return new_matches, new_deliveries
266
+
267
+
268
+ def append_new_seasons(seasons_to_add: list = None,
269
+ force: list = None):
270
+ matches_path = RAW / "matches.csv"
271
+ deliveries_path = RAW / "deliveries.csv"
272
+
273
+ existing_matches = pd.read_csv(matches_path)
274
+ existing_deliveries = pd.read_csv(
275
+ deliveries_path, low_memory=False
276
+ )
277
+
278
+ # ── Normalise ID column ────────────────────────────────────────────
279
+ if "id" in existing_matches.columns \
280
+ and "match_id" not in existing_matches.columns:
281
+ existing_matches = existing_matches.rename(
282
+ columns={"id": "match_id"}
283
+ )
284
+ existing_matches.to_csv(matches_path, index=False)
285
+ print("Renamed 'id' → 'match_id' in matches.csv")
286
+
287
+ if "id" in existing_deliveries.columns \
288
+ and "match_id" not in existing_deliveries.columns:
289
+ existing_deliveries = existing_deliveries.rename(
290
+ columns={"id": "match_id"}
291
+ )
292
+ existing_deliveries.to_csv(deliveries_path, index=False)
293
+ print("Renamed 'id' → 'match_id' in deliveries.csv")
294
+
295
+ existing_seasons = get_existing_seasons(matches_path)
296
+ print(f"Existing seasons : {sorted(existing_seasons)}")
297
+
298
+ current_year = datetime.date.today().year
299
+ if seasons_to_add is None:
300
+ seasons_to_add = list(range(2025, current_year + 1))
301
+
302
+ # ── Force refresh ──────────────────────────────────────────────────
303
+ if force:
304
+ print(f"Force-refreshing : {force}")
305
+ existing_matches["_season_norm"] = (
306
+ existing_matches["season"].apply(normalize_season)
307
+ )
308
+ forced_match_ids = set(
309
+ existing_matches.loc[
310
+ existing_matches["_season_norm"].isin(force),
311
+ "match_id"
312
+ ].tolist()
313
+ )
314
+ existing_matches = existing_matches[
315
+ ~existing_matches["_season_norm"].isin(force)
316
+ ].drop(columns=["_season_norm"]).copy()
317
+
318
+ existing_deliveries = existing_deliveries[
319
+ ~existing_deliveries["match_id"].isin(forced_match_ids)
320
+ ].copy()
321
+
322
+ existing_seasons -= set(force)
323
+ print(f" Removed {len(forced_match_ids)} matches "
324
+ f"and their deliveries.")
325
+
326
+ seasons_to_add = [
327
+ s for s in seasons_to_add if s not in existing_seasons
328
+ ]
329
+
330
+ if not seasons_to_add:
331
+ print("All requested seasons already present.")
332
+ print("To refresh: python update_dataset.py 2026 --force")
333
+ return
334
+
335
+ print(f"Seasons to add : {seasons_to_add}")
336
+
337
+ json_dir = download_cricsheet_json()
338
+ next_id = int(existing_matches["match_id"].max()) + 1
339
+
340
+ new_matches, new_deliveries = build_dataframes_from_json(
341
+ json_dir, seasons_to_add, next_id
342
+ )
343
+
344
+ if new_matches.empty:
345
+ print(f"No matches found for {seasons_to_add}.")
346
+ return
347
+
348
+ # ── Align columns ──────────────────────────────────────────────────
349
+ for col in existing_matches.columns:
350
+ if col not in new_matches.columns:
351
+ new_matches[col] = np.nan
352
+ new_matches = new_matches[existing_matches.columns]
353
+
354
+ for col in existing_deliveries.columns:
355
+ if col not in new_deliveries.columns:
356
+ new_deliveries[col] = np.nan
357
+ new_deliveries = new_deliveries[existing_deliveries.columns]
358
+
359
+ assert new_matches["match_id"].notna().all(), \
360
+ "Null match_id in new matches after alignment — abort"
361
+
362
+ # ── Concat and save ───────────────────────────────────────────────
363
+ combined_matches = pd.concat(
364
+ [existing_matches, new_matches], ignore_index=True
365
+ )
366
+ combined_deliveries = pd.concat(
367
+ [existing_deliveries, new_deliveries], ignore_index=True
368
+ )
369
+
370
+ combined_matches.to_csv(matches_path, index=False)
371
+ combined_deliveries.to_csv(deliveries_path, index=False)
372
+
373
+ print(f"\nDone:")
374
+ print(f" matches.csv : {len(combined_matches):,} rows "
375
+ f"(added {len(new_matches)})")
376
+ print(f" deliveries.csv : {len(combined_deliveries):,} rows "
377
+ f"(added {len(new_deliveries):,})")
378
+ print(f" New seasons : "
379
+ f"{sorted(new_matches['season'].unique())}")
380
+ print(f" toss_winner nulls : "
381
+ f"{new_matches['toss_winner'].isna().sum()}")
382
+ print(f" winner nulls : "
383
+ f"{new_matches['winner'].isna().sum()}")
384
+
385
+
386
+ # ── CLI ───────────────────────────────────────────────────────────────
387
+ if __name__ == "__main__":
388
+ import sys
389
+
390
+ args = [a for a in sys.argv[1:] if not a.startswith("--")]
391
+ flags = [a for a in sys.argv[1:] if a.startswith("--")]
392
+
393
+ force_refresh = [int(a) for a in args] if "--force" in flags else None
394
+ seasons = [int(a) for a in args] if "--force" not in flags else None
395
+
396
+ append_new_seasons(
397
+ seasons_to_add=seasons,
398
+ force=force_refresh,
399
+ )
waitress_server.py ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import sys
2
+ from pathlib import Path
3
+
4
+ ROOT = Path(__file__).parent
5
+ DASHBOARD = ROOT / "dashboard"
6
+ sys.path.insert(0, str(ROOT))
7
+ sys.path.insert(0, str(DASHBOARD))
8
+
9
+ from waitress import serve
10
+ from dashboard.app import server
11
+
12
+ if __name__ == "__main__":
13
+ print("Starting IPL Analytics Platform...")
14
+ print("Open http://0.0.0.0:8050 in your browser")
15
+ serve(server, host="0.0.0.0", port=8050, threads=4)