In [1]:
import pandas as pd

50 Over Batting¶

In [2]:
# Load the data from both Excel files
df_regionalliga_batting = pd.read_excel('F50/BCV-Regionalliga-Bayern 2024 Batting Records - Bayerischer Cricket Verband e.V..xlsx')
df_verbandsliga_batting = pd.read_excel('F50/BCV-Verbandsliga-Bayern 2024 Batting Records - Bayerischer Cricket Verband e.V..xlsx')

# Standardize column names
df_regionalliga_batting.columns = df_regionalliga_batting.columns.str.strip().str.lower()
df_verbandsliga_batting.columns = df_verbandsliga_batting.columns.str.strip().str.lower()

# Ensure both DataFrames have the same columns
df_regionalliga_batting = df_regionalliga_batting[df_verbandsliga_batting.columns]

# Merge the two DataFrames along rows
df_combined_batting = pd.concat([df_regionalliga_batting, df_verbandsliga_batting], ignore_index=True)
In [3]:
output_file = 'F50/Combined_BCV_Batting_Records_2024.xlsx'
df_combined_batting.to_excel(output_file, index=False)

Top 20 by runs¶

In [4]:
# Convert columns 'runs' and 'avg' to numeric, forcing errors to NaN (if any)
df_combined_batting['runs'] = pd.to_numeric(df_combined_batting['runs'], errors='coerce')
df_combined_batting['avg'] = pd.to_numeric(df_combined_batting['avg'], errors='coerce')

# Sort by 'runs' (descending)
top_20_by_runs = df_combined_batting.sort_values(by=['runs'], ascending=[False]).head(20)
top_20_by_runs
Out[4]:
# player group team mat inns no runs 4's 6's 50's 100's hs sr avg
0 1 Sasi Kiran Alur REGIONAL LEAGUE SUD BATCC-I 12 12 0 349 33 3 2 0 56 60.38 29.08
1 2 Zeeshan Sami REGIONAL LEAGUE SUD BATCC-I 12 12 1 280 34 7 2 0 94 83.83 25.45
2 3 Rohit Verma Regional League Nord BATCC-II 10 9 1 221 16 5 1 0 51 56.09 27.62
3 4 Muhammad Talha REGIONAL LEAGUE SUD BATCC-I 11 11 1 159 13 9 0 1 130 82.81 15.90
46 1 Arjun Nadol South Centre - I BATCC-III 8 8 0 153 15 5 1 0 50 57.52 19.12
4 5 Vineep Bhat REGIONAL LEAGUE SUD BATCC-I 12 12 0 152 15 1 0 0 41 79.17 12.67
5 6 Praveen Daneti REGIONAL LEAGUE SUD BATCC-I 9 9 0 122 8 8 1 0 60 79.74 13.56
6 7 Md. Essa Haqbin REGIONAL LEAGUE SUD BATCC-I 3 3 0 120 10 2 1 0 64 74.53 40.00
7 8 Rajesh Kumar Srivastava Regional League Nord BATCC-II 7 6 0 120 15 0 0 0 37 57.69 20.00
8 9 Deepak Kamal Regional League Nord BATCC-II 8 8 0 116 7 2 0 0 33 48.95 14.50
9 10 Satya Prakash Sahoo REGIONAL LEAGUE SUD BATCC-I 13 13 1 102 9 2 0 0 16 42.68 8.50
10 11 Amaljith Narayanan Nair Regional League Nord BATCC-II 9 8 0 95 4 1 0 0 30 38.93 11.88
47 2 Haris Ali South Centre - I BATCC-III 9 9 0 94 7 4 0 0 44 59.49 10.44
11 12 Sanjeev Sivaraman REGIONAL LEAGUE SUD BATCC-I 7 7 1 85 8 0 0 0 40 43.37 14.17
12 13 Shashidhara Hanumaiah Veerabhadraiah REGIONAL LEAGUE SUD BATCC-I 9 9 0 78 10 0 0 0 27 52.70 8.67
13 14 Nitesh Singh REGIONAL LEAGUE SUD BATCC-I 14 13 3 75 3 1 0 0 16 56.39 7.50
14 15 Manjunatha Muniramaiah REGIONAL LEAGUE SUD BATCC-I 6 6 0 72 3 5 0 0 22 66.67 12.00
15 16 Saurabh Singh Patel Regional League Nord BATCC-II 11 10 0 71 5 2 0 0 30 42.51 7.10
48 3 Ashish Satpathy South Centre - I BATCC-III 5 5 1 62 7 0 0 0 33 48.82 15.50
16 17 Nitin Madan REGIONAL LEAGUE SUD BATCC-I 11 11 3 61 4 0 0 0 17 38.61 7.62

Top 20 by average. Only those conisdered who have played more matches than the team mean.¶

In [5]:
# Calculate the mean of 'mat' column to use as 'n'
n = df_combined_batting['mat'].mean()
print('Mean of matches across players:', n)
# Filter players who have played at least 'n' matches
filtered_df = df_combined_batting[df_combined_batting['mat'] >= n]

# Sort by 'avg' in descending order to find the top 10 players by average
top_20_by_avg = filtered_df.sort_values(by=['avg'], ascending=[False]).head(20)
top_20_by_avg
Mean of matches across players: 5.171428571428572
Out[5]:
# player group team mat inns no runs 4's 6's 50's 100's hs sr avg
0 1 Sasi Kiran Alur REGIONAL LEAGUE SUD BATCC-I 12 12 0 349 33 3 2 0 56 60.38 29.08
2 3 Rohit Verma Regional League Nord BATCC-II 10 9 1 221 16 5 1 0 51 56.09 27.62
1 2 Zeeshan Sami REGIONAL LEAGUE SUD BATCC-I 12 12 1 280 34 7 2 0 94 83.83 25.45
7 8 Rajesh Kumar Srivastava Regional League Nord BATCC-II 7 6 0 120 15 0 0 0 37 57.69 20.00
46 1 Arjun Nadol South Centre - I BATCC-III 8 8 0 153 15 5 1 0 50 57.52 19.12
3 4 Muhammad Talha REGIONAL LEAGUE SUD BATCC-I 11 11 1 159 13 9 0 1 130 82.81 15.90
8 9 Deepak Kamal Regional League Nord BATCC-II 8 8 0 116 7 2 0 0 33 48.95 14.50
11 12 Sanjeev Sivaraman REGIONAL LEAGUE SUD BATCC-I 7 7 1 85 8 0 0 0 40 43.37 14.17
5 6 Praveen Daneti REGIONAL LEAGUE SUD BATCC-I 9 9 0 122 8 8 1 0 60 79.74 13.56
4 5 Vineep Bhat REGIONAL LEAGUE SUD BATCC-I 12 12 0 152 15 1 0 0 41 79.17 12.67
14 15 Manjunatha Muniramaiah REGIONAL LEAGUE SUD BATCC-I 6 6 0 72 3 5 0 0 22 66.67 12.00
10 11 Amaljith Narayanan Nair Regional League Nord BATCC-II 9 8 0 95 4 1 0 0 30 38.93 11.88
50 5 Fahad Munawwar South Centre - I BATCC-III 6 6 2 45 2 1 0 0 18 27.95 11.25
47 2 Haris Ali South Centre - I BATCC-III 9 9 0 94 7 4 0 0 44 59.49 10.44
12 13 Shashidhara Hanumaiah Veerabhadraiah REGIONAL LEAGUE SUD BATCC-I 9 9 0 78 10 0 0 0 27 52.70 8.67
9 10 Satya Prakash Sahoo REGIONAL LEAGUE SUD BATCC-I 13 13 1 102 9 2 0 0 16 42.68 8.50
22 23 Bhavin Kantilal Solanki REGIONAL LEAGUE SUD BATCC-I 6 5 0 39 2 1 0 0 31 57.35 7.80
16 17 Nitin Madan REGIONAL LEAGUE SUD BATCC-I 11 11 3 61 4 0 0 0 17 38.61 7.62
13 14 Nitesh Singh REGIONAL LEAGUE SUD BATCC-I 14 13 3 75 3 1 0 0 16 56.39 7.50
23 24 Amit Rajendra Desai REGIONAL LEAGUE SUD BATCC-I 10 9 4 36 1 1 0 0 14 48.65 7.20

T20 Batting¶

In [6]:
# 20 Over Batting
# Load the data from both Excel files
df_regionalliga_batting = pd.read_excel('T20/T20 1.Verbandsliga - 2024 Batting Records - Bayerischer Cricket Verband e.V..xlsx')
df_verbandsliga_batting = pd.read_excel('T20/T20 2. Verbandsliga - 2024 Batting Records - Bayerischer Cricket Verband e.V..xlsx')

# Standardize column names
df_regionalliga_batting.columns = df_regionalliga_batting.columns.str.strip().str.lower()
df_verbandsliga_batting.columns = df_verbandsliga_batting.columns.str.strip().str.lower()

# Ensure both DataFrames have the same columns
df_regionalliga_batting = df_regionalliga_batting[df_verbandsliga_batting.columns]

# Merge the two DataFrames along rows
df_combined_batting = pd.concat([df_regionalliga_batting, df_verbandsliga_batting], ignore_index=True)
In [7]:
output_file = 'T20/Combined_BCV_Batting_Records_2024.xlsx'
df_combined_batting.to_excel(output_file, index=False)

Top 20 by runs¶

In [8]:
# Convert columns 'runs' and 'avg' to numeric, forcing errors to NaN (if any)
df_combined_batting['runs'] = pd.to_numeric(df_combined_batting['runs'], errors='coerce')
df_combined_batting['avg'] = pd.to_numeric(df_combined_batting['avg'], errors='coerce')

# Sort by 'runs' (descending) 
top_20_by_runs = df_combined_batting.sort_values(by=['runs'], ascending=[False]).head(20)
top_20_by_runs
Out[8]:
# player group team mat inns no runs 4's 6's 50's 100's hs sr avg
0 1 Shashidhara Hanumaiah Veerabhadraiah A BATCC-I 11 10 0 207 18 6 0 0 40 82.47 20.70
1 2 Muhammad Talha A BATCC-I 14 12 0 189 8 13 0 0 49 87.50 15.75
45 1 Arjun Nadol B BATCC-III 8 8 0 162 12 8 1 0 57 86.17 20.25
46 2 Ashish Joshi B BATCC-III 6 6 1 159 10 11 0 1 100 150.00 31.80
2 3 Saurabh Singh Patel B BATCC-II 10 10 1 152 10 6 0 0 39 108.57 16.89
3 4 Rohit Verma B BATCC-II 10 10 1 135 12 1 0 0 30 84.38 15.00
4 5 Sushanth Reddy Chandamollu B BATCC-II 6 6 0 123 9 0 0 0 35 91.11 20.50
5 6 Manjunatha Muniramaiah A BATCC-I 5 4 0 117 9 6 0 0 49 150.00 29.25
6 7 Amaljith Narayanan Nair B BATCC-II 10 10 1 109 11 1 1 0 56 87.20 12.11
7 8 Mohammad Essa Haqbin A BATCC-I 2 2 1 106 11 7 1 0 68 153.62 106.00
8 9 Praveen Daneti A BATCC-I 13 11 2 87 1 8 0 0 22 102.35 9.67
9 10 Satya Prakash Sahoo A BATCC-I 9 8 1 83 2 4 0 0 25 95.40 11.86
10 11 Venkat Vinay Ayyagari A BATCC-I 12 9 1 72 3 3 0 0 18 71.29 9.00
11 12 Vineep Bhat A BATCC-I 10 9 0 71 1 1 0 0 18 71.72 7.89
12 13 Zeeshan Sami A BATCC-I 7 7 1 70 7 2 0 0 40 89.74 11.67
13 14 Sasi Kiran Alur A BATCC-I 6 5 0 65 5 0 0 0 24 75.58 13.00
14 15 Ashish Joshi A BATCC-I 2 2 1 63 4 5 0 0 43 157.50 63.00
15 16 Deepak Kamal B BATCC-II 9 9 0 56 5 0 0 0 13 53.33 6.22
16 17 Apurva Sharma B BATCC-II 6 6 0 49 1 3 0 0 18 104.26 8.17
17 18 Sanjeev Sivaraman A BATCC-I 3 3 1 46 1 0 0 0 38 67.65 23.00

Top 20 by average. Only those conisdered who have played more matches than the team mean.¶

In [9]:
# Calculate the mean of 'mat' column to use as 'n'
n = df_combined_batting['mat'].mean()
print('Mean of matches across players:', n)
# Filter players who have played at least 'n' matches
filtered_df = df_combined_batting[df_combined_batting['mat'] >= n]

# Sort by 'avg' in descending order to find the top 10 players by average
top_20_by_avg = filtered_df.sort_values(by=['avg'], ascending=[False]).head(20)
top_20_by_avg
Mean of matches across players: 4.855072463768116
Out[9]:
# player group team mat inns no runs 4's 6's 50's 100's hs sr avg
46 2 Ashish Joshi B BATCC-III 6 6 1 159 10 11 0 1 100 150.00 31.80
5 6 Manjunatha Muniramaiah A BATCC-I 5 4 0 117 9 6 0 0 49 150.00 29.25
0 1 Shashidhara Hanumaiah Veerabhadraiah A BATCC-I 11 10 0 207 18 6 0 0 40 82.47 20.70
4 5 Sushanth Reddy Chandamollu B BATCC-II 6 6 0 123 9 0 0 0 35 91.11 20.50
45 1 Arjun Nadol B BATCC-III 8 8 0 162 12 8 1 0 57 86.17 20.25
2 3 Saurabh Singh Patel B BATCC-II 10 10 1 152 10 6 0 0 39 108.57 16.89
1 2 Muhammad Talha A BATCC-I 14 12 0 189 8 13 0 0 49 87.50 15.75
3 4 Rohit Verma B BATCC-II 10 10 1 135 12 1 0 0 30 84.38 15.00
13 14 Sasi Kiran Alur A BATCC-I 6 5 0 65 5 0 0 0 24 75.58 13.00
6 7 Amaljith Narayanan Nair B BATCC-II 10 10 1 109 11 1 1 0 56 87.20 12.11
9 10 Satya Prakash Sahoo A BATCC-I 9 8 1 83 2 4 0 0 25 95.40 11.86
12 13 Zeeshan Sami A BATCC-I 7 7 1 70 7 2 0 0 40 89.74 11.67
8 9 Praveen Daneti A BATCC-I 13 11 2 87 1 8 0 0 22 102.35 9.67
26 27 Amit Rajendra Desai A BATCC-I 10 6 4 19 1 0 0 0 10 111.76 9.50
10 11 Venkat Vinay Ayyagari A BATCC-I 12 9 1 72 3 3 0 0 18 71.29 9.00
16 17 Apurva Sharma B BATCC-II 6 6 0 49 1 3 0 0 18 104.26 8.17
11 12 Vineep Bhat A BATCC-I 10 9 0 71 1 1 0 0 18 71.72 7.89
15 16 Deepak Kamal B BATCC-II 9 9 0 56 5 0 0 0 13 53.33 6.22
47 3 Haris Ali B BATCC-III 8 7 0 43 3 1 0 0 13 97.73 6.14
32 33 Manav Gidra B BATCC-II 6 3 1 11 1 0 0 0 8 73.33 5.50

Top 20 by strike rate. Only those conisdered who have scored more than the team mean.¶

In [10]:
# Calculate the mean of 'mat' column to use as 'n'
n = df_combined_batting['runs'].mean()
print('Mean of runs across players:', n)
# Filter players who have scored atleast n runs
filtered_df = df_combined_batting[df_combined_batting['runs'] >= n]

# Sort by 'avg' in descending order to find the top 10 players by strike rate
top_20_by_strikerate = filtered_df.sort_values(by=['sr'], ascending=[False]).head(20)
top_20_by_strikerate
Mean of runs across players: 40.84057971014493
Out[10]:
# player group team mat inns no runs 4's 6's 50's 100's hs sr avg
14 15 Ashish Joshi A BATCC-I 2 2 1 63 4 5 0 0 43 157.50 63.00
7 8 Mohammad Essa Haqbin A BATCC-I 2 2 1 106 11 7 1 0 68 153.62 106.00
5 6 Manjunatha Muniramaiah A BATCC-I 5 4 0 117 9 6 0 0 49 150.00 29.25
46 2 Ashish Joshi B BATCC-III 6 6 1 159 10 11 0 1 100 150.00 31.80
2 3 Saurabh Singh Patel B BATCC-II 10 10 1 152 10 6 0 0 39 108.57 16.89
16 17 Apurva Sharma B BATCC-II 6 6 0 49 1 3 0 0 18 104.26 8.17
8 9 Praveen Daneti A BATCC-I 13 11 2 87 1 8 0 0 22 102.35 9.67
47 3 Haris Ali B BATCC-III 8 7 0 43 3 1 0 0 13 97.73 6.14
9 10 Satya Prakash Sahoo A BATCC-I 9 8 1 83 2 4 0 0 25 95.40 11.86
48 4 Md. Essa Haqbin B BATCC-III 2 2 0 41 5 1 0 0 41 95.35 20.50
4 5 Sushanth Reddy Chandamollu B BATCC-II 6 6 0 123 9 0 0 0 35 91.11 20.50
12 13 Zeeshan Sami A BATCC-I 7 7 1 70 7 2 0 0 40 89.74 11.67
1 2 Muhammad Talha A BATCC-I 14 12 0 189 8 13 0 0 49 87.50 15.75
6 7 Amaljith Narayanan Nair B BATCC-II 10 10 1 109 11 1 1 0 56 87.20 12.11
45 1 Arjun Nadol B BATCC-III 8 8 0 162 12 8 1 0 57 86.17 20.25
3 4 Rohit Verma B BATCC-II 10 10 1 135 12 1 0 0 30 84.38 15.00
0 1 Shashidhara Hanumaiah Veerabhadraiah A BATCC-I 11 10 0 207 18 6 0 0 40 82.47 20.70
13 14 Sasi Kiran Alur A BATCC-I 6 5 0 65 5 0 0 0 24 75.58 13.00
11 12 Vineep Bhat A BATCC-I 10 9 0 71 1 1 0 0 18 71.72 7.89
10 11 Venkat Vinay Ayyagari A BATCC-I 12 9 1 72 3 3 0 0 18 71.29 9.00

50 Over Bowling¶

In [11]:
# Load the data from both Excel files
df_regionalliga_bowling = pd.read_excel('F50/BCV-Regionalliga-Bayern 2024 Bowling Records - Bayerischer Cricket Verband e.V..xlsx')
df_verbandsliga_bowling = pd.read_excel('F50/BCV-Verbandsliga-Bayern 2024 Bowling Records - Bayerischer Cricket Verband e.V..xlsx')

# Standardize column names
df_regionalliga_bowling.columns = df_regionalliga_bowling.columns.str.strip().str.lower()
df_verbandsliga_bowling.columns = df_verbandsliga_bowling.columns.str.strip().str.lower()

# Ensure both DataFrames have the same columns
df_regionalliga_bowling = df_regionalliga_bowling[df_verbandsliga_bowling.columns]

# Merge the two DataFrames along rows
df_combined_bowling = pd.concat([df_regionalliga_bowling, df_verbandsliga_bowling], ignore_index=True)
In [12]:
output_file = 'F50/Combined_BCV_Bowling_Records_2024.xlsx'
df_combined_bowling.to_excel(output_file, index=False)
In [13]:
df_combined_bowling.columns
Out[13]:
Index(['#', 'player', 'group', 'team', 'mat', 'inns', 'overs', 'runs', 'wkts',
       'bbf', 'mdns', 'dots', 'econ', 'avg', 'sr', 'hat-trick', '4w', '5w',
       'wides', 'nb'],
      dtype='object')

Top 20 wicket takers¶

In [14]:
# Convert columns 'wkts' and 'econ' to numeric, forcing errors to NaN (if any)
df_combined_bowling['wkts'] = pd.to_numeric(df_combined_bowling['wkts'], errors='coerce')
df_combined_bowling['econ'] = pd.to_numeric(df_combined_bowling['econ'], errors='coerce')
df_combined_bowling['overs'] = pd.to_numeric(df_combined_bowling['overs'], errors='coerce')

# Sort by 'wkts' (descending)
top_20_by_wkts = df_combined_bowling.sort_values(by=['wkts'], ascending=[False]).head(20)
top_20_by_wkts
Out[14]:
# player group team mat inns overs runs wkts bbf mdns dots econ avg sr hat-trick 4w 5w wides nb
0 1 Satya Prakash Sahoo REGIONAL LEAGUE SUD BATCC-I 13 12 107.1 274 20 10/ 4 15 485 2.56 13.70 32.1 0 2 0 32 5
1 2 Amit Rajendra Desai REGIONAL LEAGUE SUD BATCC-I 10 10 61.1 251 18 17/ 3 2 256 4.10 13.94 20.4 0 0 0 51 3
2 3 Vineep Bhat REGIONAL LEAGUE SUD BATCC-I 12 11 77.0 286 17 33/ 3 5 314 3.71 16.82 27.2 0 0 0 21 1
3 4 Nitesh Singh REGIONAL LEAGUE SUD BATCC-I 14 12 58.1 251 16 26/ 5 5 231 4.32 15.69 21.8 0 0 1 39 2
4 5 Rohit Verma Regional League Nord BATCC-II 10 10 59.0 413 15 30/ 4 2 200 7.00 27.53 23.6 0 1 0 68 4
5 6 Rajesh Kumar Srivastava Regional League Nord BATCC-II 7 7 46.4 270 13 27/ 3 3 189 5.79 20.77 21.5 0 0 0 72 0
6 7 Manjunatha Muniramaiah REGIONAL LEAGUE SUD BATCC-I 6 5 34.0 130 12 37/ 4 3 153 3.82 10.83 17.0 0 1 0 30 0
7 8 Vineet Bhola Regional League Nord BATCC-II 8 8 53.0 350 12 22/ 3 5 171 6.60 29.17 26.5 0 0 0 27 0
8 9 Nitin Madan REGIONAL LEAGUE SUD BATCC-I 11 10 62.2 244 11 30/ 3 5 257 3.91 22.18 34.0 0 0 0 11 2
27 1 Haris Ali South Centre - I BATCC-III 9 9 53.1 270 10 9/ 2 1 201 5.08 27.00 31.9 0 0 0 54 1
28 2 Mohammed Shakir South Centre - I BATCC-III 4 4 28.0 133 9 25/ 4 1 108 4.75 14.78 18.7 0 1 0 22 2
9 10 Mohammed Shakir Regional League Nord BATCC-II 5 5 37.3 163 9 20/ 3 2 153 4.35 18.11 25.0 0 0 0 23 1
29 3 Abdul Nasir Kunari South Centre - I BATCC-III 4 4 28.0 141 6 27/ 2 0 94 5.04 23.50 28.0 0 0 0 19 1
10 11 Saurabh Singh Patel Regional League Nord BATCC-II 11 8 28.0 159 6 15/ 2 0 100 5.68 26.50 28.0 0 0 0 14 1
11 12 Manav Gidra Regional League Nord BATCC-II 3 3 28.3 155 5 40/ 2 0 97 5.44 31.00 34.2 0 0 0 14 1
12 13 Sasi Kiran Alur REGIONAL LEAGUE SUD BATCC-I 12 8 19.4 127 5 9/ 1 1 74 6.46 25.40 23.6 0 0 0 17 4
14 15 Dinesh Sasi Kumar Regional League Nord BATCC-II 6 5 14.0 112 5 54/ 5 0 47 8.00 22.40 16.8 0 0 1 27 5
13 14 Shahroz Ismail Regional League Nord BATCC-II 5 5 13.0 91 5 36/ 2 1 44 7.00 18.20 15.6 0 0 0 15 4
31 5 Muhammed Minhaj Madathodi South Centre - I BATCC-III 5 5 21.0 169 4 11/ 1 0 61 8.05 42.25 31.5 0 0 0 25 0
30 4 Shashank Bhoskar South Centre - I BATCC-III 3 3 16.0 81 4 22/ 3 2 57 5.06 20.25 24.0 0 0 0 13 0

Top 20 by economy rate. Only those conisdered who have bowled more than the team mean.¶

In [15]:
# Calculate the mean of 'overs' column to use as 'n'
n = df_combined_bowling['overs'].mean()
print('Mean of overs across players:', n)
# Filter players who have bowled min n overs
filtered_df = df_combined_bowling[df_combined_bowling['overs'] >= n]

# Sort by 'economy rate' in ascending order to find the top 10 players by economy
top_20_by_economy = filtered_df.sort_values(by=['econ'], ascending=[True]).head(20)
top_20_by_economy
Mean of overs across players: 24.147727272727273
Out[15]:
# player group team mat inns overs runs wkts bbf mdns dots econ avg sr hat-trick 4w 5w wides nb
0 1 Satya Prakash Sahoo REGIONAL LEAGUE SUD BATCC-I 13 12 107.1 274 20 10/ 4 15 485 2.56 13.70 32.1 0 2 0 32 5
2 3 Vineep Bhat REGIONAL LEAGUE SUD BATCC-I 12 11 77.0 286 17 33/ 3 5 314 3.71 16.82 27.2 0 0 0 21 1
6 7 Manjunatha Muniramaiah REGIONAL LEAGUE SUD BATCC-I 6 5 34.0 130 12 37/ 4 3 153 3.82 10.83 17.0 0 1 0 30 0
8 9 Nitin Madan REGIONAL LEAGUE SUD BATCC-I 11 10 62.2 244 11 30/ 3 5 257 3.91 22.18 34.0 0 0 0 11 2
1 2 Amit Rajendra Desai REGIONAL LEAGUE SUD BATCC-I 10 10 61.1 251 18 17/ 3 2 256 4.10 13.94 20.4 0 0 0 51 3
3 4 Nitesh Singh REGIONAL LEAGUE SUD BATCC-I 14 12 58.1 251 16 26/ 5 5 231 4.32 15.69 21.8 0 0 1 39 2
9 10 Mohammed Shakir Regional League Nord BATCC-II 5 5 37.3 163 9 20/ 3 2 153 4.35 18.11 25.0 0 0 0 23 1
28 2 Mohammed Shakir South Centre - I BATCC-III 4 4 28.0 133 9 25/ 4 1 108 4.75 14.78 18.7 0 1 0 22 2
29 3 Abdul Nasir Kunari South Centre - I BATCC-III 4 4 28.0 141 6 27/ 2 0 94 5.04 23.50 28.0 0 0 0 19 1
27 1 Haris Ali South Centre - I BATCC-III 9 9 53.1 270 10 9/ 2 1 201 5.08 27.00 31.9 0 0 0 54 1
11 12 Manav Gidra Regional League Nord BATCC-II 3 3 28.3 155 5 40/ 2 0 97 5.44 31.00 34.2 0 0 0 14 1
10 11 Saurabh Singh Patel Regional League Nord BATCC-II 11 8 28.0 159 6 15/ 2 0 100 5.68 26.50 28.0 0 0 0 14 1
5 6 Rajesh Kumar Srivastava Regional League Nord BATCC-II 7 7 46.4 270 13 27/ 3 3 189 5.79 20.77 21.5 0 0 0 72 0
7 8 Vineet Bhola Regional League Nord BATCC-II 8 8 53.0 350 12 22/ 3 5 171 6.60 29.17 26.5 0 0 0 27 0
4 5 Rohit Verma Regional League Nord BATCC-II 10 10 59.0 413 15 30/ 4 2 200 7.00 27.53 23.6 0 1 0 68 4

T20 Bowling¶

In [16]:
# Load the data from both Excel files
df_regionalliga_bowling = pd.read_excel('T20/T20 1.Verbandsliga - 2024 Bowling Records - Bayerischer Cricket Verband e.V..xlsx')
df_verbandsliga_bowling = pd.read_excel('T20/T20 2. Verbandsliga - 2024 Bowling Records - Bayerischer Cricket Verband e.V..xlsx')

# Standardize column names
df_regionalliga_bowling.columns = df_regionalliga_bowling.columns.str.strip().str.lower()
df_verbandsliga_bowling.columns = df_verbandsliga_bowling.columns.str.strip().str.lower()

# Ensure both DataFrames have the same columns
df_regionalliga_bowling = df_regionalliga_bowling[df_verbandsliga_bowling.columns]

# Merge the two DataFrames along rows
df_combined_bowling = pd.concat([df_regionalliga_bowling, df_verbandsliga_bowling], ignore_index=True)
In [17]:
output_file = 'T20/Combined_BCV_Bowling_Records_2024.xlsx'
df_combined_bowling.to_excel(output_file, index=False)

Top 20 wicket takers¶

In [18]:
# Convert columns 'wkts' and 'econ' to numeric, forcing errors to NaN (if any)
df_combined_bowling['wkts'] = pd.to_numeric(df_combined_bowling['wkts'], errors='coerce')
df_combined_bowling['econ'] = pd.to_numeric(df_combined_bowling['econ'], errors='coerce')
df_combined_bowling['overs'] = pd.to_numeric(df_combined_bowling['overs'], errors='coerce')

# Sort by 'wkts' (descending)
top_20_by_wkts = df_combined_bowling.sort_values(by=['wkts'], ascending=[False]).head(20)
top_20_by_wkts
Out[18]:
# player group team mat inns overs runs wkts bbf mdns dots econ avg sr hat-trick 4w 5w wides nb
0 1 Vineet Bhola B BATCC-II 10 9 32.0 286 20 28/ 4 0 83 8.94 14.30 9.6 1 1 0 18 3
1 2 Vineep Bhat A BATCC-I 10 9 32.2 179 19 7/ 5 1 103 5.54 9.42 10.2 0 1 1 15 0
2 3 Satya Prakash Sahoo A BATCC-I 9 9 36.0 128 15 1/ 3 4 144 3.56 8.53 14.4 0 0 0 19 1
3 4 Amit Rajendra Desai A BATCC-I 10 10 33.3 188 15 22/ 4 1 115 5.61 12.53 13.4 0 1 0 22 1
4 5 Venkat Vinay Ayyagari A BATCC-I 12 8 19.0 145 12 11/ 2 0 60 7.63 12.08 9.5 0 0 0 13 4
26 1 Moynul Hasan B BATCC-III 6 6 20.0 147 8 21/ 2 1 62 7.35 18.38 15.0 0 0 0 12 4
5 6 Rohit Verma B BATCC-II 10 10 31.5 282 8 23/ 3 0 81 8.86 35.25 23.9 0 0 0 37 7
6 7 Nitin Madan A BATCC-I 8 7 26.0 124 6 18/ 3 2 85 4.77 20.67 26.0 0 0 0 12 1
27 2 Shobhit Madan B BATCC-III 5 4 11.2 57 6 13/ 3 0 38 5.03 9.50 11.3 0 0 0 6 1
7 8 Bhavin Kantilal Solanki A BATCC-I 6 4 10.0 63 5 19/ 3 0 36 6.30 12.60 12.0 0 0 0 14 1
8 9 Shashidhara Hanumaiah Veerabhadraiah A BATCC-I 11 7 19.0 87 4 7/ 2 3 75 4.58 21.75 28.5 0 0 0 15 0
9 10 Deepak Kamal B BATCC-II 9 2 5.0 47 4 33/ 4 0 15 9.40 11.75 7.5 0 1 0 2 0
28 3 Ajay Somanath B BATCC-III 1 1 4.0 14 4 14/ 4 0 17 3.50 3.50 6.0 1 1 0 0 1
29 4 Haris Ali B BATCC-III 8 7 26.0 149 4 7/ 2 0 90 5.73 37.25 39.0 0 0 0 20 3
30 5 Fahad Munawwar B BATCC-III 3 2 7.0 54 4 25/ 3 0 19 7.71 13.50 10.5 0 0 0 3 3
31 6 Apurva Sharma B BATCC-III 1 1 1.0 7 3 7/ 3 0 3 7.00 2.33 2.0 0 0 0 0 0
32 7 Shashank Bhoskar B BATCC-III 2 2 8.0 57 3 16/ 2 0 19 7.12 19.00 16.0 0 0 0 6 1
33 8 Sabarinath Sabarinath B BATCC-III 3 3 7.0 61 3 7/ 1 0 21 8.71 20.33 14.0 0 0 0 5 1
13 14 Rajesh Kumar Srivastava B BATCC-II 7 4 10.0 77 3 18/ 3 1 33 7.70 25.67 20.0 0 0 0 9 2
34 9 Abhijeesh Maroli B BATCC-III 5 4 5.0 57 3 30/ 3 0 15 11.40 19.00 10.0 0 0 0 13 6

Top 20 by economy rate. Only those conisdered who have bowled more than the team mean.¶

In [19]:
# Calculate the mean of 'overs' column to use as 'n'
n = df_combined_bowling['overs'].mean()
print('Mean of overs across players:', n)
# Filter players who have bowled min n overs
filtered_df = df_combined_bowling[df_combined_bowling['overs'] >= n]

# Sort by 'economy rate' in ascending order to find the top 10 players by economy
top_20_by_economy = filtered_df.sort_values(by=['econ'], ascending=[True]).head(20)
top_20_by_economy
Mean of overs across players: 13.315384615384614
Out[19]:
# player group team mat inns overs runs wkts bbf mdns dots econ avg sr hat-trick 4w 5w wides nb
2 3 Satya Prakash Sahoo A BATCC-I 9 9 36.0 128 15 1/ 3 4 144 3.56 8.53 14.4 0 0 0 19 1
8 9 Shashidhara Hanumaiah Veerabhadraiah A BATCC-I 11 7 19.0 87 4 7/ 2 3 75 4.58 21.75 28.5 0 0 0 15 0
6 7 Nitin Madan A BATCC-I 8 7 26.0 124 6 18/ 3 2 85 4.77 20.67 26.0 0 0 0 12 1
1 2 Vineep Bhat A BATCC-I 10 9 32.2 179 19 7/ 5 1 103 5.54 9.42 10.2 0 1 1 15 0
3 4 Amit Rajendra Desai A BATCC-I 10 10 33.3 188 15 22/ 4 1 115 5.61 12.53 13.4 0 1 0 22 1
29 4 Haris Ali B BATCC-III 8 7 26.0 149 4 7/ 2 0 90 5.73 37.25 39.0 0 0 0 20 3
10 11 Nitesh Singh A BATCC-I 8 7 15.5 93 3 11/ 2 0 47 5.87 31.00 31.7 0 0 0 18 0
17 18 Manjunatha Muniramaiah A BATCC-I 5 5 20.0 127 2 19/ 2 1 61 6.35 63.50 60.0 0 0 0 16 1
12 13 Haris Ali A BATCC-I 6 6 16.0 106 3 8/ 1 0 46 6.62 35.33 32.0 0 0 0 15 0
26 1 Moynul Hasan B BATCC-III 6 6 20.0 147 8 21/ 2 1 62 7.35 18.38 15.0 0 0 0 12 4
4 5 Venkat Vinay Ayyagari A BATCC-I 12 8 19.0 145 12 11/ 2 0 60 7.63 12.08 9.5 0 0 0 13 4
5 6 Rohit Verma B BATCC-II 10 10 31.5 282 8 23/ 3 0 81 8.86 35.25 23.9 0 0 0 37 7
0 1 Vineet Bhola B BATCC-II 10 9 32.0 286 20 28/ 4 0 83 8.94 14.30 9.6 1 1 0 18 3
22 23 Manav Gidra B BATCC-II 6 6 16.0 159 2 11/ 1 0 36 9.94 79.50 48.0 0 0 0 11 4