DOMMETI commited on
Commit
a0008c4
Β·
verified Β·
1 Parent(s): ef9425a

Update pages/1_Player_Stats.py

Browse files
Files changed (1) hide show
  1. pages/1_Player_Stats.py +57 -46
pages/1_Player_Stats.py CHANGED
@@ -21,45 +21,49 @@ def plot_matches_pie(player_data):
21
  'Matches': [player_data['Matches_Test'], player_data['Matches_ODI'], player_data['Matches_T20'], player_data['Matches_IPL']]
22
  }
23
  df_matches = pd.DataFrame(matches_stats)
24
- fig_matches = px.pie(df_matches, names='Format', values='Matches', title=f"{player_data['Player']} - Matches Played")
 
 
 
25
  st.plotly_chart(fig_matches, key="matches_pie")
26
 
27
- # Batting function (unchanged)
28
  def plot_batting_stats(player_data):
29
  batting_stats = {
30
  'Format': ['Test', 'ODI', 'T20', 'IPL'],
31
  'Runs': [player_data['batting_Runs_Test'], player_data['batting_Runs_ODI'], player_data['batting_Runs_T20'], player_data['batting_Runs_IPL']],
32
  'Average': [player_data['batting_Average_Test'], player_data['batting_Average_ODI'], player_data['batting_Average_T20'], player_data['batting_Average_IPL']],
33
  'Sixes': [player_data['batting_Sixes_Test'], player_data['batting_Sixes_ODI'], player_data['batting_Sixes_T20'], player_data['batting_Sixes_IPL']],
34
- 'Fours': [player_data['batting importan['batting_Fours_Test'], player_data['batting_Fours_ODI'], player_data['batting_Fours_T20'], player_data['batting_Fours_IPL']]
35
  }
36
  df_batting = pd.DataFrame(batting_stats)
37
 
38
  # Runs
39
- fig_runs = px.bar(df_batting, x='Format', y='Runs', title=f"{player_data['Player']} - Runs",
40
- color='Format', text=df_batting['Runs'].round(0))
41
- fig_runs.update_traces(textposition='auto')
42
  st.plotly_chart(fig_runs, key="batting_runs")
43
 
44
  # Average
45
- fig_avg = px.bar(df_batting, x='Format', y='Average', title=f"{player_data['Player']} - Batting Average",
46
- color='Format', text=df_batting['Average'].round(2))
47
- fig_avg.update_traces(textposition='auto')
48
  st.plotly_chart(fig_avg, key="batting_avg")
49
 
50
  # Sixes
51
- fig_sixes = px.bar(df_batting, x='Format', y='Sixes', title=f"{player_data['Player']} - Sixes",
52
- color='Format', text=df_batting['Sixes'].round(0))
53
- fig_sixes.update_traces(textposition='auto')
54
  st.plotly_chart(fig_sixes, key="batting_sixes")
55
 
56
  # Fours
57
- fig_fours = px.bar(df_batting, x='Format', y='Fours', title=f"{player_data['Player']} - Fours",
58
- color='Format', text=df_batting['Fours'].round(0))
59
- fig_fours.update_traces(textposition='auto')
60
  st.plotly_chart(fig_fours, key="batting_fours")
61
 
62
- # Bowling function with new plot (Strike Rate)
 
63
  def plot_bowling_stats(player_data):
64
  bowling_stats = {
65
  'Format': ['Test', 'ODI', 'T20', 'IPL'],
@@ -71,60 +75,67 @@ def plot_bowling_stats(player_data):
71
  df_bowling = pd.DataFrame(bowling_stats)
72
 
73
  # Wickets
74
- fig_wickets = px.bar(df_bowling, x='Format', y='Wickets', title=f"{player_data['Player']} - Wickets",
75
- color='Format', text=df_bowling['Wickets'].round(0))
76
- fig_wickets.update_traces(textposition='auto')
77
  st.plotly_chart(fig_wickets, key="bowling_wickets")
78
 
79
  # Average
80
- fig_avg = px.bar(df_bowling, x='Format', y='Average', title=f"{player_data['Player']} - Bowling Average",
81
- color='Format', text=df_bowling['Average'].round(2))
82
- fig_avg.update_traces(textposition='auto')
83
  st.plotly_chart(fig_avg, key="bowling_avg")
84
 
85
  # Economy Rate
86
- fig_eco = px.line(df_bowling, x='Format', y='Economy', title=f"{player_data['Player']} - Economy Rate",
87
- markers=True, text=df_bowling['Economy'].round(2))
88
- fig_eco.update_traces(textposition='top center')
89
  st.plotly_chart(fig_eco, key="bowling_economy")
90
 
91
- # New Additional Plot: Bowling Strike Rate
92
- fig_sr = px.line(df_bowling, x='Format', y='Strike Rate', title=f"{player_data['Player']} - Bowling Strike Rate",
93
- markers=True, text=df_bowling['Strike Rate'].round(2))
94
- fig_sr.update_traces(textposition='top center')
95
  st.plotly_chart(fig_sr, key="bowling_strike_rate")
96
 
97
- def main():
98
- st.title("Cricket Player Stats")
99
- st.write("Select a role and player to view their stats.")
100
 
 
 
 
 
 
 
101
  df = load_data()
102
 
103
- # Role selection
104
- role = st.selectbox("Select Player Role", ["Batsman", "Bowler", "All-Rounder"])
105
  players = filter_players_by_role(df, role)
106
-
107
- player_name = st.selectbox("Select Player", players)
108
- # Get player details
109
  player_data = get_player_details(df, player_name)
110
 
111
- # Display player details
112
- st.subheader(f"{player_name}")
113
- st.write(f"**Role:** {player_data['Player Role']}")
114
- st.write(f"**Matches:** Test: {player_data['Matches_Test']}, ODI: {player_data['Matches_ODI']}, T20: {player_data['Matches_T20']}, IPL: {player_data['Matches_IPL']}")
 
 
 
 
115
 
116
- # Display matches pie chart once for all roles
117
  plot_matches_pie(player_data)
118
 
 
119
  if role == "Batsman":
 
120
  plot_batting_stats(player_data)
121
  elif role == "Bowler":
 
122
  plot_bowling_stats(player_data)
123
  elif role == "All-Rounder":
124
- st.subheader("Batting Stats")
125
  plot_batting_stats(player_data)
126
- st.subheader("Bowling Stats")
127
  plot_bowling_stats(player_data)
128
-
129
  if __name__ == "__main__":
130
- main()
 
21
  'Matches': [player_data['Matches_Test'], player_data['Matches_ODI'], player_data['Matches_T20'], player_data['Matches_IPL']]
22
  }
23
  df_matches = pd.DataFrame(matches_stats)
24
+ fig_matches = px.pie(df_matches, names='Format', values='Matches',
25
+ title=f"🏏 {player_data['Player']} - Matches Played 🎯",
26
+ hover_data=['Matches'], labels={'Matches': 'Matches Played'})
27
+ fig_matches.update_traces(textinfo='percent+label', hoverinfo='label+value+percent')
28
  st.plotly_chart(fig_matches, key="matches_pie")
29
 
30
+ # Batting function with emojis and interactivity
31
  def plot_batting_stats(player_data):
32
  batting_stats = {
33
  'Format': ['Test', 'ODI', 'T20', 'IPL'],
34
  'Runs': [player_data['batting_Runs_Test'], player_data['batting_Runs_ODI'], player_data['batting_Runs_T20'], player_data['batting_Runs_IPL']],
35
  'Average': [player_data['batting_Average_Test'], player_data['batting_Average_ODI'], player_data['batting_Average_T20'], player_data['batting_Average_IPL']],
36
  'Sixes': [player_data['batting_Sixes_Test'], player_data['batting_Sixes_ODI'], player_data['batting_Sixes_T20'], player_data['batting_Sixes_IPL']],
37
+ 'Fours': [player_data['batting_Fours_Test'], player_data['batting_Fours_ODI'], player_data['batting_Fours_T20'], player_data['batting_Fours_IPL']]
38
  }
39
  df_batting = pd.DataFrame(batting_stats)
40
 
41
  # Runs
42
+ fig_runs = px.bar(df_batting, x='Format', y='Runs', title=f"πŸƒβ€β™‚οΈ {player_data['Player']} - Runs Scored πŸ’―",
43
+ color='Format', text=df_batting['Runs'].round(0), hover_data=['Runs'])
44
+ fig_runs.update_traces(textposition='auto', hovertemplate='%{x}<br>Runs: %{y}')
45
  st.plotly_chart(fig_runs, key="batting_runs")
46
 
47
  # Average
48
+ fig_avg = px.bar(df_batting, x='Format', y='Average', title=f"πŸ“Š {player_data['Player']} - Batting Average ⭐",
49
+ color='Format', text=df_batting['Average'].round(2), hover_data=['Average'])
50
+ fig_avg.update_traces(textposition='auto', hovertemplate='%{x}<br>Avg: %{y}')
51
  st.plotly_chart(fig_avg, key="batting_avg")
52
 
53
  # Sixes
54
+ fig_sixes = px.bar(df_batting, x='Format', y='Sixes', title=f"πŸ”₯ {player_data['Player']} - Sixes πŸš€",
55
+ color='Format', text=df_batting['Sixes'].round(0), hover_data=['Sixes'])
56
+ fig_sixes.update_traces(textposition='auto', hovertemplate='%{x}<br>Sixes: %{y}')
57
  st.plotly_chart(fig_sixes, key="batting_sixes")
58
 
59
  # Fours
60
+ fig_fours = px.bar(df_batting, x='Format', y='Fours', title=f"🎯 {player_data['Player']} - Fours ⚑",
61
+ color='Format', text=df_batting['Fours'].round(0), hover_data=['Fours'])
62
+ fig_fours.update_traces(textposition='auto', hovertemplate='%{x}<br>Fours: %{y}')
63
  st.plotly_chart(fig_fours, key="batting_fours")
64
 
65
+
66
+ # Bowling function with emojis and interactivity
67
  def plot_bowling_stats(player_data):
68
  bowling_stats = {
69
  'Format': ['Test', 'ODI', 'T20', 'IPL'],
 
75
  df_bowling = pd.DataFrame(bowling_stats)
76
 
77
  # Wickets
78
+ fig_wickets = px.bar(df_bowling, x='Format', y='Wickets', title=f"🎳 {player_data['Player']} - Wickets Taken πŸ†",
79
+ color='Format', text=df_bowling['Wickets'].round(0), hover_data=['Wickets'])
80
+ fig_wickets.update_traces(textposition='auto', hovertemplate='%{x}<br>Wickets: %{y}')
81
  st.plotly_chart(fig_wickets, key="bowling_wickets")
82
 
83
  # Average
84
+ fig_avg = px.bar(df_bowling, x='Format', y='Average', title=f"πŸ“ˆ {player_data['Player']} - Bowling Average 🌟",
85
+ color='Format', text=df_bowling['Average'].round(2), hover_data=['Average'])
86
+ fig_avg.update_traces(textposition='auto', hovertemplate='%{x}<br>Avg: %{y}')
87
  st.plotly_chart(fig_avg, key="bowling_avg")
88
 
89
  # Economy Rate
90
+ fig_eco = px.line(df_bowling, x='Format', y='Economy', title=f"πŸ’° {player_data['Player']} - Economy Rate πŸ“‰",
91
+ markers=True, text=df_bowling['Economy'].round(2), hover_data=['Economy'])
92
+ fig_eco.update_traces(textposition='top center', hovertemplate='%{x}<br>Eco: %{y}')
93
  st.plotly_chart(fig_eco, key="bowling_economy")
94
 
95
+ # Bowling Strike Rate
96
+ fig_sr = px.line(df_bowling, x='Format', y='Strike Rate', title=f"⚑ {player_data['Player']} - Bowling Strike Rate 🎯",
97
+ markers=True, text=df_bowling['Strike Rate'].round(2), hover_data=['Strike Rate'])
98
+ fig_sr.update_traces(textposition='top center', hovertemplate='%{x}<br>SR: %{y}')
99
  st.plotly_chart(fig_sr, key="bowling_strike_rate")
100
 
 
 
 
101
 
102
+ def main():
103
+ st.set_page_config(page_title="Cricket Stats Dashboard", page_icon="🏏", layout="wide")
104
+
105
+ # Sidebar for navigation
106
+ st.sidebar.title("🏏 Cricket Dashboard")
107
+ st.sidebar.markdown("Explore player stats with ease! 🌟")
108
  df = load_data()
109
 
110
+ role = st.sidebar.selectbox("⚑ Select Player Role", ["Batsman", "Bowler", "All-Rounder"])
 
111
  players = filter_players_by_role(df, role)
112
+ player_name = st.sidebar.selectbox("πŸ† Select Player", players)
 
 
113
  player_data = get_player_details(df, player_name)
114
 
115
+ # Main page content
116
+ st.title("🏏 Cricket Player Stats Dashboard 🌟")
117
+ st.markdown("🎯 Dive into detailed stats for your favorite cricketers!")
118
+
119
+ # Player details with emojis
120
+ st.subheader(f"πŸ”₯ {player_name} πŸ”₯")
121
+ st.write(f"**Role:** {player_data['Player Role']} 🎭")
122
+ st.write(f"**Matches Played:** Test: {player_data['Matches_Test']} 🏟️ | ODI: {player_data['Matches_ODI']} 🌍 | T20: {player_data['Matches_T20']} ⚑ | IPL: {player_data['Matches_IPL']} πŸ†")
123
 
124
+ # Matches pie chart
125
  plot_matches_pie(player_data)
126
 
127
+ # Role-based stats
128
  if role == "Batsman":
129
+ st.subheader("🏏 Batting Highlights")
130
  plot_batting_stats(player_data)
131
  elif role == "Bowler":
132
+ st.subheader("🎳 Bowling Highlights")
133
  plot_bowling_stats(player_data)
134
  elif role == "All-Rounder":
135
+ st.subheader("🏏 Batting Highlights")
136
  plot_batting_stats(player_data)
137
+ st.subheader("🎳 Bowling Highlights")
138
  plot_bowling_stats(player_data)
139
+
140
  if __name__ == "__main__":
141
+ main()