Multichem commited on
Commit
5691552
·
1 Parent(s): 8acbb7c

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +196 -0
app.py ADDED
@@ -0,0 +1,196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ st.set_page_config(layout="wide")
3
+
4
+ for name in dir():
5
+ if not name.startswith('_'):
6
+ del globals()[name]
7
+
8
+ import numpy as np
9
+ import pandas as pd
10
+ import streamlit as st
11
+ import gspread
12
+ import random
13
+ import gc
14
+
15
+ tab1, tab2 = st.tabs(['Uploads', 'Manage Portfolio'])
16
+
17
+ with tab1:
18
+ with st.container():
19
+ col1, col2 = st.columns([3, 3])
20
+
21
+ with col1:
22
+ st.info("The Projections file can have any columns in any order, but must contain columns explicitly named: 'Player', 'Salary', 'Position', 'Team', 'Opp', 'Median', and 'Own'. Upload your projections first to avoid an error message.")
23
+ proj_file = st.file_uploader("Upload Projections File", key = 'proj_uploader')
24
+
25
+ if proj_file is not None:
26
+ try:
27
+ proj_dataframe = pd.read_csv(proj_file)
28
+ proj_dataframe = proj_dataframe.dropna(subset='Median')
29
+ proj_dataframe['Player'] = proj_dataframe['Player'].str.strip()
30
+ try:
31
+ proj_dataframe['Own'] = proj_dataframe['Own'].str.strip('%').astype(float)
32
+ except:
33
+ pass
34
+
35
+ except:
36
+ proj_dataframe = pd.read_excel(proj_file)
37
+ proj_dataframe = proj_dataframe.dropna(subset='Median')
38
+ proj_dataframe['Player'] = proj_dataframe['Player'].str.strip()
39
+ try:
40
+ proj_dataframe['Own'] = proj_dataframe['Own'].str.strip('%').astype(float)
41
+ except:
42
+ pass
43
+ st.table(proj_dataframe.head(10))
44
+ player_salary_dict = dict(zip(proj_dataframe.Player, proj_dataframe.Salary))
45
+ player_proj_dict = dict(zip(proj_dataframe.Player, proj_dataframe.Median))
46
+ player_own_dict = dict(zip(proj_dataframe.Player, proj_dataframe.Own))
47
+
48
+ with col2:
49
+ st.info("The Portfolio file must contain only columns in order and explicitly named: 'PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', and 'UTIL'. Upload your projections first to avoid an error message.")
50
+ portfolio_file = st.file_uploader("Upload Portfolio File", key = 'portfolio_uploader')
51
+
52
+ if portfolio_file is not None:
53
+ try:
54
+ portfolio_dataframe = pd.read_csv(portfolio_file)
55
+
56
+ except:
57
+ portfolio_dataframe = pd.read_excel(portfolio_file)
58
+
59
+ try:
60
+ try:
61
+ portfolio_dataframe.columns=['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'UTIL']
62
+ split_portfolio = portfolio_dataframe
63
+ split_portfolio[['PG', 'PG_ID']] = split_portfolio.PG.str.split("(", n=1, expand = True)
64
+ split_portfolio[['SG', 'SG_ID']] = split_portfolio.SG.str.split("(", n=1, expand = True)
65
+ split_portfolio[['SF', 'SF_ID']] = split_portfolio.SF.str.split("(", n=1, expand = True)
66
+ split_portfolio[['PF', 'PF_ID']] = split_portfolio.PF.str.split("(", n=1, expand = True)
67
+ split_portfolio[['C', 'C_ID']] = split_portfolio.C.str.split("(", n=1, expand = True)
68
+ split_portfolio[['G', 'G_ID']] = split_portfolio.G.str.split("(", n=1, expand = True)
69
+ split_portfolio[['F', 'F_ID']] = split_portfolio.F.str.split("(", n=1, expand = True)
70
+ split_portfolio[['UTIL', 'UTIL_ID']] = split_portfolio.UTIL.str.split("(", n=1, expand = True)
71
+
72
+ split_portfolio['PG'] = split_portfolio['PG'].str.strip()
73
+ split_portfolio['SG'] = split_portfolio['SG'].str.strip()
74
+ split_portfolio['SF'] = split_portfolio['SF'].str.strip()
75
+ split_portfolio['PF'] = split_portfolio['PF'].str.strip()
76
+ split_portfolio['C'] = split_portfolio['C'].str.strip()
77
+ split_portfolio['G'] = split_portfolio['G'].str.strip()
78
+ split_portfolio['F'] = split_portfolio['F'].str.strip()
79
+ split_portfolio['UTIL'] = split_portfolio['UTIL'].str.strip()
80
+
81
+ split_portfolio['Salary'] = sum([split_portfolio['PG'].map(player_salary_dict),
82
+ split_portfolio['SG'].map(player_salary_dict),
83
+ split_portfolio['SF'].map(player_salary_dict),
84
+ split_portfolio['PF'].map(player_salary_dict),
85
+ split_portfolio['C'].map(player_salary_dict),
86
+ split_portfolio['G'].map(player_salary_dict),
87
+ split_portfolio['F'].map(player_salary_dict),
88
+ split_portfolio['UTIL'].map(player_salary_dict)])
89
+
90
+ split_portfolio['Projection'] = sum([split_portfolio['PG'].map(player_proj_dict),
91
+ split_portfolio['SG'].map(player_proj_dict),
92
+ split_portfolio['SF'].map(player_proj_dict),
93
+ split_portfolio['PF'].map(player_proj_dict),
94
+ split_portfolio['C'].map(player_proj_dict),
95
+ split_portfolio['G'].map(player_proj_dict),
96
+ split_portfolio['F'].map(player_proj_dict),
97
+ split_portfolio['UTIL'].map(player_proj_dict)])
98
+
99
+ split_portfolio['Ownership'] = sum([split_portfolio['PG'].map(player_own_dict),
100
+ split_portfolio['SG'].map(player_own_dict),
101
+ split_portfolio['SF'].map(player_own_dict),
102
+ split_portfolio['PF'].map(player_own_dict),
103
+ split_portfolio['C'].map(player_own_dict),
104
+ split_portfolio['G'].map(player_own_dict),
105
+ split_portfolio['F'].map(player_own_dict),
106
+ split_portfolio['UTIL'].map(player_own_dict)])
107
+
108
+ st.table(split_portfolio.head(10))
109
+
110
+
111
+ except:
112
+ portfolio_dataframe.columns=['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'UTIL']
113
+
114
+ split_portfolio = portfolio_dataframe
115
+ split_portfolio[['PG_ID', 'PG']] = split_portfolio.PG.str.split(":", n=1, expand = True)
116
+ split_portfolio[['SG_ID', 'SG']] = split_portfolio.SG.str.split(":", n=1, expand = True)
117
+ split_portfolio[['SF_ID', 'SF']] = split_portfolio.SF.str.split(":", n=1, expand = True)
118
+ split_portfolio[['PF_ID', 'PF']] = split_portfolio.PF.str.split(":", n=1, expand = True)
119
+ split_portfolio[['C_ID', 'C']] = split_portfolio.C.str.split(":", n=1, expand = True)
120
+ split_portfolio[['G_ID', 'G']] = split_portfolio.G.str.split(":", n=1, expand = True)
121
+ split_portfolio[['F_ID', 'F']] = split_portfolio.F.str.split(":", n=1, expand = True)
122
+ split_portfolio[['UTIL_ID', 'UTIL']] = split_portfolio.UTIL.str.split(":", n=1, expand = True)
123
+
124
+ split_portfolio['PG'] = split_portfolio['PG'].str.strip()
125
+ split_portfolio['SG'] = split_portfolio['SG'].str.strip()
126
+ split_portfolio['SF'] = split_portfolio['SF'].str.strip()
127
+ split_portfolio['PF'] = split_portfolio['PF'].str.strip()
128
+ split_portfolio['C'] = split_portfolio['C'].str.strip()
129
+ split_portfolio['G'] = split_portfolio['G'].str.strip()
130
+ split_portfolio['F'] = split_portfolio['F'].str.strip()
131
+ split_portfolio['UTIL'] = split_portfolio['UTIL'].str.strip()
132
+
133
+ split_portfolio['Salary'] = sum([split_portfolio['PG'].map(player_salary_dict),
134
+ split_portfolio['SG'].map(player_salary_dict),
135
+ split_portfolio['SF'].map(player_salary_dict),
136
+ split_portfolio['PF'].map(player_salary_dict),
137
+ split_portfolio['C'].map(player_salary_dict),
138
+ split_portfolio['G'].map(player_salary_dict),
139
+ split_portfolio['F'].map(player_salary_dict),
140
+ split_portfolio['UTIL'].map(player_salary_dict)])
141
+
142
+ split_portfolio['Projection'] = sum([split_portfolio['PG'].map(player_proj_dict),
143
+ split_portfolio['SG'].map(player_proj_dict),
144
+ split_portfolio['SF'].map(player_proj_dict),
145
+ split_portfolio['PF'].map(player_proj_dict),
146
+ split_portfolio['C'].map(player_proj_dict),
147
+ split_portfolio['G'].map(player_proj_dict),
148
+ split_portfolio['F'].map(player_proj_dict),
149
+ split_portfolio['UTIL'].map(player_proj_dict)])
150
+
151
+
152
+ split_portfolio['Ownership'] = sum([split_portfolio['PG'].map(player_own_dict),
153
+ split_portfolio['SG'].map(player_own_dict),
154
+ split_portfolio['SF'].map(player_own_dict),
155
+ split_portfolio['PF'].map(player_own_dict),
156
+ split_portfolio['C'].map(player_own_dict),
157
+ split_portfolio['G'].map(player_own_dict),
158
+ split_portfolio['F'].map(player_own_dict),
159
+ split_portfolio['UTIL'].map(player_own_dict)])
160
+
161
+ st.table(split_portfolio.head(10))
162
+
163
+ except:
164
+ split_portfolio = portfolio_dataframe
165
+
166
+ split_portfolio['Salary'] = sum([split_portfolio['PG'].map(player_salary_dict),
167
+ split_portfolio['SG'].map(player_salary_dict),
168
+ split_portfolio['SF'].map(player_salary_dict),
169
+ split_portfolio['PF'].map(player_salary_dict),
170
+ split_portfolio['C'].map(player_salary_dict),
171
+ split_portfolio['G'].map(player_salary_dict),
172
+ split_portfolio['F'].map(player_salary_dict),
173
+ split_portfolio['UTIL'].map(player_salary_dict)])
174
+
175
+ split_portfolio['Projection'] = sum([split_portfolio['PG'].map(player_proj_dict),
176
+ split_portfolio['SG'].map(player_proj_dict),
177
+ split_portfolio['SF'].map(player_proj_dict),
178
+ split_portfolio['PF'].map(player_proj_dict),
179
+ split_portfolio['C'].map(player_proj_dict),
180
+ split_portfolio['G'].map(player_proj_dict),
181
+ split_portfolio['F'].map(player_proj_dict),
182
+ split_portfolio['UTIL'].map(player_proj_dict)])
183
+
184
+
185
+ split_portfolio['Ownership'] = sum([split_portfolio['PG'].map(player_own_dict),
186
+ split_portfolio['SG'].map(player_own_dict),
187
+ split_portfolio['SF'].map(player_own_dict),
188
+ split_portfolio['PF'].map(player_own_dict),
189
+ split_portfolio['C'].map(player_own_dict),
190
+ split_portfolio['G'].map(player_own_dict),
191
+ split_portfolio['F'].map(player_own_dict),
192
+ split_portfolio['UTIL'].map(player_own_dict)])
193
+
194
+ gc.collect()
195
+
196
+ with tab2: