Spaces:
Sleeping
Sleeping
File size: 6,696 Bytes
fcb92fa 32331b8 d7d91e9 30fe6c5 fcb92fa 6c30809 fcb92fa 4b8ab3d fae6d46 02747bf 2013f2d 4437d7f fae6d46 02747bf fcb92fa fae6d46 e8a947e 4b8ab3d fae6d46 1d44339 03b9d6c 02747bf 03b9d6c e405c05 03b9d6c f272351 5492c3f f272351 5492c3f 02747bf e148a04 03b9d6c e148a04 03b9d6c e148a04 f415382 03b9d6c f415382 e148a04 03b9d6c f415382 e148a04 f415382 02747bf e8304d7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
# Set page configuration
st.set_page_config(page_title="Career Insights", layout="wide")
# Load data
df = pd.read_csv("Reduced_final_teams.csv")
# Get unique player names
player_names = df["Player"].unique()
# Search box for filtering player names
search_query = st.text_input("Search Player Name:")
filtered_players = [name for name in player_names if search_query.lower() in name.lower()] if search_query else player_names
if len(filtered_players) == 0:
st.warning("Player not found. Please try a different name.")
# Player selection dropdown
selected_player = st.selectbox("Select Player", filtered_players)
# Buttons for Batting and Bowling
show_batting = st.button("Show Batting Stats")
show_bowling = st.button("Show Bowling Stats")
if selected_player:
player_data = df[df["Player"] == selected_player].iloc[0]
labels = ["Test", "ODI", "T20", "IPL"]
if show_batting:
st.subheader(f"Batting Stats for {selected_player}")
col1, col2 = st.columns(2)
with col1:
# Pie Chart - Matches Played
matches = [
player_data.get("Matches_Test", 0),
player_data.get("Matches_ODI", 0),
player_data.get("Matches_T20", 0),
player_data.get("Matches_IPL", 0)
]
fig, ax = plt.subplots()
ax.pie(matches, labels=labels, autopct="%1.1f%%", startangle=90)
ax.set_title(f"Matches Played by {selected_player}")
st.pyplot(fig)
with col2:
# Bar Chart - Runs Scored
batting_runs = [
player_data.get("batting_Runs_Test", 0),
player_data.get("batting_Runs_ODI", 0),
player_data.get("batting_Runs_T20", 0),
player_data.get("batting_Runs_IPL", 0)
]
fig, ax = plt.subplots()
ax.bar(labels, batting_runs, color=["gold", "green", "blue", "red"])
ax.set_ylabel("Runs Scored")
ax.set_title(f"Runs Scored by {selected_player}")
st.pyplot(fig)
col3, col4 = st.columns(2)
with col3:
# Stacked Bar Chart - 100s and 50s
hundreds = [
player_data.get("batting_100s_Test", 0),
player_data.get("batting_100s_ODI", 0),
player_data.get("batting_100s_T20", 0),
player_data.get("batting_100s_IPL", 0)
]
fifties = [
player_data.get("batting_50s_Test", 0),
player_data.get("batting_50s_ODI", 0),
player_data.get("batting_50s_T20", 0),
player_data.get("batting_50s_IPL", 0)
]
fig, ax = plt.subplots()
ax.bar(labels, hundreds, label="100s", color="gold")
ax.bar(labels, fifties, label="50s", color="blue", bottom=hundreds)
ax.set_ylabel("Count")
ax.set_title(f"Centuries & Fifties by {selected_player}")
ax.legend()
st.pyplot(fig)
with col4:
# Line Chart - Strike Rate & Average
strike_rate = [
player_data.get("batting_SR_Test", 0),
player_data.get("batting_SR_ODI", 0),
player_data.get("batting_SR_T20", 0),
player_data.get("batting_SR_IPL", 0)
]
batting_avg = [
player_data.get("batting_Average_Test", 0),
player_data.get("batting_Average_ODI", 0),
player_data.get("batting_Average_T20", 0),
player_data.get("batting_Average_IPL", 0)
]
fig, ax = plt.subplots()
ax.plot(labels, strike_rate, marker='o', linestyle='-', color='red', label="Strike Rate")
ax.plot(labels, batting_avg, marker='s', linestyle='--', color='green', label="Batting Average")
ax.set_ylabel("Value")
ax.set_title(f"Strike Rate & Batting Average of {selected_player}")
ax.legend()
st.pyplot(fig)
# Bar Chart - Balls Faced
batting_balls = [
player_data.get("batting_Balls_Test", 0),
player_data.get("batting_Balls_ODI", 0),
player_data.get("batting_Balls_T20", 0),
player_data.get("batting_Balls_IPL", 0)
]
fig, ax = plt.subplots(figsize=(5,3))
ax.bar(labels, batting_balls, color=["red", "green", "blue", "purple"])
ax.set_ylabel("Balls Faced")
ax.set_title(f"Balls Faced by {selected_player}")
st.pyplot(fig)
if show_bowling:
st.subheader(f"Bowling Stats for {selected_player}")
col1, col2 = st.columns(2)
with col1:
# Pie Chart - Bowling Averages
bowling_avg = [
0 if pd.isna(player_data.get("bowling_Test_Avg", 0)) else float(player_data.get("bowling_Test_Avg", 0)),
0 if pd.isna(player_data.get("bowling_ODI_Avg", 0)) else float(player_data.get("bowling_ODI_Avg", 0)),
0 if pd.isna(player_data.get("bowling_T20_Avg", 0)) else float(player_data.get("bowling_T20_Avg", 0)),
0 if pd.isna(player_data.get("bowling_IPL_Avg", 0)) else float(player_data.get("bowling_IPL_Avg", 0))
]
fig, ax = plt.subplots()
ax.pie(bowling_avg, labels=labels, autopct="%1.1f%%", startangle=90)
ax.set_title(f"Bowling Averages of {selected_player}")
st.pyplot(fig)
with col2:
# Bar Chart - Bowling Innings
bowling_innings = [
player_data.get("bowling_Test_Innings", 0),
player_data.get("bowling_ODI_Innings", 0),
player_data.get("bowling_T20_Innings", 0),
player_data.get("bowling_IPL_Innings", 0)
]
fig, ax = plt.subplots()
ax.bar(labels, bowling_innings, color=["blue", "green", "purple", "orange"])
ax.set_ylabel("Innings Bowled")
ax.set_title(f"Bowling Innings of {selected_player}")
st.pyplot(fig)
# Balls Bowled
balls_bowled = [
player_data.get("bowling_Test_Balls", 0),
player_data.get("bowling_ODI_Balls", 0),
player_data.get("bowling_T20_Balls", 0),
player_data.get("bowling_IPL_Balls", 0)
]
fig, ax = plt.subplots(figsize=(5, 3))
ax.bar(labels, balls_bowled, color=["red", "yellow", "blue", "green"])
ax.set_ylabel("Balls Bowled")
ax.set_title(f"Balls Bowled by {selected_player}")
st.pyplot(fig) |