-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFD_NASCAR.py
102 lines (65 loc) · 2.11 KB
/
FD_NASCAR.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#! FanDuel NASCAR Comp
import pandas as pd
import os
import matplotlib.pyplot as plt
from tabulate import tabulate
from pprint import pprint
import time
from pulp import *
import logging
logging.basicConfig(level=logging.DEBUG,
format=' %(asctime)s - %(levelname)s- %(message)s')
logging.debug('Start of Program')
#road = 'C:\\Users\\ngoodroe\\Desktop'
road = r'/Users/goodroe/Dropbox/Python/Pandas'
#Teams according to FanDuel
if os.getcwd() != road:
os.chdir(road)
logging.debug('File Path Fixed')
logging.debug('New dataframe')
fd = pd.read_csv('FanDuel-NASCAR-2019-07-13-36888-players-list.csv')
fd = fd.set_index('Nickname')
fd.index.names = ['Name']
fd['Score'] = (fd.Salary * fd.FPPG)**(.5)
df = fd
try:
df = df[df['Injury Indicator'] != 'O']
except:
None
### MANUAL TAKEOUT
# df = df[df.index != 'Kawhi Leonard']
# df = df[df.index != 'Rudy Gay']
###
players = []
for total in range(len(df)):
players.append([df.iloc[total]['Position'],
df.index[total],
df.iloc[total].Salary,
df.iloc[total].Score]) #FPPG to Score
playernum = [str(i) for i in range(len(df.index))]
cost = {str(i): df.iloc[i]['Salary'] for i in range(len(df.index))}
pts = {str(i): df.iloc[i]['Score'] for i in range(len(df.index))} #FPPG to Score
model = LpProblem('Fantasy Golf', LpMaximize)
player_var = LpVariable.dicts('Player',playernum,0,1,LpBinary)
model += lpSum([pts[i]*player_var[i] for i in playernum]),'TotalScore'
model += lpSum([cost[i]*player_var[i] for i in playernum]) <= 50000
model += lpSum([player_var[i] for i in playernum]) <= 5
status = model.solve()
LpStatus[model.status]
best = []
lineup = []
totalcost = 0
totalfant = 0
totalpoints = 0
for var in player_var:
var_value = player_var[var].varValue
if var_value == 1:
best.append(var)
for each in best:
lineup.append(players[int(each)])
for each in lineup:
totalcost += each[2]
totalfant += each[3]
lineup.append(['Total','',totalcost,totalfant])
titles = ['Pos','Name','Price','Score']
print(tabulate(lineup,headers = titles))