Spaces:
Runtime error
Runtime error
Commit ·
9343e9b
1
Parent(s): 8de0ef6
Add total points columns and improve MCP tool names
Browse files- Add Total Pts and Last GW Pts to top predictions, value picks, and my team views
- Rename get_differentials to get_value_picks with clearer description
- Rename get_manager_team_predictions to get_my_team
app.py
CHANGED
|
@@ -341,7 +341,7 @@ def load_and_process_data():
|
|
| 341 |
)
|
| 342 |
manager_players_df = pd.merge(
|
| 343 |
manager_players_df,
|
| 344 |
-
final_predictions_df[['element', 'XGB Pred', 'difficulty', 'Next Opponent']],
|
| 345 |
on='element', how='left'
|
| 346 |
)
|
| 347 |
else:
|
|
@@ -379,7 +379,7 @@ def get_top_predictions(top_n: int = 10, position: Optional[str] = None) -> pd.D
|
|
| 379 |
df = df.sort_values('XGB Pred', ascending=False).head(top_n)
|
| 380 |
|
| 381 |
cols = ['player_name', 'team_name', 'position', 'value', 'XGB Pred',
|
| 382 |
-
'Pts Mean (5GW)', 'Trend', 'difficulty']
|
| 383 |
|
| 384 |
return df[cols]
|
| 385 |
|
|
@@ -443,9 +443,9 @@ def get_team_stats(team_name: Optional[str] = None) -> pd.DataFrame:
|
|
| 443 |
return df[cols]
|
| 444 |
|
| 445 |
|
| 446 |
-
def
|
| 447 |
"""
|
| 448 |
-
Find
|
| 449 |
|
| 450 |
Args:
|
| 451 |
max_price (float): Maximum player price in millions (default: 10.0)
|
|
@@ -453,7 +453,7 @@ def get_differentials(max_price: float = 10.0, min_predicted: float = 4.0, top_n
|
|
| 453 |
top_n (int): Number of results to return (default: 10)
|
| 454 |
|
| 455 |
Returns:
|
| 456 |
-
pd.DataFrame: Best
|
| 457 |
"""
|
| 458 |
df = final_predictions_df.copy()
|
| 459 |
|
|
@@ -461,17 +461,17 @@ def get_differentials(max_price: float = 10.0, min_predicted: float = 4.0, top_n
|
|
| 461 |
df = df.sort_values('XGB Pred', ascending=False).head(top_n)
|
| 462 |
|
| 463 |
cols = ['player_name', 'team_name', 'position', 'value', 'XGB Pred',
|
| 464 |
-
'Pts Mean (5GW)', 'Trend', 'difficulty']
|
| 465 |
|
| 466 |
return df[cols]
|
| 467 |
|
| 468 |
|
| 469 |
-
def
|
| 470 |
"""
|
| 471 |
-
Get
|
| 472 |
|
| 473 |
Returns:
|
| 474 |
-
pd.DataFrame:
|
| 475 |
"""
|
| 476 |
return manager_players_df
|
| 477 |
|
|
@@ -535,7 +535,7 @@ with gr.Blocks(title=f"FPL GW {NEXT_GW} Predictor (MCP)") as demo:
|
|
| 535 |
diff_output = gr.Dataframe()
|
| 536 |
|
| 537 |
diff_btn.click(
|
| 538 |
-
fn=
|
| 539 |
inputs=[max_price, min_pred, diff_top_n],
|
| 540 |
outputs=diff_output
|
| 541 |
)
|
|
@@ -544,7 +544,7 @@ with gr.Blocks(title=f"FPL GW {NEXT_GW} Predictor (MCP)") as demo:
|
|
| 544 |
mgr_btn = gr.Button("Load My Team")
|
| 545 |
mgr_output = gr.Dataframe()
|
| 546 |
|
| 547 |
-
mgr_btn.click(fn=
|
| 548 |
|
| 549 |
|
| 550 |
if __name__ == "__main__":
|
|
|
|
| 341 |
)
|
| 342 |
manager_players_df = pd.merge(
|
| 343 |
manager_players_df,
|
| 344 |
+
final_predictions_df[['element', 'XGB Pred', 'Total Pts', 'Last GW Pts', 'difficulty', 'Next Opponent']],
|
| 345 |
on='element', how='left'
|
| 346 |
)
|
| 347 |
else:
|
|
|
|
| 379 |
df = df.sort_values('XGB Pred', ascending=False).head(top_n)
|
| 380 |
|
| 381 |
cols = ['player_name', 'team_name', 'position', 'value', 'XGB Pred',
|
| 382 |
+
'Total Pts', 'Last GW Pts', 'Pts Mean (5GW)', 'Trend', 'difficulty']
|
| 383 |
|
| 384 |
return df[cols]
|
| 385 |
|
|
|
|
| 443 |
return df[cols]
|
| 444 |
|
| 445 |
|
| 446 |
+
def get_value_picks(max_price: float = 10.0, min_predicted: float = 4.0, top_n: int = 10) -> pd.DataFrame:
|
| 447 |
"""
|
| 448 |
+
Find high-value players (good predicted points relative to price).
|
| 449 |
|
| 450 |
Args:
|
| 451 |
max_price (float): Maximum player price in millions (default: 10.0)
|
|
|
|
| 453 |
top_n (int): Number of results to return (default: 10)
|
| 454 |
|
| 455 |
Returns:
|
| 456 |
+
pd.DataFrame: Best value players sorted by predicted points
|
| 457 |
"""
|
| 458 |
df = final_predictions_df.copy()
|
| 459 |
|
|
|
|
| 461 |
df = df.sort_values('XGB Pred', ascending=False).head(top_n)
|
| 462 |
|
| 463 |
cols = ['player_name', 'team_name', 'position', 'value', 'XGB Pred',
|
| 464 |
+
'Total Pts', 'Last GW Pts', 'Pts Mean (5GW)', 'Trend', 'difficulty']
|
| 465 |
|
| 466 |
return df[cols]
|
| 467 |
|
| 468 |
|
| 469 |
+
def get_my_team() -> pd.DataFrame:
|
| 470 |
"""
|
| 471 |
+
Get predictions for players in manager ID 8679881's team.
|
| 472 |
|
| 473 |
Returns:
|
| 474 |
+
pd.DataFrame: Team players with predictions for next gameweek
|
| 475 |
"""
|
| 476 |
return manager_players_df
|
| 477 |
|
|
|
|
| 535 |
diff_output = gr.Dataframe()
|
| 536 |
|
| 537 |
diff_btn.click(
|
| 538 |
+
fn=get_value_picks,
|
| 539 |
inputs=[max_price, min_pred, diff_top_n],
|
| 540 |
outputs=diff_output
|
| 541 |
)
|
|
|
|
| 544 |
mgr_btn = gr.Button("Load My Team")
|
| 545 |
mgr_output = gr.Dataframe()
|
| 546 |
|
| 547 |
+
mgr_btn.click(fn=get_my_team, outputs=mgr_output)
|
| 548 |
|
| 549 |
|
| 550 |
if __name__ == "__main__":
|