Spaces:
Sleeping
Sleeping
Update pages/1_Player_Stats.py
Browse files- 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',
|
|
|
|
|
|
|
|
|
|
| 25 |
st.plotly_chart(fig_matches, key="matches_pie")
|
| 26 |
|
| 27 |
-
# Batting function
|
| 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['
|
| 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 |
-
|
|
|
|
| 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 |
-
#
|
| 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 |
-
|
| 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 |
-
#
|
| 112 |
-
st.
|
| 113 |
-
st.
|
| 114 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 115 |
|
| 116 |
-
#
|
| 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
|
| 125 |
plot_batting_stats(player_data)
|
| 126 |
-
st.subheader("Bowling
|
| 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()
|