pydfs-lineup-optimizer
pydfs-lineup-optimizer copied to clipboard
Get Projected Ownership from CSV
First off, thank you @DimaKudosh for this tool you have provided, as well as the support you give here. It's an incredibly useful thing to have, and I appreciate your efforts.
I know others have mentioned issues with importing projected ownerships from their CSV's using a custom column "Projected Ownership", but even after spending hours trying to solve this problem I cannot seem to figure out how to get it to use my provided data. I do not want to manually provide player ownership data in my script, but rather have it load from my CSV (for example, a normal FanDuel export with a "Projected Ownership" column added at the end).
I currently have this code:
` from pydfs_lineup_optimizer import get_optimizer, Site, Sport, CSVLineupExporter, TeamStack, PositionsStack, PlayersGroup, Player
optimizer = get_optimizer(Site.FANDUEL, Sport.FOOTBALL) optimizer.set_max_repeating_players(########) optimizer.set_min_salary_cap(########) optimizer.load_players_from_csv(#########) optimizer.##############
for player in optimizer.players: player.projected_ownership = get_projected_ownership(player) optimizer.set_projected_ownership(max_projected_ownership=0.6)
exporter = CSVLineupExporter(optimizer.optimize(#)) exporter.export(#########') `
How can I do this? Any help is greatly appreciated.
I would set these values when you create players. In my opinion, do not use load_players_from_csv because it assumes your projections are in the DK salary file, which is likely not the case. Instead, create the Player objects and use load_players.
Here is how I create players. Assume I have projections in a pandas dataframe, I apply this function row-wise:
def row_to_player(self, row):
"""Converts dataframe row to Player object
Args:
row (namedtuple): dataframe row
Returns:
Player
"""
valid_kwargs = (
'is_injured', 'max_exposure', 'min_exposure',
'projected_ownership', 'game_info', 'roster_order',
'min_deviation', 'max_deviation', 'is_confirmed_starter',
'fppg_floor', 'fppg_ceil'
)
kwargs = {field: getattr(row, field) for field in row._fields
if field in valid_kwargs}
return Player (
player_id=row.player,
first_name=self._first_name(row.player),
last_name=self._last_name(row.player),
positions=[row.pos],
team=row.team,
salary=row.salary,
fppg=row.proj,
**kwargs
)
First off, thank you @DimaKudosh for this tool you have provided, as well as the support you give here. It's an incredibly useful thing to have, and I appreciate your efforts.
I know others have mentioned issues with importing projected ownerships from their CSV's using a custom column "Projected Ownership", but even after spending hours trying to solve this problem I cannot seem to figure out how to get it to use my provided data. I do not want to manually provide player ownership data in my script, but rather have it load from my CSV (for example, a normal FanDuel export with a "Projected Ownership" column added at the end).
I currently have this code:
` from pydfs_lineup_optimizer import get_optimizer, Site, Sport, CSVLineupExporter, TeamStack, PositionsStack, PlayersGroup, Player
optimizer = get_optimizer(Site.FANDUEL, Sport.FOOTBALL) optimizer.set_max_repeating_players(########) optimizer.set_min_salary_cap(########) optimizer.load_players_from_csv(#########) optimizer.##############
for player in optimizer.players: player.projected_ownership = get_projected_ownership(player) optimizer.set_projected_ownership(max_projected_ownership=0.6)
exporter = CSVLineupExporter(optimizer.optimize(#)) exporter.export(#########') `
How can I do this? Any help is greatly appreciated.
Did you ever figure out how to do this? @kryptickevin
@sansbacon i would use your method, but Im a real novice with python, and far more experienced with excel and its easy enough for me to just add 1 column into my csv. Would you be willing to help me through your explanation via email or something?
Я бы установил эти значения при создании игроков. На мой взгляд, не используйте load_players_from_csv, потому что он предполагает, что ваши прогнозы находятся в файле зарплаты DK, что, вероятно, не так. Вместо этого создайте объекты Player и используйте load_players.
Вот как я создаю игроков. Предположим, у меня есть проекции в фрейме данных pandas, я применяю эту функцию построчно:
def row_to_player(self, row): """Converts dataframe row to Player object Args: row (namedtuple): dataframe row Returns: Player """ valid_kwargs = ( 'is_injured', 'max_exposure', 'min_exposure', 'projected_ownership', 'game_info', 'roster_order', 'min_deviation', 'max_deviation', 'is_confirmed_starter', 'fppg_floor', 'fppg_ceil' ) kwargs = {field: getattr(row, field) for field in row._fields if field in valid_kwargs} return Player ( player_id=row.player, first_name=self._first_name(row.player), last_name=self._last_name(row.player), positions=[row.pos], team=row.team, salary=row.salary, fppg=row.proj, **kwargs )
I also want to import another csv file, do I just insert your code?