Jon Solow commited on
Commit
1749eaf
·
1 Parent(s): 3e30a68

Update to fix ecr using PPR-Superflex

Browse files
Files changed (1) hide show
  1. src/pages/1_Keepers.py +25 -26
src/pages/1_Keepers.py CHANGED
@@ -18,20 +18,29 @@ def load_player_ids() -> pd.DataFrame:
18
 
19
 
20
  def load_adp() -> pd.DataFrame:
21
- df = pd.read_csv(r"https://raw.githubusercontent.com/dynastyprocess/data/master/files/values-players.csv")
 
 
 
 
 
 
 
 
22
  return df
23
 
24
 
25
- def convert_ecr_to_round_val(ecr_float: float) -> float:
26
  # As a float, store pick 1 of round 1 as 1.0
27
- return 1.0 + (ecr_float - 1.0) / LEAGUE_NUMBER_TEAMS
28
 
29
 
30
  def add_opinionated_keeper_value(df: pd.DataFrame):
31
- for score_fmt in ["1qb", "2qb"]:
32
- df[f"ecr_{score_fmt}"] = df[f"ecr_{score_fmt}"].apply(convert_ecr_to_round_val)
33
- # assumes midround keeper
34
- df[f"value_{score_fmt}"] = df["keeper_cost"] + 0.5 - df[f"ecr_{score_fmt}"]
 
35
 
36
 
37
  @st.cache_data(ttl=60 * 60 * 24)
@@ -48,7 +57,7 @@ def load_data():
48
 
49
  # Merge ADP
50
  df_adp = load_adp()
51
- data = data.merge(df_adp, how="left", left_on="fantasypros_id", right_on="fp_id", suffixes=("", "_adp"))
52
  add_opinionated_keeper_value(data)
53
  return data, teams_list
54
 
@@ -82,11 +91,8 @@ def filtered_keeper_dataframe(data: pd.DataFrame, teams_list: list[str]):
82
  adp_cols: list[str] = []
83
 
84
  adp_cols_advanced = [
85
- "ecr_1qb",
86
- "value_1qb",
87
- "ecr_2qb",
88
- "value_2qb",
89
- "ecr_pos",
90
  ]
91
 
92
  if is_advanced:
@@ -114,20 +120,13 @@ def filtered_keeper_dataframe(data: pd.DataFrame, teams_list: list[str]):
114
  label="Years Eligible",
115
  help="Number of further consecutive seasons player can be kept (subject to maximum of 2)",
116
  ),
117
- "ecr_1qb": st.column_config.NumberColumn(
118
- label="ECR 1QB", help="Player's average draft round.pick Expert Consensus Rank (ECR) for 1 QB League"
119
- ),
120
- "value_1qb": st.column_config.NumberColumn(
121
- label="Value 1QB", help="Approx. number of draft rounds of keeper value vs ECR 1QB"
122
- ),
123
- "ecr_2qb": st.column_config.NumberColumn(
124
- label="ECR 2QB", help="Player's average draft round.pick Expert Consensus Rank (ECR) for 2 QB League"
125
- ),
126
- "value_2qb": st.column_config.NumberColumn(
127
- label="Value 2QB", help="Approx. number of draft rounds of keeper value vs ECR 2QB"
128
  ),
129
- "ecr_pos": st.column_config.NumberColumn(
130
- label="ECR Position", help="Player's average Expert Consensus Rank (ECR) at the player's position"
 
131
  ),
132
  },
133
  )
 
18
 
19
 
20
  def load_adp() -> pd.DataFrame:
21
+ df = pd.read_csv(r"https://raw.githubusercontent.com/dynastyprocess/data/master/files/db_fpecr_latest.csv")
22
+ df = df.loc[
23
+ df.fp_page == "/nfl/rankings/ppr-superflex-cheatsheets.php",
24
+ [
25
+ "yahoo_id",
26
+ "ecr",
27
+ "sd",
28
+ ],
29
+ ]
30
  return df
31
 
32
 
33
+ def convert_ecr_to_round_val(ecr_float: float, round_offset: float = 1.0, pick_offset: float = -1.0) -> float:
34
  # As a float, store pick 1 of round 1 as 1.0
35
+ return round_offset + (ecr_float + pick_offset) / LEAGUE_NUMBER_TEAMS
36
 
37
 
38
  def add_opinionated_keeper_value(df: pd.DataFrame):
39
+ df["ecr"] = df["ecr"].apply(convert_ecr_to_round_val)
40
+ # Convert sd without offset to show as pure pick diff
41
+ df["sd"] = df["sd"].apply(lambda x: convert_ecr_to_round_val(x, 0, 0))
42
+ # assumes midround keeper
43
+ df["value_keeper"] = df["keeper_cost"] + 0.5 - df["ecr"]
44
 
45
 
46
  @st.cache_data(ttl=60 * 60 * 24)
 
57
 
58
  # Merge ADP
59
  df_adp = load_adp()
60
+ data = data.merge(df_adp, how="left", left_on="player_id", right_on="yahoo_id", suffixes=("", "_adp"))
61
  add_opinionated_keeper_value(data)
62
  return data, teams_list
63
 
 
91
  adp_cols: list[str] = []
92
 
93
  adp_cols_advanced = [
94
+ "ecr",
95
+ "value_keeper",
 
 
 
96
  ]
97
 
98
  if is_advanced:
 
120
  label="Years Eligible",
121
  help="Number of further consecutive seasons player can be kept (subject to maximum of 2)",
122
  ),
123
+ "ecr": st.column_config.NumberColumn(
124
+ label="ECR",
125
+ help="Player's average draft round.pick Expert Consensus Rank (ECR) for PPR - Superflex League",
 
 
 
 
 
 
 
 
126
  ),
127
+ "value_keeper": st.column_config.NumberColumn(
128
+ label="Value Keeper",
129
+ help="Approx. number of draft rounds of keeper value vs ECR PPR - Superflex League",
130
  ),
131
  },
132
  )