James McCool
commited on
Commit
·
d23b397
1
Parent(s):
9c68c67
adding diversity to analysis tables
Browse files- app.py +13 -3
- global_func/analyze_player_combos.py +4 -2
app.py
CHANGED
|
@@ -1848,6 +1848,7 @@ if selected_tab == 'Manage Portfolio':
|
|
| 1848 |
'Avg Dupes': st.session_state['display_frame'][player_mask]['Dupes'].mean(),
|
| 1849 |
'Avg Finish %': st.session_state['display_frame'][player_mask]['Finish_percentile'].mean(),
|
| 1850 |
'Avg Lineup Edge': st.session_state['display_frame'][player_mask]['Lineup Edge'].mean(),
|
|
|
|
| 1851 |
})
|
| 1852 |
else:
|
| 1853 |
for player in player_names:
|
|
@@ -1864,6 +1865,7 @@ if selected_tab == 'Manage Portfolio':
|
|
| 1864 |
'Avg Dupes': st.session_state['display_frame'][cpt_mask]['Dupes'].mean(),
|
| 1865 |
'Avg Finish %': st.session_state['display_frame'][cpt_mask]['Finish_percentile'].mean(),
|
| 1866 |
'Avg Lineup Edge': st.session_state['display_frame'][cpt_mask]['Lineup Edge'].mean(),
|
|
|
|
| 1867 |
})
|
| 1868 |
|
| 1869 |
# Create mask for lineups where this player is FLEX (other columns)
|
|
@@ -1881,6 +1883,7 @@ if selected_tab == 'Manage Portfolio':
|
|
| 1881 |
'Avg Dupes': st.session_state['display_frame'][flex_mask]['Dupes'].mean(),
|
| 1882 |
'Avg Finish %': st.session_state['display_frame'][flex_mask]['Finish_percentile'].mean(),
|
| 1883 |
'Avg Lineup Edge': st.session_state['display_frame'][flex_mask]['Lineup Edge'].mean(),
|
|
|
|
| 1884 |
})
|
| 1885 |
else:
|
| 1886 |
if sport_var == 'CS2' or sport_var == 'LOL':
|
|
@@ -1899,6 +1902,7 @@ if selected_tab == 'Manage Portfolio':
|
|
| 1899 |
'Avg Dupes': st.session_state['display_frame'][cpt_mask]['Dupes'].mean(),
|
| 1900 |
'Avg Finish %': st.session_state['display_frame'][cpt_mask]['Finish_percentile'].mean(),
|
| 1901 |
'Avg Lineup Edge': st.session_state['display_frame'][cpt_mask]['Lineup Edge'].mean(),
|
|
|
|
| 1902 |
})
|
| 1903 |
|
| 1904 |
# Create mask for lineups where this player is FLEX (other columns)
|
|
@@ -1916,6 +1920,7 @@ if selected_tab == 'Manage Portfolio':
|
|
| 1916 |
'Avg Dupes': st.session_state['display_frame'][flex_mask]['Dupes'].mean(),
|
| 1917 |
'Avg Finish %': st.session_state['display_frame'][flex_mask]['Finish_percentile'].mean(),
|
| 1918 |
'Avg Lineup Edge': st.session_state['display_frame'][flex_mask]['Lineup Edge'].mean(),
|
|
|
|
| 1919 |
})
|
| 1920 |
elif sport_var != 'CS2' and sport_var != 'LOL':
|
| 1921 |
# Original Classic format processing
|
|
@@ -1934,6 +1939,7 @@ if selected_tab == 'Manage Portfolio':
|
|
| 1934 |
'Avg Dupes': st.session_state['display_frame'][player_mask]['Dupes'].mean(),
|
| 1935 |
'Avg Finish %': st.session_state['display_frame'][player_mask]['Finish_percentile'].mean(),
|
| 1936 |
'Avg Lineup Edge': st.session_state['display_frame'][player_mask]['Lineup Edge'].mean(),
|
|
|
|
| 1937 |
})
|
| 1938 |
|
| 1939 |
player_summary = pd.DataFrame(player_stats)
|
|
@@ -1952,7 +1958,8 @@ if selected_tab == 'Manage Portfolio':
|
|
| 1952 |
'Avg Dupes': '{:.2f}',
|
| 1953 |
'Avg Finish %': '{:.2%}',
|
| 1954 |
'Avg Lineup Edge': '{:.2%}',
|
| 1955 |
-
'Exposure': '{:.2%}'
|
|
|
|
| 1956 |
}),
|
| 1957 |
height=400,
|
| 1958 |
use_container_width=True
|
|
@@ -1979,6 +1986,7 @@ if selected_tab == 'Manage Portfolio':
|
|
| 1979 |
'Avg Dupes': st.session_state['display_frame'][stack_mask]['Dupes'].mean(),
|
| 1980 |
'Avg Finish %': st.session_state['display_frame'][stack_mask]['Finish_percentile'].mean(),
|
| 1981 |
'Avg Lineup Edge': st.session_state['display_frame'][stack_mask]['Lineup Edge'].mean(),
|
|
|
|
| 1982 |
})
|
| 1983 |
stack_summary = pd.DataFrame(stack_stats)
|
| 1984 |
stack_summary = stack_summary.sort_values('Lineup Count', ascending=False).drop_duplicates()
|
|
@@ -1996,7 +2004,8 @@ if selected_tab == 'Manage Portfolio':
|
|
| 1996 |
'Avg Dupes': '{:.2f}',
|
| 1997 |
'Avg Finish %': '{:.2%}',
|
| 1998 |
'Avg Lineup Edge': '{:.2%}',
|
| 1999 |
-
'Exposure': '{:.2%}'
|
|
|
|
| 2000 |
}),
|
| 2001 |
height=400,
|
| 2002 |
use_container_width=True
|
|
@@ -2034,7 +2043,8 @@ if selected_tab == 'Manage Portfolio':
|
|
| 2034 |
'Avg Dupes': '{:.2f}',
|
| 2035 |
'Avg Finish %': '{:.2%}',
|
| 2036 |
'Avg Lineup Edge': '{:.2%}',
|
| 2037 |
-
'Exposure': '{:.2%}'
|
|
|
|
| 2038 |
}),
|
| 2039 |
height=400,
|
| 2040 |
use_container_width=True
|
|
|
|
| 1848 |
'Avg Dupes': st.session_state['display_frame'][player_mask]['Dupes'].mean(),
|
| 1849 |
'Avg Finish %': st.session_state['display_frame'][player_mask]['Finish_percentile'].mean(),
|
| 1850 |
'Avg Lineup Edge': st.session_state['display_frame'][player_mask]['Lineup Edge'].mean(),
|
| 1851 |
+
'Avg Diversity': st.session_state['display_frame'][player_mask]['Diversity'].mean(),
|
| 1852 |
})
|
| 1853 |
else:
|
| 1854 |
for player in player_names:
|
|
|
|
| 1865 |
'Avg Dupes': st.session_state['display_frame'][cpt_mask]['Dupes'].mean(),
|
| 1866 |
'Avg Finish %': st.session_state['display_frame'][cpt_mask]['Finish_percentile'].mean(),
|
| 1867 |
'Avg Lineup Edge': st.session_state['display_frame'][cpt_mask]['Lineup Edge'].mean(),
|
| 1868 |
+
'Avg Diversity': st.session_state['display_frame'][cpt_mask]['Diversity'].mean(),
|
| 1869 |
})
|
| 1870 |
|
| 1871 |
# Create mask for lineups where this player is FLEX (other columns)
|
|
|
|
| 1883 |
'Avg Dupes': st.session_state['display_frame'][flex_mask]['Dupes'].mean(),
|
| 1884 |
'Avg Finish %': st.session_state['display_frame'][flex_mask]['Finish_percentile'].mean(),
|
| 1885 |
'Avg Lineup Edge': st.session_state['display_frame'][flex_mask]['Lineup Edge'].mean(),
|
| 1886 |
+
'Avg Diversity': st.session_state['display_frame'][flex_mask]['Diversity'].mean(),
|
| 1887 |
})
|
| 1888 |
else:
|
| 1889 |
if sport_var == 'CS2' or sport_var == 'LOL':
|
|
|
|
| 1902 |
'Avg Dupes': st.session_state['display_frame'][cpt_mask]['Dupes'].mean(),
|
| 1903 |
'Avg Finish %': st.session_state['display_frame'][cpt_mask]['Finish_percentile'].mean(),
|
| 1904 |
'Avg Lineup Edge': st.session_state['display_frame'][cpt_mask]['Lineup Edge'].mean(),
|
| 1905 |
+
'Avg Diversity': st.session_state['display_frame'][cpt_mask]['Diversity'].mean(),
|
| 1906 |
})
|
| 1907 |
|
| 1908 |
# Create mask for lineups where this player is FLEX (other columns)
|
|
|
|
| 1920 |
'Avg Dupes': st.session_state['display_frame'][flex_mask]['Dupes'].mean(),
|
| 1921 |
'Avg Finish %': st.session_state['display_frame'][flex_mask]['Finish_percentile'].mean(),
|
| 1922 |
'Avg Lineup Edge': st.session_state['display_frame'][flex_mask]['Lineup Edge'].mean(),
|
| 1923 |
+
'Avg Diversity': st.session_state['display_frame'][flex_mask]['Diversity'].mean(),
|
| 1924 |
})
|
| 1925 |
elif sport_var != 'CS2' and sport_var != 'LOL':
|
| 1926 |
# Original Classic format processing
|
|
|
|
| 1939 |
'Avg Dupes': st.session_state['display_frame'][player_mask]['Dupes'].mean(),
|
| 1940 |
'Avg Finish %': st.session_state['display_frame'][player_mask]['Finish_percentile'].mean(),
|
| 1941 |
'Avg Lineup Edge': st.session_state['display_frame'][player_mask]['Lineup Edge'].mean(),
|
| 1942 |
+
'Avg Diversity': st.session_state['display_frame'][player_mask]['Diversity'].mean(),
|
| 1943 |
})
|
| 1944 |
|
| 1945 |
player_summary = pd.DataFrame(player_stats)
|
|
|
|
| 1958 |
'Avg Dupes': '{:.2f}',
|
| 1959 |
'Avg Finish %': '{:.2%}',
|
| 1960 |
'Avg Lineup Edge': '{:.2%}',
|
| 1961 |
+
'Exposure': '{:.2%}',
|
| 1962 |
+
'Avg Diversity': '{:.2%}'
|
| 1963 |
}),
|
| 1964 |
height=400,
|
| 1965 |
use_container_width=True
|
|
|
|
| 1986 |
'Avg Dupes': st.session_state['display_frame'][stack_mask]['Dupes'].mean(),
|
| 1987 |
'Avg Finish %': st.session_state['display_frame'][stack_mask]['Finish_percentile'].mean(),
|
| 1988 |
'Avg Lineup Edge': st.session_state['display_frame'][stack_mask]['Lineup Edge'].mean(),
|
| 1989 |
+
'Avg Diversity': st.session_state['display_frame'][stack_mask]['Diversity'].mean(),
|
| 1990 |
})
|
| 1991 |
stack_summary = pd.DataFrame(stack_stats)
|
| 1992 |
stack_summary = stack_summary.sort_values('Lineup Count', ascending=False).drop_duplicates()
|
|
|
|
| 2004 |
'Avg Dupes': '{:.2f}',
|
| 2005 |
'Avg Finish %': '{:.2%}',
|
| 2006 |
'Avg Lineup Edge': '{:.2%}',
|
| 2007 |
+
'Exposure': '{:.2%}',
|
| 2008 |
+
'Avg Diversity': '{:.2%}'
|
| 2009 |
}),
|
| 2010 |
height=400,
|
| 2011 |
use_container_width=True
|
|
|
|
| 2043 |
'Avg Dupes': '{:.2f}',
|
| 2044 |
'Avg Finish %': '{:.2%}',
|
| 2045 |
'Avg Lineup Edge': '{:.2%}',
|
| 2046 |
+
'Exposure': '{:.2%}',
|
| 2047 |
+
'Diversity': '{:.2%}'
|
| 2048 |
}),
|
| 2049 |
height=400,
|
| 2050 |
use_container_width=True
|
global_func/analyze_player_combos.py
CHANGED
|
@@ -75,8 +75,9 @@ def analyze_player_combos(display_frame, excluded_cols, combo_size=2):
|
|
| 75 |
avg_dupes = display_frame.loc[combo_mask, 'Dupes'].mean()
|
| 76 |
avg_finish = display_frame.loc[combo_mask, 'Finish_percentile'].mean()
|
| 77 |
avg_edge = display_frame.loc[combo_mask, 'Lineup Edge'].mean()
|
|
|
|
| 78 |
else:
|
| 79 |
-
avg_median = avg_own = avg_dupes = avg_finish = avg_edge = 0
|
| 80 |
|
| 81 |
combo_stats.append({
|
| 82 |
'Combo': ' + '.join(combo),
|
|
@@ -86,7 +87,8 @@ def analyze_player_combos(display_frame, excluded_cols, combo_size=2):
|
|
| 86 |
'Avg Own': avg_own,
|
| 87 |
'Avg Dupes': avg_dupes,
|
| 88 |
'Avg Finish %': avg_finish,
|
| 89 |
-
'Avg Lineup Edge': avg_edge
|
|
|
|
| 90 |
})
|
| 91 |
|
| 92 |
return pd.DataFrame(combo_stats)
|
|
|
|
| 75 |
avg_dupes = display_frame.loc[combo_mask, 'Dupes'].mean()
|
| 76 |
avg_finish = display_frame.loc[combo_mask, 'Finish_percentile'].mean()
|
| 77 |
avg_edge = display_frame.loc[combo_mask, 'Lineup Edge'].mean()
|
| 78 |
+
avg_diversity = display_frame.loc[combo_mask, 'Diversity'].mean()
|
| 79 |
else:
|
| 80 |
+
avg_median = avg_own = avg_dupes = avg_finish = avg_edge = avg_diversity = 0
|
| 81 |
|
| 82 |
combo_stats.append({
|
| 83 |
'Combo': ' + '.join(combo),
|
|
|
|
| 87 |
'Avg Own': avg_own,
|
| 88 |
'Avg Dupes': avg_dupes,
|
| 89 |
'Avg Finish %': avg_finish,
|
| 90 |
+
'Avg Lineup Edge': avg_edge,
|
| 91 |
+
'Avg Diversity': avg_diversity
|
| 92 |
})
|
| 93 |
|
| 94 |
return pd.DataFrame(combo_stats)
|