File size: 2,492 Bytes
8f424e5
 
 
 
 
 
9912bb5
8f424e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9912bb5
 
8f424e5
 
9912bb5
8f424e5
9912bb5
8f424e5
9912bb5
 
 
742ccf7
02107a7
8f424e5
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
import pandas as pd

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:
        general_frame = pd.DataFrame()
        
        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:
            general_frame['Stat'] = [each_col]
            general_frame['Average'] = [each_general / each_general_len_set[general_count_var]]
            general_frame = general_frame.rename(columns={'Average': f'Average {each_set_name[general_count_var]}'})
            if len(general_exposures) == 0:
                general_row = general_frame
            else:
                general_row = pd.merge(general_exposures, general_frame, on='Stat', how='outer')
            general_count_var += 1
        if len(general_exposures) == 0:
            general_exposures = general_row
        else:
            general_exposures = pd.concat([general_exposures, general_frame], ignore_index = True, axis = 0)
    general_exposures = general_exposures.replace(['salary', 'actual_fpts', 'actual_own', 'dupes'], ['Salary Used', 'Finishing Points', 'Total Ownership', 'Duplications'])
    return general_exposures