James McCool
commited on
Commit
·
933cab1
1
Parent(s):
8db1f1d
Refactor grab_contest_data function to streamline data processing
Browse files- Removed debug print statements to clean up the code and improve performance.
- Simplified the creation of the player ID mapping by eliminating unnecessary formatting and directly associating player IDs with their respective positions.
- These changes enhance the clarity and efficiency of the data handling process within the application.
global_func/grab_contest_data.py
CHANGED
|
@@ -14,10 +14,6 @@ def grab_contest_data(sport, contest_name, contest_id_map, contest_date):
|
|
| 14 |
# Remove the leading colon and split by the remaining colons
|
| 15 |
player_ids = lineup_hash.lstrip(':').split(':')
|
| 16 |
|
| 17 |
-
# Print example of what we're working with
|
| 18 |
-
print(f"Example lineup_hash: {lineup_hash}")
|
| 19 |
-
print(f"Split player_ids: {player_ids}")
|
| 20 |
-
|
| 21 |
# Check if the number of IDs matches the number of positions
|
| 22 |
if len(player_ids) != len(positions):
|
| 23 |
print(f"Warning: Mismatch for hash {lineup_hash}. IDs: {len(player_ids)}, Positions: {len(positions)}")
|
|
@@ -25,11 +21,7 @@ def grab_contest_data(sport, contest_name, contest_id_map, contest_date):
|
|
| 25 |
|
| 26 |
# Combine positions and player IDs
|
| 27 |
combined_parts = [pos + pid for pos, pid in zip(positions, player_ids)]
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
# Print example of the result
|
| 31 |
-
print(f"Formatted result: {result}")
|
| 32 |
-
return result
|
| 33 |
|
| 34 |
lineups_json = requests.get(lineups_url).json()
|
| 35 |
data_json = requests.get(data_url).json()
|
|
@@ -52,11 +44,11 @@ def grab_contest_data(sport, contest_name, contest_id_map, contest_date):
|
|
| 52 |
players_df = pd.DataFrame(player_data)
|
| 53 |
players_df = players_df.sort_values(by='ownership', ascending=False).reset_index(drop=True)
|
| 54 |
players_df = players_df.rename(columns={'fullName': 'Player', 'rosterPosition': 'Roster Position', 'ownership': '%Drafted', 'actualPoints': 'FPTS', 'salary': 'Salary', 'currentTeam': 'Team'})
|
| 55 |
-
pid_map =
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
|
| 61 |
for lineup_hash, lineup_info in lineups_json['lineups'].items():
|
| 62 |
lineup_data.append({
|
|
@@ -75,12 +67,7 @@ def grab_contest_data(sport, contest_name, contest_id_map, contest_date):
|
|
| 75 |
lineups_df = lineups_df.rename(columns={'index': 'Rank', 'points': 'Points', 'entryNameList': 'EntryName', 'lineupHash': 'Lineup'})
|
| 76 |
lineups_df['EntryName'] = lineups_df['EntryName'] + ' (1/1)'
|
| 77 |
lineups_df['Lineup'] = lineups_df['Lineup'].apply(lambda x: format_lineup_string(x, position_inserts))
|
| 78 |
-
# Print example before and after replacement
|
| 79 |
-
print("\nExample before replacement:")
|
| 80 |
-
print(lineups_df['Lineup'].iloc[0])
|
| 81 |
lineups_df['Lineup'] = lineups_df['Lineup'].replace(pid_map, regex=False)
|
| 82 |
-
print("\nExample after replacement:")
|
| 83 |
-
print(lineups_df['Lineup'].iloc[0])
|
| 84 |
lineups_df = lineups_df[['Rank', 'EntryId', 'EntryName', 'TimeRemaining', 'Points', 'Lineup']]
|
| 85 |
|
| 86 |
total_data = lineups_df.merge(players_df, how='left', left_index=True, right_index=True)
|
|
|
|
| 14 |
# Remove the leading colon and split by the remaining colons
|
| 15 |
player_ids = lineup_hash.lstrip(':').split(':')
|
| 16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
# Check if the number of IDs matches the number of positions
|
| 18 |
if len(player_ids) != len(positions):
|
| 19 |
print(f"Warning: Mismatch for hash {lineup_hash}. IDs: {len(player_ids)}, Positions: {len(positions)}")
|
|
|
|
| 21 |
|
| 22 |
# Combine positions and player IDs
|
| 23 |
combined_parts = [pos + pid for pos, pid in zip(positions, player_ids)]
|
| 24 |
+
return "".join(combined_parts)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
|
| 26 |
lineups_json = requests.get(lineups_url).json()
|
| 27 |
data_json = requests.get(data_url).json()
|
|
|
|
| 44 |
players_df = pd.DataFrame(player_data)
|
| 45 |
players_df = players_df.sort_values(by='ownership', ascending=False).reset_index(drop=True)
|
| 46 |
players_df = players_df.rename(columns={'fullName': 'Player', 'rosterPosition': 'Roster Position', 'ownership': '%Drafted', 'actualPoints': 'FPTS', 'salary': 'Salary', 'currentTeam': 'Team'})
|
| 47 |
+
pid_map = {}
|
| 48 |
+
for pos in ['1B', '2B', '3B', 'C', 'OF', 'P', 'SS']:
|
| 49 |
+
for pid, name in zip(players_df['playerId'].astype(str), players_df['Player']):
|
| 50 |
+
# Create entries for each position format
|
| 51 |
+
pid_map[f"{pos} {pid}"] = f"{pos} {name}"
|
| 52 |
|
| 53 |
for lineup_hash, lineup_info in lineups_json['lineups'].items():
|
| 54 |
lineup_data.append({
|
|
|
|
| 67 |
lineups_df = lineups_df.rename(columns={'index': 'Rank', 'points': 'Points', 'entryNameList': 'EntryName', 'lineupHash': 'Lineup'})
|
| 68 |
lineups_df['EntryName'] = lineups_df['EntryName'] + ' (1/1)'
|
| 69 |
lineups_df['Lineup'] = lineups_df['Lineup'].apply(lambda x: format_lineup_string(x, position_inserts))
|
|
|
|
|
|
|
|
|
|
| 70 |
lineups_df['Lineup'] = lineups_df['Lineup'].replace(pid_map, regex=False)
|
|
|
|
|
|
|
| 71 |
lineups_df = lineups_df[['Rank', 'EntryId', 'EntryName', 'TimeRemaining', 'Points', 'Lineup']]
|
| 72 |
|
| 73 |
total_data = lineups_df.merge(players_df, how='left', left_index=True, right_index=True)
|