File size: 5,278 Bytes
a2542f1
 
cfab252
 
 
a2542f1
 
 
 
 
 
cfab252
a2542f1
 
 
 
 
 
cfab252
 
 
 
 
 
 
 
 
a2542f1
 
cfab252
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a2542f1
 
cfab252
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a2542f1
 
 
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
import streamlit as st
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import plotly.express as px

# Load the dataset
df = pd.read_csv("cric_final.csv")

st.title("🏏 Player Performance Dashboard")

# Dropdown to Select Player
selected_player = st.selectbox("Select a Player", df["Player"].unique())

# Get Player Data
player_data = df[df["Player"] == selected_player]

if not player_data.empty:
    # Replace None/NaN with "-" only in batting and bowling columns
    batting_cols = [col for col in df.columns if "batting" in col.lower()]
    bowling_cols = [col for col in df.columns if "bowling" in col.lower()]

    player_data[batting_cols] = player_data[batting_cols].fillna("-")
    player_data[bowling_cols] = player_data[bowling_cols].fillna("-")

    # Only 2 tabs now: Batting Performance and Bowling Performance
    tab1, tab2 = st.tabs(["πŸ“ˆ Batting Performance", "🎯 Bowling Performance"])

    with tab1:
        st.write("### πŸ“Š Batting Performance")

        # Bar Chart for Batting Runs
        fig, ax = plt.subplots(figsize=(7, 5))
        sns.barplot(
            x=["Test", "ODI", "T20", "IPL"],
            y=player_data.iloc[0][["batting_Runs_Test", "batting_Runs_ODI", "batting_Runs_T20", "batting_Runs_IPL"]],
            palette="magma",
            ax=ax
        )
        ax.set_ylabel("Total Runs", fontsize=14)
        ax.set_title(f"Batting Performance of {selected_player}", fontsize=16)
        ax.grid(True, axis='y', linestyle='--', alpha=0.7)
        st.pyplot(fig)

        # Side-by-Side Bar Chart for 50s & 100s
        st.write("### Half-Centuries (50s) vs Centuries (100s)")
        fig, ax = plt.subplots(figsize=(7, 5))
        x_labels = ["Test", "ODI", "T20", "IPL"]
        x = range(len(x_labels))
        
        fifties = player_data.iloc[0][["batting_50s_Test", "batting_50s_ODI", "batting_50s_T20", "batting_50s_IPL"]]
        hundreds = player_data.iloc[0][["batting_100s_Test", "batting_100s_ODI", "batting_100s_T20", "batting_100s_IPL"]]
        
        width = 0.4
        
        ax.bar([i - width/2 for i in x], fifties, width=width, label="50s", color="skyblue")
        ax.bar([i + width/2 for i in x], hundreds, width=width, label="100s", color="orange")
        
        ax.set_xticks(x)
        ax.set_xticklabels(x_labels)
        ax.set_ylabel("Count", fontsize=14)
        ax.set_title(f"50s vs 100s of {selected_player}", fontsize=16)
        ax.legend()
        ax.grid(axis="y", linestyle="--", alpha=0.7)
        st.pyplot(fig)

        # Pie Chart for Batting Runs Distribution
        st.write("### Batting Runs Distribution")
        runs = player_data.iloc[0][["batting_Runs_Test", "batting_Runs_ODI", "batting_Runs_T20", "batting_Runs_IPL"]]
        labels = ["Test", "ODI", "T20", "IPL"]
        fig_pie = px.pie(values=runs, names=labels, title="Batting Runs Distribution", color=labels)
        st.plotly_chart(fig_pie)

        # Line Chart for Batting Averages
        st.write("### Batting Averages Over Different Formats")
        batting_averages = player_data.iloc[0][["batting_Average_Test", "batting_Average_ODI", "batting_Average_T20", "batting_Average_IPL"]]
        fig_line, ax = plt.subplots(figsize=(7, 5))
        ax.plot(["Test", "ODI", "T20", "IPL"], batting_averages, marker='o', color='tab:blue')
        ax.set_ylabel("Batting Average", fontsize=14)
        ax.set_title(f"Batting Averages of {selected_player}", fontsize=16)
        ax.grid(True, axis='y', linestyle='--', alpha=0.7)
        st.pyplot(fig_line)

    with tab2:
        st.write("### 🎯 Bowling Performance")

        # Bar Chart for Bowling Wickets
        fig, ax = plt.subplots(figsize=(7, 5))
        sns.barplot(
            x=["Test", "ODI", "T20", "IPL"],
            y=player_data.iloc[0][["bowling_Test_Wickets", "bowling_ODI_Wickets", "bowling_T20_Wickets", "bowling_IPL_Wickets"]],
            palette="coolwarm",
            ax=ax
        )
        ax.set_ylabel("Total Wickets", fontsize=14)
        ax.set_title(f"Bowling Performance of {selected_player}", fontsize=16)
        ax.grid(True, axis='y', linestyle='--', alpha=0.7)
        st.pyplot(fig)

        # Pie Chart for Bowling Wickets Distribution
        st.write("### Bowling Wickets Distribution")
        wickets = player_data.iloc[0][["bowling_Test_Wickets", "bowling_ODI_Wickets", "bowling_T20_Wickets", "bowling_IPL_Wickets"]]
        labels = ["Test", "ODI", "T20", "IPL"]
        fig_pie_bowl = px.pie(values=wickets, names=labels, title="Bowling Wickets Distribution", color=labels)
        st.plotly_chart(fig_pie_bowl)

        # Line Chart for Bowling Average
        st.write("### Bowling Averages Over Different Formats")
        bowling_averages = player_data.iloc[0][["bowling_Test_Avg", "bowling_ODI_Avg", "bowling_T20_Avg", "bowling_IPL_Avg"]]
        fig_line_bowl, ax = plt.subplots(figsize=(7, 5))
        ax.plot(["Test", "ODI", "T20", "IPL"], bowling_averages, marker='o', color='tab:green')
        ax.set_ylabel("Bowling Average", fontsize=14)
        ax.set_title(f"Bowling Averages of {selected_player}", fontsize=16)
        ax.grid(True, axis='y', linestyle='--', alpha=0.7)
        st.pyplot(fig_line_bowl)

else:
    st.warning("⚠️ Player not found in the dataset.")