DFS_Contest_Analyzer / global_func /create_general_comparison.py
James McCool
Update create_general_comparison.py to refine overall general calculation
5c8315f
import pandas as pd
def create_general_comparison(df: pd.DataFrame, entrants: list = None):
loop_list = ['Overall'] + entrants
for entrant in loop_list:
check_cols = ['salary', 'actual_fpts', 'actual_own', 'dupes', 'uniques', 'under_5', 'under_10']
general_exposures = pd.DataFrame()
for each_col in check_cols:
general_frame = pd.DataFrame()
if entrant == 'Overall':
overall_general = pd.Series(list(df[each_col])).sum()
general_contest_len = len(df)
else:
overall_general = pd.Series(list(df[df['BaseName'] == entrant][each_col])).sum()
general_contest_len = len(df[df['BaseName'] == entrant])
each_set_name = ['Overall']
each_general_set = [overall_general]
each_general_len_set = [general_contest_len]
general_count_var = 0
for each_general in each_general_set:
general_frame['Stat'] = [each_col]
try:
general_frame['Average'] = [each_general / each_general_len_set[general_count_var]]
except:
general_frame['Average'] = [0]
general_frame = general_frame.rename(columns={'Average': f'Average {entrant}'})
general_exposures = pd.concat([general_exposures, general_frame], ignore_index = True, axis = 0)
general_exposures['Stat'] = general_exposures['Stat'].replace(['salary', 'actual_fpts', 'actual_own', 'dupes', 'uniques', 'under_5', 'under_10'], ['Salary Used', 'Finishing Points', 'Total Ownership', 'Duplications', 'Uniques', 'Under 5', 'Under 10'])
if entrant == 'Overall':
final_exposures = general_exposures
else:
final_exposures = pd.merge(final_exposures, general_exposures, on='Stat', how='outer')
return final_exposures