File size: 2,633 Bytes
73f77c9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
41
42
43
44
45
46
47
48
49
import gradio as gr
import pandas as pd
try:
    clustered_data = pd.read_csv("clustered_data.csv")
except FileNotFoundError:
    print("Error: 'clustered_data.csv' not found. Make sure it's in the same directory.")
    exit()

players_2024 = sorted(clustered_data[clustered_data['year'] == 2024]['player_name'].unique())

def get_similar_players(selected_player):
    """Returns a table of similar players based on cluster, including selected player and year."""

    if selected_player is None:
        return pd.DataFrame(columns=['player_name', 'year', 'targets', 'receptions', 'rec_yards', 'air_yards', 'routes_ran', 'yprr', 'tprr', 'adot', 'target_share', 'year_two_half_ppr'])

    try:
        selected_player_data = clustered_data[clustered_data['player_name'] == selected_player].iloc[0].to_dict()
        selected_player_cluster = selected_player_data['cluster']
    except IndexError:
        return pd.DataFrame(columns=['player_name', 'year', 'targets', 'receptions', 'rec_yards', 'air_yards', 'routes_ran', 'yprr', 'tprr', 'adot', 'target_share', 'year_two_half_ppr'])

    similar_players = clustered_data[
        (clustered_data['cluster'] == selected_player_cluster) & (clustered_data['player_name'] != selected_player)
    ].copy()

    # Select and return desired columns, including 'player_name' and 'year'
    similar_players = similar_players[['player_name', 'year', 'targets', 'receptions', 'rec_yards', 'air_yards', 'routes_ran', 'yprr', 'tprr', 'adot', 'target_share', 'year_two_half_ppr']]

    # Round specified columns to two decimal places
    for col in ['yprr', 'tprr', 'adot', 'target_share', 'year_two_half_ppr']:
        similar_players[col] = similar_players[col].round(2)

    # --- Corrected handling of selected player data ---
    selected_player_df = pd.DataFrame([selected_player_data])  # Create DataFrame from dictionary
    selected_player_df = selected_player_df[['player_name', 'year', 'targets', 'receptions', 'rec_yards', 'air_yards', 'routes_ran', 'yprr', 'tprr', 'adot', 'target_share', 'year_two_half_ppr']]  # Order columns
    for col in ['yprr', 'tprr', 'adot', 'target_share', 'year_two_half_ppr']:
        selected_player_df[col] = selected_player_df[col].round(2)
    similar_players = pd.concat([selected_player_df, similar_players], ignore_index=True)

    return similar_players

with gr.Blocks() as demo:
    player_dropdown = gr.Dropdown(choices=players_2024, label="Select a 2024 Player")
    output_table = gr.DataFrame(label="Similar Players")

    player_dropdown.change(get_similar_players, inputs=player_dropdown, outputs=output_table)

demo.launch(share = True)