Sathwikchowdary commited on
Commit
b4cda43
Β·
verified Β·
1 Parent(s): 1b7a9ae

Update pages/2player_comparison.py

Browse files
Files changed (1) hide show
  1. pages/2player_comparison.py +31 -5
pages/2player_comparison.py CHANGED
@@ -33,6 +33,7 @@ def plot_horizontal_bar(df, player1, player2):
33
  num_cols = df.select_dtypes(include='number').columns
34
  df_num = df[num_cols].T
35
  df_num.columns = [player1, player2]
 
36
  df_num = df_num.sort_values(by=player1, ascending=False).head(15)
37
 
38
  fig, ax = plt.subplots(figsize=(10, 7))
@@ -49,8 +50,17 @@ def plot_pie_charts(player1_data, player2_data, player1, player2):
49
  col1, col2 = st.columns(2)
50
 
51
  for col, player_data, player_name in zip([col1, col2], [player1_data, player2_data], [player1, player2]):
52
- batting_total = player_data.get('Runs_ODI', 0) + player_data.get('Runs_T20', 0) + player_data.get('Runs_Test', 0)
53
- bowling_total = player_data.get('Wickets_ODI', 0) + player_data.get('Wickets_T20', 0) + player_data.get('Wickets_Test', 0)
 
 
 
 
 
 
 
 
 
54
 
55
  labels = ['Batting', 'Bowling']
56
  sizes = [batting_total, bowling_total]
@@ -68,7 +78,7 @@ def plot_bowling_comparison(df, player1, player2):
68
  bowling_cols = [col for col in df.columns if 'Wickets' in col or 'Economy' in col or 'Bowling_Average' in col]
69
  df_bowling = df[bowling_cols].T
70
  df_bowling.columns = [player1, player2]
71
- df_bowling = df_bowling.dropna().sort_values(by=player1, ascending=False)
72
 
73
  fig, ax = plt.subplots(figsize=(10, 6))
74
  df_bowling.plot(kind='bar', ax=ax)
@@ -78,6 +88,18 @@ def plot_bowling_comparison(df, player1, player2):
78
  ax.legend(loc="upper right")
79
  st.pyplot(fig)
80
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  # Main app
82
  def main():
83
  st.set_page_config(layout="wide")
@@ -102,8 +124,8 @@ def main():
102
  player2_name = get_matching_player(name2_raw, player_list)
103
 
104
  if player1_name and player2_name and player1_name != player2_name:
105
- player1_data = df[df['Player'].str.lower() == player1_name.lower()].squeeze()
106
- player2_data = df[df['Player'].str.lower() == player2_name.lower()].squeeze()
107
 
108
  st.success(f"Comparing **{player1_name}** vs **{player2_name}**")
109
 
@@ -119,6 +141,10 @@ def main():
119
  st.subheader("πŸ“‹ Full Stats Table")
120
  st.dataframe(comparison_df.T)
121
 
 
 
 
 
122
  # Visualizations
123
  plot_horizontal_bar(comparison_df, player1_name, player2_name)
124
  plot_pie_charts(player1_data, player2_data, player1_name, player2_name)
 
33
  num_cols = df.select_dtypes(include='number').columns
34
  df_num = df[num_cols].T
35
  df_num.columns = [player1, player2]
36
+ df_num = df_num.fillna(0)
37
  df_num = df_num.sort_values(by=player1, ascending=False).head(15)
38
 
39
  fig, ax = plt.subplots(figsize=(10, 7))
 
50
  col1, col2 = st.columns(2)
51
 
52
  for col, player_data, player_name in zip([col1, col2], [player1_data, player2_data], [player1, player2]):
53
+ batting_total = sum([
54
+ player_data.get('Runs_ODI', 0) or 0,
55
+ player_data.get('Runs_T20', 0) or 0,
56
+ player_data.get('Runs_Test', 0) or 0
57
+ ])
58
+
59
+ bowling_total = sum([
60
+ player_data.get('Wickets_ODI', 0) or 0,
61
+ player_data.get('Wickets_T20', 0) or 0,
62
+ player_data.get('Wickets_Test', 0) or 0
63
+ ])
64
 
65
  labels = ['Batting', 'Bowling']
66
  sizes = [batting_total, bowling_total]
 
78
  bowling_cols = [col for col in df.columns if 'Wickets' in col or 'Economy' in col or 'Bowling_Average' in col]
79
  df_bowling = df[bowling_cols].T
80
  df_bowling.columns = [player1, player2]
81
+ df_bowling = df_bowling.fillna(0).sort_values(by=player1, ascending=False)
82
 
83
  fig, ax = plt.subplots(figsize=(10, 6))
84
  df_bowling.plot(kind='bar', ax=ax)
 
88
  ax.legend(loc="upper right")
89
  st.pyplot(fig)
90
 
91
+ # Bowling stats summary
92
+ def show_bowling_summary(player_data, player_name):
93
+ st.subheader(f"🎳 Bowling Summary: {player_name}")
94
+ col1, col2, col3 = st.columns(3)
95
+ col1.metric("Wickets (ODI)", int(player_data.get("Wickets_ODI", 0) or 0))
96
+ col2.metric("Wickets (T20)", int(player_data.get("Wickets_T20", 0) or 0))
97
+ col3.metric("Wickets (Test)", int(player_data.get("Wickets_Test", 0) or 0))
98
+
99
+ col4, col5 = st.columns(2)
100
+ col4.metric("Economy (ODI)", round(player_data.get("Economy_ODI", 0) or 0, 2))
101
+ col5.metric("Bowling Avg (Test)", round(player_data.get("Bowling_Average_Test", 0) or 0, 2))
102
+
103
  # Main app
104
  def main():
105
  st.set_page_config(layout="wide")
 
124
  player2_name = get_matching_player(name2_raw, player_list)
125
 
126
  if player1_name and player2_name and player1_name != player2_name:
127
+ player1_data = df[df['Player'].str.lower() == player1_name.lower()].fillna(0).squeeze()
128
+ player2_data = df[df['Player'].str.lower() == player2_name.lower()].fillna(0).squeeze()
129
 
130
  st.success(f"Comparing **{player1_name}** vs **{player2_name}**")
131
 
 
141
  st.subheader("πŸ“‹ Full Stats Table")
142
  st.dataframe(comparison_df.T)
143
 
144
+ # Stats summaries
145
+ show_bowling_summary(player1_data, player1_name)
146
+ show_bowling_summary(player2_data, player2_name)
147
+
148
  # Visualizations
149
  plot_horizontal_bar(comparison_df, player1_name, player2_name)
150
  plot_pie_charts(player1_data, player2_data, player1_name, player2_name)