-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdump-player-projections.py
55 lines (40 loc) · 1.7 KB
/
dump-player-projections.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
import pandas as pd
import numpy as np
from datetime import datetime, timezone, date
from csh_fantasy_bot import bot, nhl, roster_change_optimizer
import logging
logging.basicConfig(level=logging.INFO)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)
from elasticsearch import Elasticsearch
from elasticsearch import helpers
es = Elasticsearch(hosts='http://localhost:9200', http_compress=True)
stats = ['G','A','SOG','+/-','HIT','PIM','FW']
weights_series = pd.Series([1, .75, 1, .5, 1, .1, 1], index=stats)
week_number = 1
manager = bot.ManagerBot(week_number)
projections = manager.all_players[manager.all_players.position_type == 'P']
projections.reset_index(inplace=True)
projections = manager.pred_bldr.predict(projections)
projection_date = date(2020,3,8)
projections.loc[:, 'projection_date'] = projection_date
projections['timestamp'] = projection_date
player_projection_columns =['name','eligible_positions','team_id','team_name','projection_date','player_id','timestamp'] + stats
def filter_keys(document, columns):
return {key: document[key] for key in columns}
def doc_generator_projections(df):
df_iter = df.iterrows()
for index, document in df_iter:
try:
document['player_id'] = int(index)
if not np.isnan(document['G']):
yield {
"_index": 'fantasy-bot-player-projections',
"_type": "_doc",
"_id": "{}.{}".format(index,projection_date),
"_source": filter_keys(document,player_projection_columns),
}
except Exception as e:
print(e)
pass
helpers.bulk(es, doc_generator_projections(projections))