File size: 2,060 Bytes
45a70a9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import pandas as pd

def create_player_exposures(df: pd.DataFrame, player_columns: list, entrants: list = None):
    player_frame = pd.DataFrame()
    if entrants is not None:
        overall_players = pd.Series(list(df[df['BaseName'].isin(entrants)][player_columns].values.flatten())).value_counts()
    else:
        overall_players = pd.Series(list(df[player_columns].values.flatten())).value_counts()
    top_1per_players = pd.Series(list(df[df['percentile_finish'] <= 0.01][player_columns].values.flatten())).value_counts()
    top_5per_players = pd.Series(list(df[df['percentile_finish'] <= 0.05][player_columns].values.flatten())).value_counts()
    top_10per_players = pd.Series(list(df[df['percentile_finish'] <= 0.10][player_columns].values.flatten())).value_counts()
    top_20per_players = pd.Series(list(df[df['percentile_finish'] <= 0.20][player_columns].values.flatten())).value_counts()
    contest_len = len(df)
    len_1per = len(df[df['percentile_finish'] <= 0.01])
    len_5per = len(df[df['percentile_finish'] <= 0.05])
    len_10per = len(df[df['percentile_finish'] <= 0.10])
    len_20per = len(df[df['percentile_finish'] <= 0.20])
    each_set_name = ['Overall', ' Top 1%', ' Top 5%', 'Top 10%', 'Top 20%']
    each_frame_set = [overall_players, top_1per_players, top_5per_players, top_10per_players, top_20per_players]
    each_len_set = [contest_len, len_1per, len_5per, len_10per, len_20per]
    player_count_var = 0
    for each_set in each_frame_set:
        set_frame = each_set.to_frame().reset_index().rename(columns={'index': 'Player', 'count': 'Count'})
        set_frame['Percent'] = set_frame['Count'] / each_len_set[player_count_var]
        set_frame = set_frame[['Player', 'Percent']]
        set_frame = set_frame.rename(columns={'Percent': f'Exposure {each_set_name[player_count_var]}'})
        if len(player_frame) == 0:
            player_frame = set_frame
        else:
            player_frame = pd.merge(player_frame, set_frame, on='Player', how='outer')
        player_count_var += 1
    
    return player_frame