DFS_Contest_Analyzer / global_func /create_general_exposures.py
James McCool
Add Streamlit table display for general exposures in create_general_exposures function
7503d51
raw
history blame
2.38 kB
import pandas as pd
import streamlit as st
def create_general_exposures(df: pd.DataFrame, entrants: list = None):
check_cols = ['salary', 'actual_fpts', 'actual_own', 'dupes']
general_exposures = pd.DataFrame()
for each_col in check_cols:
if entrants is not None:
overall_general = pd.Series(list(df[df['BaseName'].isin(entrants)][each_col])).sum()
else:
overall_general = pd.Series(list(df[each_col])).sum()
top_1per_general = pd.Series(list(df[df['percentile_finish'] <= 0.01][each_col])).sum()
top_5per_general = pd.Series(list(df[df['percentile_finish'] <= 0.05][each_col])).sum()
top_10per_general = pd.Series(list(df[df['percentile_finish'] <= 0.10][each_col])).sum()
top_20per_general = pd.Series(list(df[df['percentile_finish'] <= 0.20][each_col])).sum()
general_contest_len = len(df)
general_len_1per = len(df[df['percentile_finish'] <= 0.01])
general_len_5per = len(df[df['percentile_finish'] <= 0.05])
general_len_10per = len(df[df['percentile_finish'] <= 0.10])
general_len_20per = len(df[df['percentile_finish'] <= 0.20])
each_set_name = ['Overall', ' Top 1%', ' Top 5%', 'Top 10%', 'Top 20%']
each_general_set = [overall_general, top_1per_general, top_5per_general, top_10per_general, top_20per_general]
each_general_len_set = [general_contest_len, general_len_1per, general_len_5per, general_len_10per, general_len_20per]
general_count_var = 0
for each_general in each_general_set:
st.write(f'{each_col} Sum is {each_general}, Average is {each_general / each_general_len_set[general_count_var]}')
general_frame = pd.DataFrame()
general_frame['Stat'] = each_col
general_frame['Average'] = each_general / each_general_len_set[general_count_var]
general_frame = general_frame[['Stat', 'Average']]
general_frame = general_frame.rename(columns={'Average': f'Average {each_set_name[general_count_var]}'})
if len(general_exposures) == 0:
general_exposures = general_frame
else:
general_exposures = pd.merge(general_exposures, general_frame, on='Stat', how='outer')
general_count_var += 1
st.table(general_exposures)
return general_exposures