vikvenk commited on
Commit
40aedb2
·
verified ·
1 Parent(s): 5ed0430

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +62 -0
app.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import seaborn as sns
3
+ import matplotlib.pyplot as plt
4
+ import gradio as gr
5
+
6
+ # Load your CSV file into a dataframe
7
+ df = pd.read_csv("weekly_data.csv")
8
+ df = df.sort_values(by=["year"], ascending=True)
9
+
10
+ # Map player names to player IDs
11
+ latest_names = df.groupby("player_id")["player_name"].last().to_dict()
12
+ name_to_id = {name: pid for pid, name in latest_names.items()}
13
+ unique_player_names = list(name_to_id.keys())
14
+ def plot_density(player1_name, player2_name, year):
15
+ plt.figure(figsize=(8, 5))
16
+
17
+ # Convert names back to player_ids
18
+ player1_id = name_to_id.get(player1_name)
19
+ player2_id = name_to_id.get(player2_name)
20
+
21
+ # Filter dataframe for the selected years
22
+ filtered_df = df[df["year"].isin(year)]
23
+
24
+ colors = {}
25
+
26
+ if player1_id:
27
+ player1_data = filtered_df[filtered_df["player_id"] == player1_id]["half_ppr"]
28
+ sns.kdeplot(player1_data, label=player1_name, shade=True)
29
+ median1 = player1_data.median()
30
+ colors[player1_name] = "blue"
31
+ plt.axvline(median1, color="blue", linestyle="dashed", linewidth=2, label=f"{player1_name} Median: {median1:.1f}")
32
+
33
+ if player2_id:
34
+ player2_data = filtered_df[filtered_df["player_id"] == player2_id]["half_ppr"]
35
+ sns.kdeplot(player2_data, label=player2_name, shade=True)
36
+ median2 = player2_data.median()
37
+ colors[player2_name] = "red"
38
+ plt.axvline(median2, color="red", linestyle="dashed", linewidth=2, label=f"{player2_name} Median: {median2:.1f}")
39
+
40
+ plt.xlabel("Fantasy Points")
41
+ plt.ylabel("Density")
42
+ plt.legend()
43
+ plt.title("Fantasy Points Density Plot with Medians")
44
+
45
+ return plt
46
+
47
+ # Define the available years for selection
48
+ years = sorted(df["year"].unique().tolist())
49
+ demo = gr.Interface(
50
+ fn=plot_density,
51
+ inputs=[
52
+ gr.Dropdown(choices=unique_player_names, label="Select Player 1", value=unique_player_names[0], interactive=True),
53
+ gr.Dropdown(choices=unique_player_names, label="Select Player 2 (Optional)", value=None, interactive=True),
54
+ gr.CheckboxGroup(choices=years, label="Select Year(s)", value=[2024])
55
+ ],
56
+ outputs=gr.Plot(),
57
+ title="Fantasy Points Density Plot",
58
+ description="Compare the fantasy point distributions of two players across selected years."
59
+ )
60
+
61
+ # Launch the Gradio interface
62
+ demo.launch(share=True)