import pandas as pd
import numpy as np
import seaborn as sn
import plotly.express as px
import plotly.graph_objects as go
import plotly.offline as py
from plotly.subplots import make_subplots
import matplotlib.pyplot as plt
%matplotlib inline
deliveries = pd.read_csv('deliveries.csv')
pd.set_option('display.max_columns',None)
deliveries.head()
df_csk = deliveries[(deliveries['bowling_team']=='Chennai Super Kings')]
df_mi = deliveries[(deliveries['bowling_team']=='Mumbai Indians')]
df_rcb = deliveries[(deliveries['bowling_team']=='Royal Challengers Bangalore')]
df_kkr = deliveries[(deliveries['bowling_team']=='Kolkata Knight Riders')]
df_rr = deliveries[(deliveries['bowling_team']=='Rajasthan Royals')]
df_kxip = deliveries[(deliveries['bowling_team']=='Kings XI Punjab')]
df_dd = deliveries[(deliveries['bowling_team']=='Delhi Daredevils')]
df_srh = deliveries[(deliveries['bowling_team']=='Sunrisers Hyderabad')]
teams = ['csk','mi','rcb','kkr','rr','kxip','dd','srh']
df_csk = df_csk[(df_csk['batsman']==df_csk['player_dismissed'])]
df_mi = df_mi[(df_mi['batsman']==df_mi['player_dismissed'])]
df_rcb = df_rcb[(df_rcb['batsman']==df_rcb['player_dismissed'])]
df_kkr = df_kkr[(df_kkr['batsman']==df_kkr['player_dismissed'])]
df_rr = df_rr[(df_rr['batsman']==df_rr['player_dismissed'])]
df_kxip = df_kxip[(df_kxip['batsman']==df_kxip['player_dismissed'])]
df_dd = df_dd[(df_dd['batsman']==df_dd['player_dismissed'])]
df_srh = df_srh[(df_srh['batsman']==df_srh['player_dismissed'])]
df_srh.shape
def getmap(df):
bowler = list(df['bowler'])
bowler_map = dict(zip(bowler,map(bowler.count,bowler)))
bowler_map = dict(sorted(bowler_map.items(),key = lambda x:x[1],reverse=True))
bowler_map = dict(list(bowler_map.items())[:5])
keys = []
values = []
for key,value in bowler_map.items():
keys.append(key)
values.append(value)
df = pd.DataFrame()
df['Player'] = keys
df['TotalWickets'] = values
return df
top_bowl_csk = getmap(df_csk)
top_bowl_mi = getmap(df_mi)
top_bowl_rcb = getmap(df_rcb)
top_bowl_kkr = getmap(df_kkr)
top_bowl_rr = getmap(df_rr)
top_bowl_kxip = getmap(df_kxip)
top_bowl_dd = getmap(df_dd)
top_bowl_srh = getmap(df_srh)
top_bowl_csk
teams = ['csk','mi','rcb','kkr','rr','kxip','dd','srh']
fig = make_subplots(rows=4,cols=2,subplot_titles=('CSK','MI','RCB','KKR',
'RR','KXIP','DD','SRH'),start_cell = 'top-left',
specs=[[{'type':'polar'},{'type':'polar'}],
[{'type':'polar'},{'type':'polar'}],
[{'type':'polar'},{'type':'polar'}],
[{'type':'polar'},{'type':'polar'}]],shared_yaxes=True)
# fig = make_subplots(rows=4,cols=2,specs=[[{'type':'polar'},{'type':'polar'}],
# [{'type':'polar'},{'type':'polar'}],
# [{'type':'polar'},{'type':'polar'}],
# [{'type':'polar'},{'type':'polar'}]])
fig.add_trace(go.Barpolar(theta=list(top_bowl_csk['Player'].unique()),r = list(top_bowl_csk['TotalWickets'].unique())),1,1)
fig.add_trace(go.Barpolar(theta=list(top_bowl_mi['Player'].unique()),r = list(top_bowl_mi['TotalWickets'].unique())),1,2)
fig.add_trace(go.Barpolar(theta=list(top_bowl_rcb['Player'].unique()),r = list(top_bowl_rcb['TotalWickets'].unique())),2,1)
fig.add_trace(go.Barpolar(theta=list(top_bowl_kkr['Player'].unique()),r = list(top_bowl_kkr['TotalWickets'].unique())),2,2)
fig.add_trace(go.Barpolar(theta=list(top_bowl_rr['Player'].unique()),r = list(top_bowl_rr['TotalWickets'].unique())),3,1)
fig.add_trace(go.Barpolar(theta=list(top_bowl_kxip['Player'].unique()),r = list(top_bowl_kxip['TotalWickets'].unique())),3,2)
fig.add_trace(go.Barpolar(theta=list(top_bowl_dd['Player'].unique()),r = list(top_bowl_dd['TotalWickets'].unique())),4,1)
fig.add_trace(go.Barpolar(theta=list(top_bowl_srh['Player'].unique()),r = list(top_bowl_srh['TotalWickets'].unique())),4,2)
# fig.update_traces(hoverinfo="label+percent+name")
# fig.update_layout(
# title_text="Global Emissions 1990-2011",
# # Add annotations in the center of the donut pies.
# annotations=[dict(text='GHG', x=0.18, y=0.5, font_size=20, showarrow=False),
# dict(text='CO2', x=0.82, y=0.5, font_size=20, showarrow=False),
# dict(text='CO2', x=0.82, y=0.5, font_size=20, showarrow=False),
# dict(text='CO2', x=0.82, y=0.5, font_size=20, showarrow=False),
# dict(text='CO2', x=0.82, y=0.5, font_size=20, showarrow=False),
# dict(text='CO2', x=0.82, y=0.5, font_size=20, showarrow=False),
# dict(text='CO2', x=0.82, y=0.5, font_size=20, showarrow=False),
# dict(text='CO2', x=0.82, y=0.5, font_size=20, showarrow=False)])
fig.update_layout(height =1600,width = 1000,title_text = "Top Performing Bowlers From Each team")
# annot =list(fig.layout.annotations)
# fig.layout.annotations = annot
fig.show()
df_csk.head()
teams = ['csk','mi','rcb','kkr','rr','kxip','dd','srh']
csk_bowler = list(top_bowl_csk['Player'].unique())
mi_bowler = list(top_bowl_mi['Player'].unique())
rcb_bowler = list(top_bowl_rcb['Player'].unique())
kkr_bowler = list(top_bowl_kkr['Player'].unique())
rr_bowler = list(top_bowl_rr['Player'].unique())
kxip_bowler = list(top_bowl_kxip['Player'].unique())
dd_bowler = list(top_bowl_dd['Player'].unique())
srh_bowler = list(top_bowl_srh['Player'].unique())
temp = df_csk[(df_csk['bowler']=='DJ Bravo')]
temp.shape
deliveries['dismissal_kind'].unique()
dismissal_kind = list(temp['dismissal_kind'])
dismissal_mapper = dict(zip(dismissal_kind,map(dismissal_kind.count,dismissal_kind)))
dismissal_mapper
def getmap(df,bowler):
temp = df[(df['bowler']==bowler)]
dismissal_kind = list(temp['dismissal_kind'])
dismissal_mapper = dict(zip(dismissal_kind,map(dismissal_kind.count,dismissal_kind)))
to_use = ['caught','caught and bowled','bowled','lbw','stumped','hit wicket']
mapper = {}
for key,val in dismissal_mapper.items():
if key in to_use:
mapper[key] = val
return mapper
a = getmap(df_csk,'DJ Bravo')
a
csk_bowler
teams = ['csk','mi','rcb','kkr','rr','kxip','dd','srh']
teams = [csk_bowler,mi_bowler,rcb_bowler,kkr_bowler,rr_bowler,kxip_bowler,dd_bowler,srh_bowler]
def getdetails(df,player_list):
final_mapper = {}
for player in player_list:
temp = df[(df['bowler']==player)]
dismissal_kind = list(temp['dismissal_kind'])
dismissal_mapper = dict(zip(dismissal_kind,map(dismissal_kind.count,dismissal_kind)))
to_use = ['caught','caught and bowled','bowled','lbw','stumped','hit wicket']
mapper = {}
for key,val in dismissal_mapper.items():
if key in to_use:
mapper[key] = val
final_mapper[player] = mapper
temp = pd.DataFrame(final_mapper)
temp = temp.T
temp = temp.fillna(0)
temp = temp.astype('int32')
temp['Player'] = temp.index
temp = temp.reset_index()
temp = temp.drop(['index'],axis = 1)
return temp
teams = ['csk','mi','rcb','kkr','rr','kxip','dd','srh']
bowl_csk = getdetails(df_csk,csk_bowler)
bowl_mi = getdetails(df_mi,mi_bowler)
bowl_rcb = getdetails(df_rcb,rcb_bowler)
bowl_kkr = getdetails(df_kkr,kkr_bowler)
bowl_rr = getdetails(df_rr,rr_bowler)
bowl_kxip = getdetails(df_kxip,kxip_bowler)
bowl_dd = getdetails(df_dd,dd_bowler)
bowl_srh = getdetails(df_srh,srh_bowler)
bowl_csk
bowl_csk.columns
def getnameandruns(df_i):
final = []
for i in range(df_i.shape[0]):
first = df_i.iloc[[i]]
temp = []
for i in first.columns:
a = []
a.append(list(first[i]))
a = sum(a,[])
temp.append(a)
final.append(temp)
final = sum(final,[])
final = sum(final,[])
name = [i for i in final if type(i)!=int]
runs = [i for i in final if type(i)==int]
final_runs = []
start = 0
end = 5
while end<=len(runs):
temp = runs[start:end]
final_runs.append(temp)
start = end
end+=5
return name,final_runs
csk_name,csk_bowl = getnameandruns(bowl_csk)
mi_name,mi_bowl = getnameandruns(bowl_mi)
rcb_name,rcb_bowl = getnameandruns(bowl_rcb)
kkr_name,kkr_bowl = getnameandruns(bowl_kkr)
rr_name,rr_bowl = getnameandruns(bowl_rr)
kxip_name,kxip_bowl = getnameandruns(bowl_kxip)
dd_name,dd_bowl = getnameandruns(bowl_dd)
srh_name,srh_bowl = getnameandruns(bowl_srh)
def drawplots(player_wickets,player_names,player_name,top_bowl,text):
wickets = ['caught', 'caught and bowled', 'bowled', 'lbw', 'stumped', 'hit wicket']
fig = make_subplots(rows=2,cols = 3,subplot_titles=tuple(player_names),
specs=[[{'type':'domain'},{'type':'domain'},{'type':'domain'}],
[{'type':'domain'},{'type':'domain'},{'type':'domain'}]],shared_yaxes=True)
fig.add_trace(go.Pie(labels=wickets,values=player_wickets[0],name = player_names[0]),1,1)
fig.add_trace(go.Pie(labels=wickets,values=player_wickets[1],name = player_names[1]),1,2)
fig.add_trace(go.Pie(labels=wickets,values=player_wickets[2],name = player_names[2]),1,3)
fig.add_trace(go.Pie(labels=wickets,values=player_wickets[3],name = player_names[3]),2,1)
fig.add_trace(go.Pie(labels=wickets,values=player_wickets[4],name = player_names[4]),2,2)
fig.add_trace(go.Pie(labels = player_name,values=list(top_bowl['TotalWickets'].unique())[:5]),2,3)
fig.update_layout(height = 750,width = 900,title_text = text)
fig.show()
final = []
teams = [csk_bowler,mi_bowler,rcb_bowler,kkr_bowler,rr_bowler,kxip_bowler,dd_bowler,srh_bowler]
for i in range(len(teams)):
final.append(teams[i])
final
teams = ['csk','mi','rcb','kkr','rr','kxip','dd','srh']
top_bowl = [top_bowl_csk,top_bowl_mi,top_bowl_rcb,top_bowl_kkr,top_bowl_rr,top_bowl_kxip,top_bowl_dd,top_bowl_srh]
player_name = [csk_name,mi_name,rcb_name,kkr_name,rr_name,kxip_name,dd_name,srh_name]
player_runs = [csk_bowl,mi_bowl,rcb_bowl,kkr_bowl,rr_bowl,kxip_bowl,dd_bowl,srh_bowl]
for i,j,k,l,m in zip(range(len(teams)),range(len(player_name)),range(len(player_runs)),range(len(top_bowl)),range(len(final))):
drawplots(player_runs[k],player_name[j],final[m],top_bowl[l],text = "Top 5 Bowlers From"+" "+str(teams[i]).upper())
print("-"*120)
From Chennai Super Kings,Dwayne Bravo,R Ashwin,R Jadeja have very good Figures
From Mumbai Indians,L Malinga,Harbajan Singh,JJ Bumrah have very good Figures
From Royal Challengers Banglore,Y Chahal,R Vinay Kumar,Z Khan have very good Figures
From Kolkata Knight Riders,S Narine,P Chawla,A Russel have very good Figures
From Rajasthan Royals,SK Trivedi,S Watson,S Warne have very good Figures
From Kings XI Punjab,PP Chawla,Sandeep Sharma,Axar Patel have very good Figures
From Delhi DareDevils,A Mishra,U Yadav,M Morkel have very good Figures
From Surises Hyderabad,Bhuvneshwar Kumar,Rahid Khan,S Kaul have very good Figures
df_csk = deliveries[(deliveries['bowling_team']=='Chennai Super Kings')&(deliveries['dismissal_kind']=='caught')]
df_mi = deliveries[(deliveries['bowling_team']=='Mumbai Indians')&(deliveries['dismissal_kind']=='caught')]
df_rcb = deliveries[(deliveries['bowling_team']=='Royal Challengers Bangalore')&(deliveries['dismissal_kind']=='caught')]
df_kkr = deliveries[(deliveries['bowling_team']=='Kolkata Knight Riders')&(deliveries['dismissal_kind']=='caught')]
df_rr = deliveries[(deliveries['bowling_team']=='Rajasthan Royals')&(deliveries['dismissal_kind']=='caught')]
df_kxip = deliveries[(deliveries['bowling_team']=='Kings XI Punjab')&(deliveries['dismissal_kind']=='caught')]
df_dd = deliveries[(deliveries['bowling_team']=='Delhi Daredevils')&(deliveries['dismissal_kind']=='caught')]
df_srh = deliveries[(deliveries['bowling_team']=='Sunrisers Hyderabad')&(deliveries['dismissal_kind']=='caught')]
def getmap(df):
bowler = list(df['fielder'])
bowler_map = dict(zip(bowler,map(bowler.count,bowler)))
bowler_map = dict(sorted(bowler_map.items(),key = lambda x:x[1],reverse=True))
bowler_map = dict(list(bowler_map.items())[:5])
keys = []
values = []
for key,value in bowler_map.items():
keys.append(key)
values.append(value)
df = pd.DataFrame()
df['Player'] = keys
df['TotalCatches'] = values
return df
top_catch_csk = getmap(df_csk)
top_catch_mi = getmap(df_mi)
top_catch_rcb = getmap(df_rcb)
top_catch_kkr = getmap(df_kkr)
top_catch_rr = getmap(df_rr)
top_catch_kxip = getmap(df_kxip)
top_catch_dd = getmap(df_dd)
top_catch_srh = getmap(df_srh)
def getnameandruns(df_i):
player = list(df_i['Player'])
catches = list(df_i['TotalCatches'])
return player,catches
csk_name,csk_bowl = getnameandruns(top_catch_csk)
mi_name,mi_bowl = getnameandruns(top_catch_mi)
rcb_name,rcb_bowl = getnameandruns(top_catch_rcb)
kkr_name,kkr_bowl = getnameandruns(top_catch_kkr)
rr_name,rr_bowl = getnameandruns(top_catch_rr)
kxip_name,kxip_bowl = getnameandruns(top_catch_kxip)
dd_name,dd_bowl = getnameandruns(top_catch_dd)
srh_name,srh_bowl = getnameandruns(top_catch_srh)
fig = make_subplots(rows=4,cols = 2,subplot_titles=('CSK','MI','RCB','KKR',
'RR','KXIP','DD','SRH'),
specs=[[{'type':'domain'},{'type':'domain'}],
[{'type':'domain'},{'type':'domain'}],
[{'type':'domain'},{'type':'domain'}],
[{'type':'domain'},{'type':'domain'}]],shared_yaxes=True)
fig.add_trace(go.Pie(labels=csk_name,values=csk_bowl),1,1)
fig.add_trace(go.Pie(labels=mi_name,values=mi_bowl),1,2)
fig.add_trace(go.Pie(labels=rcb_name,values=rcb_bowl),2,1)
fig.add_trace(go.Pie(labels=kkr_name,values=kkr_bowl),2,2)
fig.add_trace(go.Pie(labels=rr_name,values=rr_bowl),3,1)
fig.add_trace(go.Pie(labels=kxip_name,values=kxip_bowl),3,2)
fig.add_trace(go.Pie(labels=dd_name,values=dd_bowl),4,1)
fig.add_trace(go.Pie(labels=srh_name,values=srh_bowl),4,2)
fig.update_traces(hole=.4, hoverinfo="label+percent+value")
fig.update_layout(height = 1400,width = 900,title_text = "Top Feilders of Each Team")
fig.show()