ZENLLC nesticot commited on
Commit
f21c7b1
·
0 Parent(s):

Duplicate from nesticot/mlb_csw_whiff_rolling_2

Browse files

Co-authored-by: Thomas Nestico <nesticot@users.noreply.huggingface.co>

.gitattributes ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
35
+ exit_velo_df.csv filter=lfs diff=lfs merge=lfs -text
36
+ README.md filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+
2
+ .venv/
3
+ __pycache__
4
+ .DS_Store
.vscode/settings.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "[python]": {
3
+ "editor.defaultFormatter": "ms-python.black-formatter"
4
+ },
5
+ "python.formatting.provider": "none"
6
+ }
Dockerfile ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.9
2
+
3
+ WORKDIR /code
4
+
5
+ COPY ./requirements.txt /code/requirements.txt
6
+
7
+ RUN pip install -r requirements.txt
8
+
9
+ COPY . .
10
+
11
+ EXPOSE 7860
12
+
13
+ CMD ["shiny", "run", "app.py", "--host", "0.0.0.0", "--port", "7860"]
README.md ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: MLB CSW And Whiff
3
+ emoji: ⚾
4
+ colorFrom: yellow
5
+ colorTo: indigo
6
+ sdk: docker
7
+ pinned: false
8
+ license: mit
9
+ duplicated_from: nesticot/mlb_csw_whiff_rolling_2
10
+ ---
11
+
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,363 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import numpy as np
3
+ import matplotlib.pyplot as plt
4
+ import seaborn as sns
5
+ import math
6
+ import matplotlib.ticker as mtick
7
+ from matplotlib.ticker import FuncFormatter
8
+
9
+ # stuff_df = pd.read_html('https://www.fangraphs.com/leaders.aspx?pos=all&stats=pit&lg=all&qual=0&type=36&season=2023&month=0&season1=2023&ind=0&team=0&rost=0&age=0&filter=&players=0&startdate=2023-01-01&enddate=2023-12-31&page=1_5000')[5]#.droplevel(1)
10
+ # stuff_df.columns = stuff_df.columns.droplevel(0)
11
+ # stuff_df = stuff_df.iloc[:-1]
12
+ # stuff_df = stuff_df[stuff_df.columns[1:]]
13
+ # stuff_df.columns = [x.replace('Stf+ ','') for x in stuff_df.columns]
14
+ # stuff_df = stuff_df.rename(columns = {'FA':'FF'})
15
+ # stuff_df['ST'] = stuff_df.SL
16
+ # stuff_df_melt = stuff_df.melt(id_vars=['Name','Team','IP']).dropna().sort_values(by='IP',ascending=False).reset_index(drop=True)
17
+ stuff_df_melt = pd.read_csv('stuff_df_melt.csv',index_col=[0])
18
+
19
+ exit_velo_df = pd.read_csv('exit_velo_df.csv',index_col=[0])
20
+
21
+
22
+ swing_codes = ['Swinging Strike', 'In play, no out',
23
+ 'Foul', 'In play, out(s)',
24
+ 'In play, run(s)', 'Swinging Strike (Blocked)',
25
+ 'Foul Bunt','Foul Tip', 'Missed Bunt','Foul Pitchout','Swinging Pitchout']
26
+
27
+ swings_in = ['Swinging Strike', 'In play, no out',
28
+ 'Foul', 'In play, out(s)',
29
+ 'In play, run(s)', 'Swinging Strike (Blocked)',
30
+ 'Foul Bunt','Foul Tip', 'Missed Bunt','Foul Pitchout','Swinging Pitchout']
31
+
32
+ swing_strike_codes = ['Swinging Strike',
33
+ 'Swinging Strike (Blocked)','Missed Bunt','Foul Tip','Swinging Pitchout']
34
+
35
+
36
+ contact_codes = ['In play, no out',
37
+ 'Foul', 'In play, out(s)',
38
+ 'In play, run(s)',
39
+ 'Foul Bunt']
40
+
41
+ codes_in = ['In play, out(s)',
42
+ 'Swinging Strike',
43
+ 'Ball',
44
+ 'Foul',
45
+ 'In play, no out',
46
+ 'Called Strike',
47
+ 'Foul Tip',
48
+ 'In play, run(s)',
49
+ 'Hit By Pitch',
50
+ 'Ball In Dirt',
51
+ 'Pitchout',
52
+ 'Swinging Strike (Blocked)',
53
+ 'Foul Bunt',
54
+ 'Missed Bunt',
55
+ 'Foul Pitchout',
56
+ 'Intent Ball',
57
+ 'Swinging Pitchout']
58
+
59
+
60
+ exit_velo_df = exit_velo_df[exit_velo_df['description'].isin(codes_in)]
61
+ exit_velo_df['pitch'] = exit_velo_df.groupby('pitcher_id').cumcount() + 1
62
+
63
+ exit_velo_df['pitch_type_count'] = exit_velo_df.groupby(['pitcher_id','pitch_type']).cumcount() + 1
64
+
65
+ exit_velo_df = exit_velo_df[['game_id','date','pitcher_id','pitcher','pitch_code','pitch_type','pitch_velocity','code','description','pitch','pitch_type_count']]
66
+ #print(exit_velo_df.head())
67
+ print('we made it',len(exit_velo_df))
68
+ exit_velo_df['pitches'] = 1
69
+ exit_velo_df['whiffs'] = [1 if ((x == 'S')|(x == 'W')|(x =='T')) else 0 for x in exit_velo_df.code]
70
+ exit_velo_df['csw'] = [1 if ((x == 'S')|(x == 'W')|(x =='T')|(x == 'C')) else 0 for x in exit_velo_df.code]
71
+ exit_velo_df['swings'] = [1 if x in swings_in else 0 for x in exit_velo_df.description]
72
+ #print(exit_velo_df['swings'])
73
+ # exit_velo_df['swings_type_count'] = exit_velo_df.groupby(['pitcher_id','pitch_type','swings']).cumcount() + 1
74
+ # print(exit_velo_df['swings_type_count'])
75
+ import difflib #stuff_df_melt
76
+ eno_name_list = exit_velo_df.drop_duplicates(subset='pitcher_id')['pitcher'].apply(lambda x: (difflib.get_close_matches(x,stuff_df_melt.drop_duplicates(subset='Name').reset_index(drop=True).Name)[:1] or [None])[0]).reset_index(drop=True)
77
+ df_eno_exit_name = pd.DataFrame(data={'pitcher':exit_velo_df.drop_duplicates(subset='pitcher_id')['pitcher'].reset_index(drop=True),'eno_name':eno_name_list})
78
+ exit_velo_df = exit_velo_df.merge(right=df_eno_exit_name,left_on='pitcher',right_on='pitcher',how='left').merge(right=stuff_df_melt,left_on=['eno_name','pitch_type'],right_on=['Name','variable'],how='left')
79
+ print('we made it',len(exit_velo_df))
80
+
81
+
82
+ test_df = exit_velo_df.sort_values(by='pitcher').drop_duplicates(subset='pitcher_id').reset_index(drop=True)[['pitcher_id','pitcher']]#['pitcher'].to_dict()
83
+ test_df = test_df.set_index('pitcher_id')
84
+
85
+ #test_df = test_df[test_df.pitcher == 'Chris Bassitt'].append(test_df[test_df.pitcher != 'Chris Bassitt'])
86
+
87
+ pitcher_dict = test_df['pitcher'].to_dict()
88
+
89
+ colour_palette = ['#FFB000','#648FFF','#785EF0',
90
+ '#DC267F','#FE6100','#3D1EB2','#894D80','#16AA02','#B5592B','#A3C1ED']
91
+
92
+ #print
93
+
94
+ from shiny import ui, render, App
95
+ import matplotlib.image as mpimg
96
+ app_ui = ui.page_fluid(
97
+
98
+ # ui.output_plot("plot"),
99
+ ui.h2('MLB Pitcher Rolling CSW% and Whiff%'),
100
+ ui.row(
101
+ ui.column(
102
+ 2,
103
+ ui.row(ui.h6('Created by: @TJStats')),
104
+ ui.row(ui.h6('Data: MLB, Eno Sarris')),
105
+ ui.row(ui.input_select("id", "Select Pitcher",pitcher_dict))
106
+ ),
107
+ ui.column(
108
+ 1,
109
+ ui.output_plot("plot3",height = "125px",width="100px"),offset=0),
110
+ ui.column(
111
+ 3,
112
+ ui.input_slider("n", "Pitch Rolling Window Size", 0, 100, 10),offset=1),
113
+ ui.column(
114
+ 3,
115
+ ui.input_slider("swing", "Swing Rolling Window Size", 0, 50, 5),offset=1),
116
+ ),
117
+
118
+
119
+ # ui.layout_sidebar(
120
+ # ui.panel_sidebar((ui.input_select("id", "Select Pitcher",pitcher_dict)), width = 2),
121
+ # ui.panel_main(ui.input_slider("n", "Rolling Window Size", 0, 100, 10), width = 10)),
122
+ ui.row(
123
+ ui.column(
124
+ 6,
125
+ ui.output_plot("plot2",height = "225px",width="900px"),offset=0),
126
+ ui.column(
127
+ 6,
128
+ ui.output_plot("plotwhiff",height = "225px",width="900px"),offset=0),
129
+ ),
130
+
131
+
132
+
133
+
134
+
135
+ # ui.layout_sidebar(ui.panel_sidebar((ui.input_select("id", "Select Pitcher",pitcher_dict))),
136
+ # ui.panel_main(ui.output_plot("plot3",height = "250px",width="250px"))),
137
+ # #ui.input_slider("n", "Rolling Window Size", 0, 100, 10),
138
+ # ui.layout_sidebar(
139
+ # ui.panel_sidebar(ui.input_slider("n", "Rolling Window Size", 0, 100, 10)),
140
+
141
+
142
+
143
+
144
+ #ui.input_slider("n", "Number of bins", 0, 10, 1),
145
+ #ui.output_text("value"),
146
+ ui.h4('Rolling CSW% and Whiff% by Pitch Type'),
147
+ ui.output_plot("plot",height = "400px"),
148
+ #ui.download_button('test','Download'),
149
+
150
+ )
151
+
152
+ from urllib.request import Request, urlopen
153
+ # importing OpenCV(cv2) module
154
+
155
+ #print(app_ui)
156
+ def server(input, output, session):
157
+ #@output
158
+ # @render.text
159
+ # def txt():
160
+ # return f'pitcher_id: "{input.pitcher_id()}"'
161
+
162
+
163
+
164
+ @output
165
+ @render.plot(alt='hist')
166
+ def plot3():
167
+ #fig, ax = plt.subplots(1, 1, figsize=(10, 4))
168
+ #img = mpimg.imread('players/'+name+'_'+str(last_games)+' int.png')
169
+
170
+ fig, ax = plt.subplots(figsize=(2,3))
171
+ fig.set_facecolor('#f7f7f7')
172
+
173
+ # img = mpimg.imread('players/'+name+'_'+str(last_games)+'.png')
174
+ # ax.imshow(img)
175
+ # ax.axis('off')
176
+ # fig.tight_layout()
177
+
178
+ #ax.axis('off')
179
+ # with fp:
180
+ # img = mpimg.imread(fp, format='jpeg')
181
+
182
+ ax.axis('off')
183
+ im = plt.imread(f'https://img.mlbstatic.com/mlb-photos/image/upload/d_people:generic:headshot:67:current.png/w_213,q_auto:best/v1/people/{exit_velo_df[exit_velo_df.pitcher_id==int(input.id())].reset_index(drop=True).pitcher_id[0]}/headshot/67/current.png')
184
+ # ax = fig.add_axes([0,0,1,0.85], anchor='C', zorder=1)
185
+ ax.imshow(im)
186
+ ax.axis('off')
187
+
188
+
189
+ @output
190
+ @render.plot(alt='hist')
191
+ def plot2():
192
+ exit_velo_df_small = exit_velo_df[exit_velo_df.pitcher_id==int(input.id())]
193
+ fig, ax = plt.subplots(1, 1, figsize=(10, 4))
194
+ sns.set_theme(style="whitegrid", palette="pastel")
195
+ ax.hlines(exit_velo_df_small['csw'].sum()/exit_velo_df_small['pitches'].sum(),xmin=input.n(),
196
+ xmax=exit_velo_df_small.pitch.max(),
197
+ label='Pitcher Average ('+"{:.1%}".format(exit_velo_df_small['csw'].sum()/exit_velo_df_small['pitches'].sum())+')',color='black',linestyles='-.',alpha=0.4)
198
+ ax.hlines(exit_velo_df.csw.sum()/exit_velo_df.pitches.sum(),xmin=input.n(),xmax=exit_velo_df_small.pitch.max(),
199
+ label='League Average ('+"{:.1%}".format(exit_velo_df.csw.sum()/exit_velo_df.pitches.sum())+')',color='r',linestyles='--',alpha=0.6)
200
+
201
+ #exit_velo_df_small_pitch.pitch_type_count,y=exit_velo_df_small_pitch.rolling(input.n()).sum()['csw']/exit_velo_df_small.rolling(input.n()).sum()['pitches']
202
+ sns.lineplot(x=exit_velo_df_small.pitch,y=exit_velo_df_small.rolling(input.n(),min_periods=input.n()).sum()['csw']/exit_velo_df_small.rolling(input.n(),min_periods=input.n()).sum()['pitches'],linewidth = 2,ax=ax,color=colour_palette[0])
203
+ ax.set_xlim(input.n(),exit_velo_df_small.pitch.max())
204
+ plt.yticks([0,0.2,0.4,0.6,0.8,1])
205
+ ax.set_ylim(0,1)
206
+ ax.legend(fontsize=8)
207
+ vals = ax.get_yticks()
208
+ ax.set_xlabel('Pitch', fontsize=10,fontname='Century Gothic')
209
+ ax.set_ylabel('CSW%', fontsize=10,fontname='Century Gothic')
210
+ ax.set_yticklabels(['{:,.0%}'.format(x) for x in vals])
211
+ #fig.subplots_adjust(wspace=.02, hspace=.02)
212
+ ax.xaxis.set_major_formatter(FuncFormatter(lambda x, _: int(x)))
213
+ fig.set_facecolor('white')
214
+ fig.tight_layout()
215
+
216
+ @output
217
+ @render.plot(alt='hist')
218
+ def plotwhiff():
219
+ exit_velo_df_small = exit_velo_df[exit_velo_df.pitcher_id==int(input.id())]
220
+ print(exit_velo_df_small)
221
+ exit_velo_df_small_swing = exit_velo_df_small[exit_velo_df_small.swings == 1]
222
+ print(exit_velo_df_small_swing.reset_index())
223
+ exit_velo_df_small_swing['whiff_count'] = exit_velo_df_small_swing.groupby('pitcher_id').cumcount()+1
224
+ print(exit_velo_df_small_swing.whiff_count)
225
+
226
+ fig, ax = plt.subplots(1, 1, figsize=(10, 4))
227
+ sns.set_theme(style="whitegrid", palette="pastel")
228
+ ax.hlines(exit_velo_df_small_swing['whiffs'].sum()/exit_velo_df_small_swing['swings'].sum(),xmin=input.swing(),
229
+ xmax=exit_velo_df_small_swing.whiff_count.max(),
230
+ label='Pitcher Average ('+"{:.1%}".format(exit_velo_df_small_swing['whiffs'].sum()/exit_velo_df_small_swing['swings'].sum())+')',color='black',linestyles='-.',alpha=0.4)
231
+ ax.hlines(exit_velo_df.whiffs.sum()/exit_velo_df.swings.sum(),xmin=input.swing(),xmax=exit_velo_df_small_swing.whiff_count.max(),
232
+ label='League Average ('+"{:.1%}".format(exit_velo_df.whiffs.sum()/exit_velo_df.swings.sum())+')',color='r',linestyles='--',alpha=0.6)
233
+
234
+ #exit_velo_df_small_pitch.pitch_type_count,y=exit_velo_df_small_pitch.rolling(input.n()).sum()['csw']/exit_velo_df_small.rolling(input.n()).sum()['pitches']
235
+ sns.lineplot(x=exit_velo_df_small_swing.whiff_count,y=exit_velo_df_small_swing.rolling(input.swing()).sum()['whiffs']/exit_velo_df_small_swing.rolling(input.swing()).sum()['swings'],linewidth = 2,ax=ax,color=colour_palette[1])
236
+ ax.set_xlim(input.swing(),exit_velo_df_small_swing.whiff_count.max())
237
+ plt.yticks([0,0.2,0.4,0.6,0.8,1])
238
+ ax.set_ylim(0,1)
239
+ ax.legend(fontsize=8)
240
+ vals = ax.get_yticks()
241
+ ax.set_xlabel('Swings', fontsize=10,fontname='Century Gothic')
242
+ ax.set_ylabel('Whiff%', fontsize=10,fontname='Century Gothic')
243
+ ax.set_yticklabels(['{:,.0%}'.format(x) for x in vals])
244
+ #fig.subplots_adjust(wspace=.02, hspace=.02)
245
+ ax.xaxis.set_major_formatter(FuncFormatter(lambda x, _: int(x)))
246
+ fig.set_facecolor('white')
247
+ fig.tight_layout()
248
+
249
+
250
+
251
+ @output
252
+ @render.plot(alt="A histogram")
253
+ def plot():
254
+ # np.random.seed(19680801)
255
+ # x = 100 + 15 * np.random.randn(437)
256
+ # fig, ax = plt.subplots()
257
+ # ax.hist(x, input.n(), density=True)
258
+ # return fig
259
+
260
+
261
+
262
+ # penguins = sns.load_dataset("penguins")
263
+ # sns.histplot(data=penguins, x="flipper_length_mm")
264
+ exit_velo_df_small = exit_velo_df[exit_velo_df.pitcher_id==int(input.id())]
265
+ #pitch_list = exit_velo_df_small.pitch_type.unique()
266
+
267
+ pitch_list_df = (exit_velo_df_small.groupby(['pitch_type','pitch_code'])[['pitch_type']].count() / exit_velo_df_small['pitch_type'].count())#.sort_values(by='pitch_type',ascending=False)
268
+ pitch_list_df.columns = ['porp']
269
+ pitch_list_df = pitch_list_df.sort_values(by='porp',ascending=False).reset_index()
270
+ pitch_list_df = pitch_list_df[pitch_list_df.porp >= 0.05]
271
+ #print(pitch_list_df)
272
+
273
+ #fig, ax = plt.subplots(math.ceiling(len(pitch_list))/2, 2, figsize=(10, 4*len(pitch_list)))
274
+
275
+ fig = plt.figure(figsize=(20,20))
276
+ #fig = px.line(exit_velo_df_small, x=exit_velo_df_small.pitch, y=exit_velo_df_small.rolling(50).sum()['csw']/exit_velo_df_small.rolling(50).sum()['pitches'])
277
+ #sns.lineplot(x=exit_velo_df_small.pitch,y=exit_velo_df_small.rolling(input.n()).sum()['csw']/exit_velo_df_small.rolling(input.n()).sum()['pitches'],color='#648FFF',linewidth = 2,label='csw%')
278
+
279
+ for i in range(0,len(pitch_list_df)):
280
+ exit_velo_df_small_pitch = exit_velo_df_small[exit_velo_df_small.pitch_type==pitch_list_df.pitch_type[i]]
281
+ sns.set_theme(style="whitegrid", palette="pastel")
282
+ ax = plt.subplot(2,len(pitch_list_df),i+1)
283
+ ax.hlines(exit_velo_df_small_pitch['csw'].sum()/exit_velo_df_small_pitch['pitches'].sum(),xmin=input.n(),
284
+ xmax=exit_velo_df_small.pitch_type_count.max(),
285
+ label='Pitcher Average ('+"{:.1%}".format(exit_velo_df_small_pitch['csw'].sum()/exit_velo_df_small_pitch['pitches'].sum())+')',color='black',linestyles='-.',alpha=0.4)
286
+ ax.hlines(exit_velo_df[exit_velo_df.pitch_type==pitch_list_df.pitch_type[i]].csw.sum()/exit_velo_df[exit_velo_df.pitch_type==pitch_list_df.pitch_type[i]].pitches.sum(),xmin=input.n(),xmax=exit_velo_df_small.pitch_type_count.max(),
287
+ label='League Average ('+"{:.1%}".format(exit_velo_df[exit_velo_df.pitch_type==pitch_list_df.pitch_type[i]].csw.sum()/exit_velo_df[exit_velo_df.pitch_type==pitch_list_df.pitch_type[i]].pitches.sum())+')',color='r',linestyles='--',alpha=0.6)
288
+
289
+ sns.lineplot(x=exit_velo_df_small_pitch.pitch_type_count,y=exit_velo_df_small_pitch.rolling(input.n()).sum()['csw']/exit_velo_df_small_pitch.rolling(input.n()).sum()['pitches'],linewidth = 2,ax=ax,color=colour_palette[i])
290
+
291
+ #print("{:.1%}".format(exit_velo_df_small_pitch['csw'].sum()/exit_velo_df_small_pitch['pitches'].sum()))
292
+ #sns.despine()
293
+ ax.set_xlabel("Pitches", fontsize=10,fontname='Century Gothic')
294
+ # print(exit_velo_df_small)
295
+ # #print(pitch_list_df)
296
+ # print(exit_velo_df_small[exit_velo_df_small.pitch_type=='SL'])#.value.max())
297
+
298
+ # if pitch_list_df.pitch_type[i]== 'ST':
299
+ # ax.set_title(pitch_list_df.pitch_code[i] +' - '+ pitch_list_df.pitch_type[i] +' ('+"{:.1%}".format((pitch_list_df.porp[i]))+') - '+str((exit_velo_df_small[exit_velo_df_small.pitch_type=='SL'].value.max()))+' Stuff+', fontsize=11,fontname='Century Gothic',weight='bold')
300
+ # else:
301
+ ax.set_title(pitch_list_df.pitch_code[i] +' - '+ pitch_list_df.pitch_type[i] +' ('+"{:.1%}".format((pitch_list_df.porp[i]))+') - '+str(exit_velo_df_small_pitch.value.max())+' Stuff+', fontsize=11,fontname='Century Gothic',weight='bold')
302
+ ax.set_ylabel('CSW%', fontsize=10,fontname='Century Gothic')
303
+ if i ==0:
304
+ ax.legend()
305
+ ax.set_xlim(input.n(),exit_velo_df_small.pitch_type_count.max())
306
+ plt.yticks([0,0.2,0.4,0.6,0.8,1])
307
+ ax.set_ylim(0,1)
308
+ vals = ax.get_yticks()
309
+ ax.set_yticklabels(['{:,.0%}'.format(x) for x in vals])
310
+ ax.xaxis.set_major_formatter(FuncFormatter(lambda x, _: int(x)))
311
+ ax.legend(fontsize=8)
312
+ #whiffs
313
+
314
+ #exit_velo_df_small_pitch
315
+ #exit_velo_df_small = exit_velo_df_small_pitch[exit_velo_df_small_pitch.pitcher_id==int(input.id())]
316
+ #print(exit_velo_df_small)
317
+ exit_velo_df_small_swing = exit_velo_df_small_pitch[exit_velo_df_small_pitch.swings == 1]
318
+ #print(exit_velo_df_small_swing.reset_index())
319
+ exit_velo_df_small_swing['whiff_count'] = exit_velo_df_small_swing.groupby('pitcher_id').cumcount()+1
320
+ # print(exit_velo_df_small_swing.whiff_count)
321
+
322
+ ax = plt.subplot(2,len(pitch_list_df),i+1+len(pitch_list_df))
323
+ ax.hlines(exit_velo_df_small_swing['whiffs'].sum()/exit_velo_df_small_swing['swings'].sum(),xmin=input.swing(),
324
+ xmax=exit_velo_df_small.pitch_type_count.max(),
325
+ label='Pitcher Average ('+"{:.1%}".format(exit_velo_df_small_swing['whiffs'].sum()/exit_velo_df_small_swing['swings'].sum())+')',color='black',linestyles='-.',alpha=0.4)
326
+ ax.hlines(exit_velo_df[exit_velo_df.pitch_type==pitch_list_df.pitch_type[i]].whiffs.sum()/exit_velo_df[exit_velo_df.pitch_type==pitch_list_df.pitch_type[i]].swings.sum(),xmin=input.swing(),xmax=exit_velo_df_small.pitch_type_count.max(),
327
+ label='League Average ('+"{:.1%}".format(exit_velo_df[exit_velo_df.pitch_type==pitch_list_df.pitch_type[i]].whiffs.sum()/exit_velo_df[exit_velo_df.pitch_type==pitch_list_df.pitch_type[i]].swings.sum())+')',color='r',linestyles='--',alpha=0.6)
328
+
329
+ sns.lineplot(x=exit_velo_df_small_swing.whiff_count,y=exit_velo_df_small_swing.rolling(input.swing()).sum()['whiffs']/exit_velo_df_small_swing.rolling(input.swing()).sum()['swings'],linewidth = 2,ax=ax,color=colour_palette[i])
330
+
331
+ #print("{:.1%}".format(exit_velo_df_small_pitch['whiffs'].sum()/exit_velo_df_small_pitch['swings'].sum()))
332
+ #sns.despine()
333
+ ax.set_xlabel("Swings", fontsize=10,fontname='Century Gothic')
334
+ ax.set_ylabel('Whiff%', fontsize=10,fontname='Century Gothic')
335
+ if i ==0:
336
+ ax.legend()
337
+ max_whiff = exit_velo_df_small_swing.whiff_count.max()
338
+ ax.set_xlim(input.swing(),max_whiff)
339
+ plt.yticks([0,0.2,0.4,0.6,0.8,1])
340
+ ax.set_ylim(0,1)
341
+ vals = ax.get_yticks()
342
+ ax.set_yticklabels(['{:,.0%}'.format(x) for x in vals])
343
+ ax.xaxis.set_major_formatter(FuncFormatter(lambda x, _: int(x)))
344
+ ax.legend(fontsize=8)
345
+
346
+ # ax.set_xlim(input.n(),exit_velo_df_small.pitch.max())
347
+ #ax.axis('off')
348
+
349
+ fig.set_facecolor('white')
350
+ fig.tight_layout()
351
+ #ax.hist(exit_velo_df[exit_velo_df.pitcher_id==int(input.id())]['pitch_velocity'],input.n(),density=True)
352
+ #plt.show()
353
+ #return g
354
+
355
+ # This is a shiny.App object. It must be named `app`.
356
+
357
+ # fig, ax = plt.subplots()
358
+ #print(input.pitcher_id())
359
+ # print(input)
360
+ # plt.hist(x=exit_velo_df[exit_velo_df.pitcher_id==input.x()]['pitch_velocity'])
361
+ # plt.show()
362
+
363
+ app = App(app_ui, server)
colors.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Dict, Tuple
2
+
3
+ import matplotlib.colors as mpl_colors
4
+ import seaborn as sns # type: ignore
5
+
6
+ # "darkorange", "purple", "cyan4"
7
+ colors = [[255, 140, 0], [160, 32, 240], [0, 139, 139]]
8
+ colors = [(r / 255.0, g / 255.0, b / 255.0) for r, g, b in colors]
9
+
10
+ palette: Dict[str, Tuple[float, float, float]] = {
11
+ "Adelie": colors[0],
12
+ "Chinstrap": colors[1],
13
+ "Gentoo": colors[2],
14
+ "default": sns.color_palette()[0], # type: ignore
15
+ }
16
+
17
+ bg_palette = {}
18
+ # Use `sns.set_style("whitegrid")` to help find approx alpha value
19
+ for name, col in palette.items():
20
+ # Adjusted n_colors until `axe` accessibility did not complain about color contrast
21
+ bg_palette[name] = mpl_colors.to_hex(sns.light_palette(col, n_colors=7)[1]) # type: ignore
exit_velo_df.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f6d470acb5c1e4da1f3d404f4a5b37f7bb72feb618b2ce9e94fde1a3829488cb
3
+ size 80677575
player_df_all.csv ADDED
@@ -0,0 +1,1134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ,player_id,team_id,abbreviation
2
+ 0,664314.0,147.0,NYY
3
+ 1,649966.0,158.0,MIL
4
+ 2,592662.0,136.0,SEA
5
+ 3,456501.0,146.0,MIA
6
+ 4,689167.0,146.0,MIA
7
+ 5,642121.0,109.0,AZ
8
+ 6,669270.0,113.0,CIN
9
+ 7,669742.0,143.0,PHI
10
+ 8,642528.0,147.0,NYY
11
+ 9,553882.0,121.0,NYM
12
+ 10,640457.0,116.0,DET
13
+ 11,621311.0,135.0,SD
14
+ 12,547379.0,137.0,SF
15
+ 13,676050.0,138.0,STL
16
+ 14,605540.0,158.0,MIL
17
+ 15,641447.0,146.0,MIA
18
+ 16,594807.0,111.0,BOS
19
+ 17,665833.0,134.0,PIT
20
+ 18,666159.0,116.0,DET
21
+ 19,642578.0,136.0,SEA
22
+ 20,672841.0,109.0,AZ
23
+ 21,676083.0,158.0,MIL
24
+ 22,621532.0,110.0,BAL
25
+ 23,677161.0,111.0,BOS
26
+ 24,669395.0,118.0,KC
27
+ 25,621368.0,140.0,TEX
28
+ 26,605155.0,147.0,NYY
29
+ 27,596847.0,134.0,PIT
30
+ 28,682051.0,116.0,DET
31
+ 29,668952.0,116.0,DET
32
+ 30,656818.0,113.0,CIN
33
+ 31,605488.0,139.0,TB
34
+ 32,664058.0,108.0,LAA
35
+ 33,543548.0,136.0,SEA
36
+ 34,686842.0,143.0,PHI
37
+ 35,663460.0,118.0,KC
38
+ 36,607188.0,111.0,BOS
39
+ 37,656669.0,141.0,TOR
40
+ 38,657093.0,110.0,BAL
41
+ 39,641796.0,121.0,NYM
42
+ 40,666204.0,133.0,OAK
43
+ 41,669134.0,135.0,SD
44
+ 42,607461.0,137.0,SF
45
+ 43,622259.0,116.0,DET
46
+ 44,670810.0,110.0,BAL
47
+ 45,622503.0,135.0,SD
48
+ 46,669003.0,158.0,MIL
49
+ 47,669432.0,146.0,MIA
50
+ 48,518516.0,109.0,AZ
51
+ 49,681351.0,108.0,LAA
52
+ 50,675627.0,119.0,LAD
53
+ 51,596082.0,119.0,LAD
54
+ 52,663753.0,135.0,SD
55
+ 53,669450.0,136.0,SEA
56
+ 54,680573.0,142.0,MIN
57
+ 55,670955.0,121.0,NYM
58
+ 56,671218.0,137.0,SF
59
+ 57,660431.0,139.0,TB
60
+ 58,640444.0,134.0,PIT
61
+ 59,613564.0,113.0,CIN
62
+ 60,456713.0,158.0,MIL
63
+ 61,681810.0,108.0,LAA
64
+ 62,644374.0,111.0,BOS
65
+ 63,660644.0,139.0,TB
66
+ 64,543594.0,146.0,MIA
67
+ 65,642201.0,144.0,ATL
68
+ 66,669711.0,147.0,NYY
69
+ 67,570632.0,115.0,COL
70
+ 68,663455.0,114.0,CLE
71
+ 69,656578.0,119.0,LAD
72
+ 70,675986.0,134.0,PIT
73
+ 71,592390.0,139.0,TB
74
+ 72,592222.0,158.0,MIL
75
+ 73,621383.0,145.0,CWS
76
+ 74,608566.0,115.0,COL
77
+ 75,687396.0,142.0,MIN
78
+ 76,628317.0,142.0,MIN
79
+ 77,669256.0,144.0,ATL
80
+ 78,663897.0,119.0,LAD
81
+ 79,543482.0,134.0,PIT
82
+ 80,663385.0,133.0,OAK
83
+ 81,681481.0,116.0,DET
84
+ 82,541645.0,146.0,MIA
85
+ 83,650895.0,136.0,SEA
86
+ 84,660593.0,121.0,NYM
87
+ 85,676130.0,121.0,NYM
88
+ 86,594798.0,140.0,TEX
89
+ 87,665506.0,143.0,PHI
90
+ 88,650671.0,108.0,LAA
91
+ 89,621389.0,115.0,COL
92
+ 90,642180.0,133.0,OAK
93
+ 91,607455.0,120.0,WSH
94
+ 92,641816.0,142.0,MIN
95
+ 93,668834.0,136.0,SEA
96
+ 94,672391.0,111.0,BOS
97
+ 95,663562.0,115.0,COL
98
+ 96,650619.0,114.0,CLE
99
+ 97,600303.0,136.0,SEA
100
+ 98,614177.0,118.0,KC
101
+ 99,693049.0,145.0,CWS
102
+ 100,663368.0,158.0,MIL
103
+ 101,678061.0,135.0,SD
104
+ 102,668868.0,138.0,STL
105
+ 103,664353.0,117.0,HOU
106
+ 104,501303.0,144.0,ATL
107
+ 105,621366.0,112.0,CHC
108
+ 106,663546.0,137.0,SF
109
+ 107,677651.0,117.0,HOU
110
+ 108,595909.0,143.0,PHI
111
+ 109,629498.0,146.0,MIA
112
+ 110,669023.0,120.0,WSH
113
+ 111,676265.0,120.0,WSH
114
+ 112,573204.0,142.0,MIN
115
+ 113,656981.0,109.0,AZ
116
+ 114,668843.0,133.0,OAK
117
+ 115,595928.0,121.0,NYM
118
+ 116,669105.0,121.0,NYM
119
+ 117,657140.0,144.0,ATL
120
+ 118,656970.0,146.0,MIA
121
+ 119,668676.0,114.0,CLE
122
+ 120,682171.0,136.0,SEA
123
+ 121,544727.0,133.0,OAK
124
+ 122,642758.0,133.0,OAK
125
+ 123,670124.0,133.0,OAK
126
+ 124,641933.0,138.0,STL
127
+ 125,663765.0,138.0,STL
128
+ 126,680735.0,118.0,KC
129
+ 127,664728.0,118.0,KC
130
+ 128,671111.0,145.0,CWS
131
+ 129,661531.0,115.0,COL
132
+ 130,602074.0,115.0,COL
133
+ 131,647315.0,141.0,TOR
134
+ 132,608703.0,113.0,CIN
135
+ 133,672724.0,147.0,NYY
136
+ 134,680739.0,142.0,MIN
137
+ 135,660757.0,114.0,CLE
138
+ 136,608331.0,144.0,ATL
139
+ 137,670871.0,138.0,STL
140
+ 138,600301.0,138.0,STL
141
+ 139,605513.0,116.0,DET
142
+ 140,571740.0,145.0,CWS
143
+ 141,669169.0,118.0,KC
144
+ 142,624414.0,111.0,BOS
145
+ 143,687093.0,144.0,ATL
146
+ 144,644433.0,144.0,ATL
147
+ 145,621237.0,143.0,PHI
148
+ 146,642231.0,121.0,NYM
149
+ 147,664076.0,139.0,TB
150
+ 148,695243.0,133.0,OAK
151
+ 149,642232.0,118.0,KC
152
+ 150,676369.0,112.0,CHC
153
+ 151,660761.0,108.0,LAA
154
+ 152,645302.0,120.0,WSH
155
+ 153,676625.0,117.0,HOU
156
+ 154,665665.0,113.0,CIN
157
+ 155,570666.0,113.0,CIN
158
+ 156,608328.0,134.0,PIT
159
+ 157,620443.0,110.0,BAL
160
+ 158,668941.0,138.0,STL
161
+ 159,656986.0,158.0,MIL
162
+ 160,491624.0,108.0,LAA
163
+ 161,573009.0,109.0,AZ
164
+ 162,670276.0,137.0,SF
165
+ 163,665804.0,112.0,CHC
166
+ 164,669304.0,142.0,MIN
167
+ 165,517008.0,145.0,CWS
168
+ 166,683232.0,115.0,COL
169
+ 167,622608.0,115.0,COL
170
+ 168,670329.0,133.0,OAK
171
+ 169,683737.0,119.0,LAD
172
+ 170,453178.0,140.0,TEX
173
+ 171,592346.0,146.0,MIA
174
+ 172,571875.0,108.0,LAA
175
+ 173,680723.0,110.0,BAL
176
+ 174,672820.0,145.0,CWS
177
+ 175,656876.0,139.0,TB
178
+ 176,686972.0,137.0,SF
179
+ 177,640462.0,146.0,MIA
180
+ 178,664192.0,121.0,NYM
181
+ 179,666915.0,111.0,BOS
182
+ 180,656814.0,143.0,PHI
183
+ 181,592626.0,137.0,SF
184
+ 182,607359.0,133.0,OAK
185
+ 183,642770.0,139.0,TB
186
+ 184,668984.0,113.0,CIN
187
+ 185,666157.0,113.0,CIN
188
+ 186,665862.0,146.0,MIA
189
+ 187,502202.0,112.0,CHC
190
+ 188,642701.0,121.0,NYM
191
+ 189,675656.0,133.0,OAK
192
+ 190,543685.0,108.0,LAA
193
+ 191,572193.0,108.0,LAA
194
+ 192,663989.0,110.0,BAL
195
+ 193,656024.0,145.0,CWS
196
+ 194,663372.0,115.0,COL
197
+ 195,608360.0,108.0,LAA
198
+ 196,669065.0,110.0,BAL
199
+ 197,676726.0,139.0,TB
200
+ 198,660896.0,142.0,MIN
201
+ 199,656820.0,145.0,CWS
202
+ 200,572228.0,158.0,MIL
203
+ 201,543068.0,115.0,COL
204
+ 202,666720.0,140.0,TEX
205
+ 203,594943.0,133.0,OAK
206
+ 204,666185.0,138.0,STL
207
+ 205,518489.0,111.0,BOS
208
+ 206,656849.0,121.0,NYM
209
+ 207,543351.0,141.0,TOR
210
+ 208,670167.0,111.0,BOS
211
+ 209,681402.0,158.0,MIL
212
+ 210,664849.0,144.0,ATL
213
+ 211,641745.0,118.0,KC
214
+ 212,663559.0,143.0,PHI
215
+ 213,641656.0,147.0,NYY
216
+ 214,630023.0,139.0,TB
217
+ 215,641645.0,121.0,NYM
218
+ 216,656266.0,158.0,MIL
219
+ 217,489119.0,158.0,MIL
220
+ 218,664942.0,138.0,STL
221
+ 219,669276.0,144.0,ATL
222
+ 220,669087.0,140.0,TEX
223
+ 221,571882.0,113.0,CIN
224
+ 222,677950.0,109.0,AZ
225
+ 223,667427.0,133.0,OAK
226
+ 224,607625.0,135.0,SD
227
+ 225,609280.0,134.0,PIT
228
+ 226,666207.0,115.0,COL
229
+ 227,624503.0,142.0,MIN
230
+ 228,669160.0,119.0,LAD
231
+ 229,663698.0,137.0,SF
232
+ 230,548389.0,137.0,SF
233
+ 231,669699.0,144.0,ATL
234
+ 232,624522.0,112.0,CHC
235
+ 233,641355.0,112.0,CHC
236
+ 234,543333.0,112.0,CHC
237
+ 235,682073.0,117.0,HOU
238
+ 236,685410.0,114.0,CLE
239
+ 237,677020.0,121.0,NYM
240
+ 238,605421.0,121.0,NYM
241
+ 239,666906.0,120.0,WSH
242
+ 240,628711.0,119.0,LAD
243
+ 241,664948.0,109.0,AZ
244
+ 242,592656.0,113.0,CIN
245
+ 243,665048.0,120.0,WSH
246
+ 244,657272.0,143.0,PHI
247
+ 245,621433.0,108.0,LAA
248
+ 246,641553.0,135.0,SD
249
+ 247,608344.0,110.0,BAL
250
+ 248,669289.0,141.0,TOR
251
+ 249,472551.0,115.0,COL
252
+ 250,595897.0,112.0,CHC
253
+ 251,666745.0,147.0,NYY
254
+ 252,641778.0,158.0,MIL
255
+ 253,657044.0,139.0,TB
256
+ 254,664202.0,119.0,LAD
257
+ 255,592848.0,108.0,LAA
258
+ 256,623474.0,108.0,LAA
259
+ 257,681806.0,108.0,LAA
260
+ 258,542947.0,111.0,BOS
261
+ 259,682120.0,114.0,CLE
262
+ 260,672478.0,133.0,OAK
263
+ 261,657424.0,117.0,HOU
264
+ 262,641531.0,118.0,KC
265
+ 263,593833.0,119.0,LAD
266
+ 264,663616.0,142.0,MIN
267
+ 265,641672.0,141.0,TOR
268
+ 266,571479.0,143.0,PHI
269
+ 267,666721.0,118.0,KC
270
+ 268,680814.0,146.0,MIA
271
+ 269,666205.0,133.0,OAK
272
+ 270,677649.0,140.0,TEX
273
+ 271,611093.0,113.0,CIN
274
+ 272,641420.0,139.0,TB
275
+ 273,641793.0,139.0,TB
276
+ 274,543859.0,144.0,ATL
277
+ 275,666150.0,109.0,AZ
278
+ 276,571976.0,113.0,CIN
279
+ 277,643376.0,141.0,TOR
280
+ 278,605463.0,119.0,LAD
281
+ 279,681987.0,118.0,KC
282
+ 280,663611.0,112.0,CHC
283
+ 281,606625.0,108.0,LAA
284
+ 282,641427.0,113.0,CIN
285
+ 283,669911.0,115.0,COL
286
+ 284,687401.0,110.0,BAL
287
+ 285,598286.0,147.0,NYY
288
+ 286,668338.0,158.0,MIL
289
+ 287,681867.0,139.0,TB
290
+ 288,680570.0,110.0,BAL
291
+ 289,472610.0,135.0,SD
292
+ 320,,,
293
+ 321,689266.0,144.0,ATL
294
+ 322,642731.0,137.0,SF
295
+ 323,663629.0,158.0,MIL
296
+ 324,642715.0,158.0,MIL
297
+ 325,519043.0,108.0,LAA
298
+ 326,657514.0,111.0,BOS
299
+ 327,694297.0,109.0,AZ
300
+ 328,666818.0,109.0,AZ
301
+ 329,661309.0,133.0,OAK
302
+ 330,621249.0,134.0,PIT
303
+ 331,656514.0,145.0,CWS
304
+ 332,657031.0,118.0,KC
305
+ 333,592826.0,134.0,PIT
306
+ 334,664126.0,139.0,TB
307
+ 335,669618.0,140.0,TEX
308
+ 336,674003.0,140.0,TEX
309
+ 337,664954.0,135.0,SD
310
+ 338,669424.0,145.0,CWS
311
+ 339,593958.0,116.0,DET
312
+ 340,663837.0,116.0,DET
313
+ 341,664247.0,142.0,MIN
314
+ 342,670242.0,142.0,MIN
315
+ 343,663941.0,137.0,SF
316
+ 344,608385.0,158.0,MIL
317
+ 345,670183.0,133.0,OAK
318
+ 346,542583.0,133.0,OAK
319
+ 347,669364.0,146.0,MIA
320
+ 348,605446.0,144.0,ATL
321
+ 349,656775.0,110.0,BAL
322
+ 350,621074.0,112.0,CHC
323
+ 351,666154.0,115.0,COL
324
+ 352,681584.0,137.0,SF
325
+ 353,476595.0,144.0,ATL
326
+ 354,694813.0,119.0,LAD
327
+ 355,666163.0,147.0,NYY
328
+ 356,664056.0,147.0,NYY
329
+ 357,672730.0,136.0,SEA
330
+ 358,682985.0,116.0,DET
331
+ 359,607237.0,118.0,KC
332
+ 360,663457.0,138.0,STL
333
+ 361,663971.0,115.0,COL
334
+ 362,670766.0,136.0,SEA
335
+ 363,669352.0,140.0,TEX
336
+ 364,668754.0,116.0,DET
337
+ 365,593643.0,145.0,CWS
338
+ 366,669947.0,145.0,CWS
339
+ 367,571710.0,110.0,BAL
340
+ 368,596112.0,134.0,PIT
341
+ 369,664761.0,143.0,PHI
342
+ 370,666397.0,142.0,MIN
343
+ 371,656786.0,117.0,HOU
344
+ 372,592178.0,115.0,COL
345
+ 373,640454.0,147.0,NYY
346
+ 374,665828.0,147.0,NYY
347
+ 375,614173.0,147.0,NYY
348
+ 376,666211.0,136.0,SEA
349
+ 377,640492.0,135.0,SD
350
+ 378,443558.0,135.0,SD
351
+ 379,598264.0,146.0,MIA
352
+ 380,519242.0,111.0,BOS
353
+ 381,605137.0,114.0,CLE
354
+ 382,615698.0,114.0,CLE
355
+ 383,571948.0,158.0,MIL
356
+ 384,621438.0,158.0,MIL
357
+ 385,605170.0,158.0,MIL
358
+ 386,686894.0,158.0,MIL
359
+ 387,592885.0,158.0,MIL
360
+ 388,642133.0,158.0,MIL
361
+ 389,573131.0,158.0,MIL
362
+ 390,606303.0,158.0,MIL
363
+ 391,642207.0,158.0,MIL
364
+ 392,527054.0,158.0,MIL
365
+ 393,605119.0,158.0,MIL
366
+ 394,655316.0,158.0,MIL
367
+ 395,669203.0,158.0,MIL
368
+ 396,670712.0,158.0,MIL
369
+ 397,642547.0,158.0,MIL
370
+ 398,647351.0,158.0,MIL
371
+ 399,664776.0,158.0,MIL
372
+ 400,680911.0,158.0,MIL
373
+ 401,665625.0,158.0,MIL
374
+ 402,661388.0,158.0,MIL
375
+ 403,607067.0,158.0,MIL
376
+ 404,668930.0,158.0,MIL
377
+ 405,605288.0,158.0,MIL
378
+ 406,657265.0,158.0,MIL
379
+ 407,669060.0,158.0,MIL
380
+ 408,656730.0,158.0,MIL
381
+ 409,668881.0,113.0,CIN
382
+ 410,643361.0,113.0,CIN
383
+ 411,663697.0,113.0,CIN
384
+ 412,594902.0,113.0,CIN
385
+ 413,682227.0,113.0,CIN
386
+ 414,641584.0,113.0,CIN
387
+ 415,622065.0,113.0,CIN
388
+ 416,596133.0,113.0,CIN
389
+ 417,680574.0,113.0,CIN
390
+ 418,666181.0,113.0,CIN
391
+ 419,670770.0,113.0,CIN
392
+ 420,669222.0,113.0,CIN
393
+ 421,621028.0,113.0,CIN
394
+ 422,668715.0,113.0,CIN
395
+ 423,668933.0,113.0,CIN
396
+ 424,518585.0,113.0,CIN
397
+ 425,664139.0,113.0,CIN
398
+ 426,571912.0,113.0,CIN
399
+ 427,663886.0,113.0,CIN
400
+ 428,608371.0,113.0,CIN
401
+ 429,571656.0,113.0,CIN
402
+ 430,676480.0,113.0,CIN
403
+ 431,664747.0,113.0,CIN
404
+ 432,674285.0,113.0,CIN
405
+ 433,592200.0,113.0,CIN
406
+ 434,656413.0,113.0,CIN
407
+ 435,542208.0,133.0,OAK
408
+ 436,621112.0,133.0,OAK
409
+ 437,669674.0,133.0,OAK
410
+ 438,669397.0,133.0,OAK
411
+ 439,667670.0,133.0,OAK
412
+ 440,660261.0,133.0,OAK
413
+ 441,607054.0,133.0,OAK
414
+ 442,686610.0,133.0,OAK
415
+ 443,663992.0,133.0,OAK
416
+ 444,621076.0,133.0,OAK
417
+ 445,681146.0,133.0,OAK
418
+ 446,665923.0,133.0,OAK
419
+ 447,664913.0,133.0,OAK
420
+ 448,657656.0,133.0,OAK
421
+ 449,676116.0,133.0,OAK
422
+ 450,668674.0,133.0,OAK
423
+ 451,543507.0,133.0,OAK
424
+ 452,643493.0,133.0,OAK
425
+ 453,643393.0,133.0,OAK
426
+ 454,663687.0,133.0,OAK
427
+ 455,665622.0,133.0,OAK
428
+ 456,649557.0,133.0,OAK
429
+ 457,669127.0,133.0,OAK
430
+ 458,594580.0,133.0,OAK
431
+ 459,668709.0,133.0,OAK
432
+ 460,676664.0,133.0,OAK
433
+ 461,643265.0,146.0,MIA
434
+ 462,516416.0,146.0,MIA
435
+ 463,666200.0,146.0,MIA
436
+ 464,650559.0,146.0,MIA
437
+ 465,666129.0,146.0,MIA
438
+ 466,645261.0,146.0,MIA
439
+ 467,624585.0,146.0,MIA
440
+ 468,665795.0,146.0,MIA
441
+ 469,623211.0,146.0,MIA
442
+ 470,663773.0,146.0,MIA
443
+ 471,493329.0,146.0,MIA
444
+ 472,595345.0,146.0,MIA
445
+ 473,607732.0,146.0,MIA
446
+ 474,641658.0,146.0,MIA
447
+ 475,571670.0,146.0,MIA
448
+ 476,656945.0,146.0,MIA
449
+ 477,542932.0,146.0,MIA
450
+ 478,666277.0,146.0,MIA
451
+ 479,621563.0,146.0,MIA
452
+ 480,663743.0,146.0,MIA
453
+ 481,660821.0,146.0,MIA
454
+ 482,641505.0,146.0,MIA
455
+ 483,677053.0,146.0,MIA
456
+ 484,650333.0,146.0,MIA
457
+ 485,608638.0,146.0,MIA
458
+ 486,691587.0,146.0,MIA
459
+ 487,668663.0,138.0,STL
460
+ 488,669357.0,138.0,STL
461
+ 489,691023.0,138.0,STL
462
+ 490,575929.0,138.0,STL
463
+ 491,571927.0,138.0,STL
464
+ 492,571448.0,138.0,STL
465
+ 493,571945.0,138.0,STL
466
+ 494,668800.0,138.0,STL
467
+ 495,606149.0,138.0,STL
468
+ 496,656427.0,138.0,STL
469
+ 497,676475.0,138.0,STL
470
+ 498,657557.0,138.0,STL
471
+ 499,502671.0,138.0,STL
472
+ 500,669467.0,138.0,STL
473
+ 501,669242.0,138.0,STL
474
+ 502,425794.0,138.0,STL
475
+ 503,669461.0,138.0,STL
476
+ 504,680977.0,138.0,STL
477
+ 505,664854.0,138.0,STL
478
+ 506,572403.0,138.0,STL
479
+ 507,660766.0,138.0,STL
480
+ 508,663855.0,138.0,STL
481
+ 509,640458.0,138.0,STL
482
+ 510,650893.0,138.0,STL
483
+ 511,656756.0,138.0,STL
484
+ 512,608717.0,138.0,STL
485
+ 513,669796.0,134.0,PIT
486
+ 514,642239.0,134.0,PIT
487
+ 515,682847.0,134.0,PIT
488
+ 516,668804.0,134.0,PIT
489
+ 517,664029.0,134.0,PIT
490
+ 518,666801.0,134.0,PIT
491
+ 519,595978.0,134.0,PIT
492
+ 520,656582.0,134.0,PIT
493
+ 521,663647.0,134.0,PIT
494
+ 522,656605.0,134.0,PIT
495
+ 523,670990.0,134.0,PIT
496
+ 524,457705.0,134.0,PIT
497
+ 525,670059.0,134.0,PIT
498
+ 526,664294.0,134.0,PIT
499
+ 527,672710.0,134.0,PIT
500
+ 528,675989.0,134.0,PIT
501
+ 529,672779.0,134.0,PIT
502
+ 530,448179.0,134.0,PIT
503
+ 531,670912.0,134.0,PIT
504
+ 532,641511.0,134.0,PIT
505
+ 533,572008.0,134.0,PIT
506
+ 534,670280.0,134.0,PIT
507
+ 535,641943.0,134.0,PIT
508
+ 536,669261.0,134.0,PIT
509
+ 537,467793.0,134.0,PIT
510
+ 538,678225.0,134.0,PIT
511
+ 539,628708.0,143.0,PHI
512
+ 540,669016.0,143.0,PHI
513
+ 541,547180.0,143.0,PHI
514
+ 542,592663.0,143.0,PHI
515
+ 543,554430.0,143.0,PHI
516
+ 544,641401.0,143.0,PHI
517
+ 545,624641.0,143.0,PHI
518
+ 546,665019.0,143.0,PHI
519
+ 547,592206.0,143.0,PHI
520
+ 548,592229.0,143.0,PHI
521
+ 549,642397.0,143.0,PHI
522
+ 550,543281.0,143.0,PHI
523
+ 551,607755.0,143.0,PHI
524
+ 552,681082.0,143.0,PHI
525
+ 553,656403.0,143.0,PHI
526
+ 554,656546.0,143.0,PHI
527
+ 555,656941.0,143.0,PHI
528
+ 556,592836.0,143.0,PHI
529
+ 557,622554.0,143.0,PHI
530
+ 558,621381.0,143.0,PHI
531
+ 559,624133.0,143.0,PHI
532
+ 560,596117.0,143.0,PHI
533
+ 561,518886.0,143.0,PHI
534
+ 562,656495.0,143.0,PHI
535
+ 563,605400.0,143.0,PHI
536
+ 564,607208.0,143.0,PHI
537
+ 565,682928.0,120.0,WSH
538
+ 566,572816.0,120.0,WSH
539
+ 567,656180.0,120.0,WSH
540
+ 568,592866.0,120.0,WSH
541
+ 569,666168.0,120.0,WSH
542
+ 570,680686.0,120.0,WSH
543
+ 571,640451.0,120.0,WSH
544
+ 572,608841.0,120.0,WSH
545
+ 573,545121.0,120.0,WSH
546
+ 574,640448.0,120.0,WSH
547
+ 575,656308.0,120.0,WSH
548
+ 576,605218.0,120.0,WSH
549
+ 577,541640.0,120.0,WSH
550
+ 578,656448.0,120.0,WSH
551
+ 579,600869.0,120.0,WSH
552
+ 580,642086.0,120.0,WSH
553
+ 581,600921.0,120.0,WSH
554
+ 582,669022.0,120.0,WSH
555
+ 583,663623.0,120.0,WSH
556
+ 584,669743.0,120.0,WSH
557
+ 585,571578.0,120.0,WSH
558
+ 586,641771.0,120.0,WSH
559
+ 587,660688.0,120.0,WSH
560
+ 588,663658.0,120.0,WSH
561
+ 589,657041.0,120.0,WSH
562
+ 590,671277.0,120.0,WSH
563
+ 591,666182.0,141.0,TOR
564
+ 592,666201.0,141.0,TOR
565
+ 593,676391.0,141.0,TOR
566
+ 594,605135.0,141.0,TOR
567
+ 595,662139.0,141.0,TOR
568
+ 596,641835.0,141.0,TOR
569
+ 597,592332.0,141.0,TOR
570
+ 598,656305.0,141.0,TOR
571
+ 599,593160.0,141.0,TOR
572
+ 600,595281.0,141.0,TOR
573
+ 601,670950.0,141.0,TOR
574
+ 602,621244.0,141.0,TOR
575
+ 603,664770.0,141.0,TOR
576
+ 604,543807.0,141.0,TOR
577
+ 605,542914.0,141.0,TOR
578
+ 606,624415.0,141.0,TOR
579
+ 607,554340.0,141.0,TOR
580
+ 608,623168.0,141.0,TOR
581
+ 609,579328.0,141.0,TOR
582
+ 610,643256.0,141.0,TOR
583
+ 611,665489.0,141.0,TOR
584
+ 612,657024.0,141.0,TOR
585
+ 613,663878.0,141.0,TOR
586
+ 614,605447.0,141.0,TOR
587
+ 615,474832.0,141.0,TOR
588
+ 616,672386.0,141.0,TOR
589
+ 617,621512.0,121.0,NYM
590
+ 618,682626.0,121.0,NYM
591
+ 619,643446.0,121.0,NYM
592
+ 620,668901.0,121.0,NYM
593
+ 621,596129.0,121.0,NYM
594
+ 622,683146.0,121.0,NYM
595
+ 623,668665.0,121.0,NYM
596
+ 624,471911.0,121.0,NYM
597
+ 625,500871.0,121.0,NYM
598
+ 626,493603.0,121.0,NYM
599
+ 627,488984.0,121.0,NYM
600
+ 628,673540.0,121.0,NYM
601
+ 629,502054.0,121.0,NYM
602
+ 630,592192.0,121.0,NYM
603
+ 631,624413.0,121.0,NYM
604
+ 632,453286.0,121.0,NYM
605
+ 633,516782.0,121.0,NYM
606
+ 634,596019.0,121.0,NYM
607
+ 635,607043.0,121.0,NYM
608
+ 636,622098.0,121.0,NYM
609
+ 637,548384.0,121.0,NYM
610
+ 638,608678.0,121.0,NYM
611
+ 639,434378.0,121.0,NYM
612
+ 640,502085.0,121.0,NYM
613
+ 641,656731.0,121.0,NYM
614
+ 642,656257.0,121.0,NYM
615
+ 643,645801.0,136.0,SEA
616
+ 644,543939.0,136.0,SEA
617
+ 645,676609.0,136.0,SEA
618
+ 646,623437.0,136.0,SEA
619
+ 647,641487.0,136.0,SEA
620
+ 648,663728.0,136.0,SEA
621
+ 649,572041.0,136.0,SEA
622
+ 650,670036.0,136.0,SEA
623
+ 651,666374.0,136.0,SEA
624
+ 652,669302.0,136.0,SEA
625
+ 653,623149.0,136.0,SEA
626
+ 654,606192.0,136.0,SEA
627
+ 655,622491.0,136.0,SEA
628
+ 656,669923.0,136.0,SEA
629
+ 657,553993.0,136.0,SEA
630
+ 658,664034.0,136.0,SEA
631
+ 659,642048.0,136.0,SEA
632
+ 660,623167.0,136.0,SEA
633
+ 661,608596.0,136.0,SEA
634
+ 662,594835.0,136.0,SEA
635
+ 663,664059.0,136.0,SEA
636
+ 664,642100.0,136.0,SEA
637
+ 665,677594.0,136.0,SEA
638
+ 666,682243.0,136.0,SEA
639
+ 667,641627.0,136.0,SEA
640
+ 668,672284.0,136.0,SEA
641
+ 669,641680.0,140.0,TEX
642
+ 670,666142.0,140.0,TEX
643
+ 671,665750.0,140.0,TEX
644
+ 672,641540.0,140.0,TEX
645
+ 673,663993.0,140.0,TEX
646
+ 674,681982.0,140.0,TEX
647
+ 675,608369.0,140.0,TEX
648
+ 676,592351.0,140.0,TEX
649
+ 677,543543.0,140.0,TEX
650
+ 678,543760.0,140.0,TEX
651
+ 679,673962.0,140.0,TEX
652
+ 680,667463.0,140.0,TEX
653
+ 681,642546.0,140.0,TEX
654
+ 682,622250.0,140.0,TEX
655
+ 683,641598.0,140.0,TEX
656
+ 684,608671.0,140.0,TEX
657
+ 685,669701.0,140.0,TEX
658
+ 686,571760.0,140.0,TEX
659
+ 687,519293.0,140.0,TEX
660
+ 688,666969.0,140.0,TEX
661
+ 689,506702.0,140.0,TEX
662
+ 690,656271.0,140.0,TEX
663
+ 691,543257.0,140.0,TEX
664
+ 692,543135.0,140.0,TEX
665
+ 693,600917.0,140.0,TEX
666
+ 694,527048.0,140.0,TEX
667
+ 695,650859.0,108.0,LAA
668
+ 696,666160.0,108.0,LAA
669
+ 697,687263.0,108.0,LAA
670
+ 698,670869.0,108.0,LAA
671
+ 699,571901.0,108.0,LAA
672
+ 700,663776.0,108.0,LAA
673
+ 701,681217.0,108.0,LAA
674
+ 702,642136.0,108.0,LAA
675
+ 703,621493.0,108.0,LAA
676
+ 704,592669.0,108.0,LAA
677
+ 705,690829.0,108.0,LAA
678
+ 706,656288.0,108.0,LAA
679
+ 707,592273.0,108.0,LAA
680
+ 708,606965.0,108.0,LAA
681
+ 709,657097.0,108.0,LAA
682
+ 710,545361.0,108.0,LAA
683
+ 711,570482.0,108.0,LAA
684
+ 712,665120.0,108.0,LAA
685
+ 713,696147.0,108.0,LAA
686
+ 714,660271.0,108.0,LAA
687
+ 715,642545.0,108.0,LAA
688
+ 716,608032.0,108.0,LAA
689
+ 717,656353.0,108.0,LAA
690
+ 718,595453.0,108.0,LAA
691
+ 719,672282.0,108.0,LAA
692
+ 720,542881.0,108.0,LAA
693
+ 721,667452.0,117.0,HOU
694
+ 722,664285.0,117.0,HOU
695
+ 723,455117.0,117.0,HOU
696
+ 724,650556.0,117.0,HOU
697
+ 725,593576.0,117.0,HOU
698
+ 726,606160.0,117.0,HOU
699
+ 727,663656.0,117.0,HOU
700
+ 728,641585.0,117.0,HOU
701
+ 729,686613.0,117.0,HOU
702
+ 730,643289.0,117.0,HOU
703
+ 731,669854.0,117.0,HOU
704
+ 732,608324.0,117.0,HOU
705
+ 733,676694.0,117.0,HOU
706
+ 734,663967.0,117.0,HOU
707
+ 735,661527.0,117.0,HOU
708
+ 736,547989.0,117.0,HOU
709
+ 737,514888.0,117.0,HOU
710
+ 738,665161.0,117.0,HOU
711
+ 739,592773.0,117.0,HOU
712
+ 740,664299.0,117.0,HOU
713
+ 741,519151.0,117.0,HOU
714
+ 742,656232.0,117.0,HOU
715
+ 743,664208.0,117.0,HOU
716
+ 744,676801.0,117.0,HOU
717
+ 745,673237.0,117.0,HOU
718
+ 746,670541.0,117.0,HOU
719
+ 747,572955.0,115.0,COL
720
+ 748,595777.0,115.0,COL
721
+ 749,642851.0,115.0,COL
722
+ 750,545341.0,115.0,COL
723
+ 751,641857.0,115.0,COL
724
+ 752,605612.0,115.0,COL
725
+ 753,607536.0,115.0,COL
726
+ 754,659275.0,115.0,COL
727
+ 755,453568.0,115.0,COL
728
+ 756,657756.0,115.0,COL
729
+ 757,596295.0,115.0,COL
730
+ 758,453268.0,115.0,COL
731
+ 759,666134.0,115.0,COL
732
+ 760,664875.0,115.0,COL
733
+ 761,663567.0,115.0,COL
734
+ 762,519058.0,115.0,COL
735
+ 763,571539.0,115.0,COL
736
+ 764,686668.0,115.0,COL
737
+ 765,656234.0,115.0,COL
738
+ 766,553869.0,115.0,COL
739
+ 767,678662.0,115.0,COL
740
+ 768,502624.0,115.0,COL
741
+ 769,543272.0,115.0,COL
742
+ 770,608718.0,115.0,COL
743
+ 771,660707.0,115.0,COL
744
+ 772,676701.0,115.0,COL
745
+ 773,621016.0,118.0,KC
746
+ 774,666023.0,118.0,KC
747
+ 775,605130.0,118.0,KC
748
+ 776,621295.0,118.0,KC
749
+ 777,425844.0,118.0,KC
750
+ 778,663804.0,118.0,KC
751
+ 779,521692.0,118.0,KC
752
+ 780,663903.0,118.0,KC
753
+ 781,658668.0,118.0,KC
754
+ 782,670032.0,118.0,KC
755
+ 783,671221.0,118.0,KC
756
+ 784,669004.0,118.0,KC
757
+ 785,672578.0,118.0,KC
758
+ 786,668472.0,118.0,KC
759
+ 787,686681.0,118.0,KC
760
+ 788,622251.0,118.0,KC
761
+ 789,594577.0,118.0,KC
762
+ 790,664199.0,118.0,KC
763
+ 791,622110.0,118.0,KC
764
+ 792,686469.0,118.0,KC
765
+ 793,663738.0,118.0,KC
766
+ 794,598265.0,118.0,KC
767
+ 795,672580.0,118.0,KC
768
+ 796,543475.0,118.0,KC
769
+ 797,547973.0,118.0,KC
770
+ 798,677951.0,118.0,KC
771
+ 799,647304.0,114.0,CLE
772
+ 800,669456.0,114.0,CLE
773
+ 801,669212.0,114.0,CLE
774
+ 802,675916.0,114.0,CLE
775
+ 803,680704.0,114.0,CLE
776
+ 804,595956.0,114.0,CLE
777
+ 805,572287.0,114.0,CLE
778
+ 806,686823.0,114.0,CLE
779
+ 807,642708.0,114.0,CLE
780
+ 808,661403.0,114.0,CLE
781
+ 809,660853.0,114.0,CLE
782
+ 810,665926.0,114.0,CLE
783
+ 811,675540.0,114.0,CLE
784
+ 812,677587.0,114.0,CLE
785
+ 813,672356.0,114.0,CLE
786
+ 814,671289.0,114.0,CLE
787
+ 815,671106.0,114.0,CLE
788
+ 816,650644.0,114.0,CLE
789
+ 817,681807.0,114.0,CLE
790
+ 818,656529.0,114.0,CLE
791
+ 819,608070.0,114.0,CLE
792
+ 820,680757.0,114.0,CLE
793
+ 821,663986.0,114.0,CLE
794
+ 822,683769.0,114.0,CLE
795
+ 823,664702.0,114.0,CLE
796
+ 824,676440.0,114.0,CLE
797
+ 825,641941.0,142.0,MIN
798
+ 826,661395.0,142.0,MIN
799
+ 827,456781.0,142.0,MIN
800
+ 828,686973.0,142.0,MIN
801
+ 829,592254.0,142.0,MIN
802
+ 830,650489.0,142.0,MIN
803
+ 831,543243.0,142.0,MIN
804
+ 832,571657.0,142.0,MIN
805
+ 833,680777.0,142.0,MIN
806
+ 834,666135.0,142.0,MIN
807
+ 835,663485.0,142.0,MIN
808
+ 836,643377.0,142.0,MIN
809
+ 837,621043.0,142.0,MIN
810
+ 838,641154.0,142.0,MIN
811
+ 839,592779.0,142.0,MIN
812
+ 840,641927.0,142.0,MIN
813
+ 841,608336.0,142.0,MIN
814
+ 842,663558.0,142.0,MIN
815
+ 843,596146.0,142.0,MIN
816
+ 844,668904.0,142.0,MIN
817
+ 845,605347.0,142.0,MIN
818
+ 846,593871.0,142.0,MIN
819
+ 847,572191.0,142.0,MIN
820
+ 848,621439.0,142.0,MIN
821
+ 849,657746.0,142.0,MIN
822
+ 850,543877.0,142.0,MIN
823
+ 851,665155.0,116.0,DET
824
+ 852,656716.0,116.0,DET
825
+ 853,592741.0,116.0,DET
826
+ 854,681857.0,116.0,DET
827
+ 855,641302.0,116.0,DET
828
+ 856,669438.0,116.0,DET
829
+ 857,595879.0,116.0,DET
830
+ 858,570731.0,116.0,DET
831
+ 859,663947.0,116.0,DET
832
+ 860,663527.0,116.0,DET
833
+ 861,670097.0,116.0,DET
834
+ 862,679529.0,116.0,DET
835
+ 863,671345.0,116.0,DET
836
+ 864,668670.0,116.0,DET
837
+ 865,408234.0,116.0,DET
838
+ 866,571510.0,116.0,DET
839
+ 867,668731.0,116.0,DET
840
+ 868,666214.0,116.0,DET
841
+ 869,606992.0,116.0,DET
842
+ 870,628451.0,116.0,DET
843
+ 871,547179.0,116.0,DET
844
+ 872,545350.0,116.0,DET
845
+ 873,542585.0,116.0,DET
846
+ 874,656638.0,116.0,DET
847
+ 875,676684.0,116.0,DET
848
+ 876,656412.0,116.0,DET
849
+ 877,518735.0,145.0,CWS
850
+ 878,669394.0,145.0,CWS
851
+ 879,663853.0,145.0,CWS
852
+ 880,660162.0,145.0,CWS
853
+ 881,458681.0,145.0,CWS
854
+ 882,521230.0,145.0,CWS
855
+ 883,683734.0,145.0,CWS
856
+ 884,608665.0,145.0,CWS
857
+ 885,640449.0,145.0,CWS
858
+ 886,666619.0,145.0,CWS
859
+ 887,657757.0,145.0,CWS
860
+ 888,656302.0,145.0,CWS
861
+ 889,676979.0,145.0,CWS
862
+ 890,656629.0,145.0,CWS
863
+ 891,664874.0,145.0,CWS
864
+ 892,643217.0,145.0,CWS
865
+ 893,641313.0,145.0,CWS
866
+ 894,607481.0,145.0,CWS
867
+ 895,605182.0,145.0,CWS
868
+ 896,625643.0,145.0,CWS
869
+ 897,641871.0,145.0,CWS
870
+ 898,650391.0,145.0,CWS
871
+ 899,462101.0,145.0,CWS
872
+ 900,608337.0,145.0,CWS
873
+ 901,523260.0,145.0,CWS
874
+ 902,673357.0,145.0,CWS
875
+ 903,640470.0,112.0,CHC
876
+ 904,621458.0,112.0,CHC
877
+ 905,666624.0,112.0,CHC
878
+ 906,641820.0,112.0,CHC
879
+ 907,571466.0,112.0,CHC
880
+ 908,664023.0,112.0,CHC
881
+ 909,592767.0,112.0,CHC
882
+ 910,621550.0,112.0,CHC
883
+ 911,665871.0,112.0,CHC
884
+ 912,643565.0,112.0,CHC
885
+ 913,669713.0,112.0,CHC
886
+ 914,592791.0,112.0,CHC
887
+ 915,669093.0,112.0,CHC
888
+ 916,543228.0,112.0,CHC
889
+ 917,670156.0,112.0,CHC
890
+ 918,673548.0,112.0,CHC
891
+ 919,676714.0,112.0,CHC
892
+ 920,643410.0,112.0,CHC
893
+ 921,621020.0,112.0,CHC
894
+ 922,605242.0,112.0,CHC
895
+ 923,573186.0,112.0,CHC
896
+ 924,663538.0,112.0,CHC
897
+ 925,657240.0,112.0,CHC
898
+ 926,543294.0,112.0,CHC
899
+ 927,657006.0,112.0,CHC
900
+ 928,670223.0,112.0,CHC
901
+ 929,593619.0,135.0,SD
902
+ 930,621051.0,135.0,SD
903
+ 931,623352.0,135.0,SD
904
+ 932,572761.0,135.0,SD
905
+ 933,605397.0,135.0,SD
906
+ 934,607259.0,135.0,SD
907
+ 935,663845.0,135.0,SD
908
+ 936,596059.0,135.0,SD
909
+ 937,506433.0,135.0,SD
910
+ 938,677960.0,135.0,SD
911
+ 939,657612.0,135.0,SD
912
+ 940,592518.0,135.0,SD
913
+ 941,656290.0,135.0,SD
914
+ 942,665487.0,135.0,SD
915
+ 943,665742.0,135.0,SD
916
+ 944,593428.0,135.0,SD
917
+ 945,605483.0,135.0,SD
918
+ 946,596142.0,135.0,SD
919
+ 947,608379.0,135.0,SD
920
+ 948,663757.0,135.0,SD
921
+ 949,641703.0,135.0,SD
922
+ 950,630105.0,135.0,SD
923
+ 951,673490.0,135.0,SD
924
+ 952,543592.0,135.0,SD
925
+ 953,676680.0,135.0,SD
926
+ 954,641525.0,135.0,SD
927
+ 955,623433.0,144.0,ATL
928
+ 956,675911.0,144.0,ATL
929
+ 957,700363.0,144.0,ATL
930
+ 958,671739.0,144.0,ATL
931
+ 959,518595.0,144.0,ATL
932
+ 960,445926.0,144.0,ATL
933
+ 961,656541.0,144.0,ATL
934
+ 962,543521.0,144.0,ATL
935
+ 963,621345.0,144.0,ATL
936
+ 964,621566.0,144.0,ATL
937
+ 965,647336.0,144.0,ATL
938
+ 966,694363.0,144.0,ATL
939
+ 967,669221.0,144.0,ATL
940
+ 968,660670.0,144.0,ATL
941
+ 969,518586.0,144.0,ATL
942
+ 970,592696.0,144.0,ATL
943
+ 971,607680.0,144.0,ATL
944
+ 972,645277.0,144.0,ATL
945
+ 973,628452.0,144.0,ATL
946
+ 974,663586.0,144.0,ATL
947
+ 975,641729.0,144.0,ATL
948
+ 976,606115.0,144.0,ATL
949
+ 977,489446.0,144.0,ATL
950
+ 978,450203.0,144.0,ATL
951
+ 979,693821.0,144.0,ATL
952
+ 980,542303.0,144.0,ATL
953
+ 981,645444.0,109.0,AZ
954
+ 982,543518.0,109.0,AZ
955
+ 983,669459.0,109.0,AZ
956
+ 984,668942.0,109.0,AZ
957
+ 985,686753.0,109.0,AZ
958
+ 986,518876.0,109.0,AZ
959
+ 987,664983.0,109.0,AZ
960
+ 988,605177.0,109.0,AZ
961
+ 989,656464.0,109.0,AZ
962
+ 990,674072.0,109.0,AZ
963
+ 991,605113.0,109.0,AZ
964
+ 992,606466.0,109.0,AZ
965
+ 993,613534.0,109.0,AZ
966
+ 994,669194.0,109.0,AZ
967
+ 995,672695.0,109.0,AZ
968
+ 996,672515.0,109.0,AZ
969
+ 997,682998.0,109.0,AZ
970
+ 998,668678.0,109.0,AZ
971
+ 999,666971.0,109.0,AZ
972
+ 1000,572233.0,109.0,AZ
973
+ 1001,605200.0,109.0,AZ
974
+ 1002,612434.0,109.0,AZ
975
+ 1003,446334.0,109.0,AZ
976
+ 1004,614179.0,109.0,AZ
977
+ 1005,656976.0,109.0,AZ
978
+ 1006,656896.0,109.0,AZ
979
+ 1007,641482.0,147.0,NYY
980
+ 1008,518934.0,147.0,NYY
981
+ 1009,622663.0,147.0,NYY
982
+ 1010,650633.0,147.0,NYY
983
+ 1011,656061.0,147.0,NYY
984
+ 1012,519203.0,147.0,NYY
985
+ 1013,593334.0,147.0,NYY
986
+ 1014,593974.0,147.0,NYY
987
+ 1015,641343.0,147.0,NYY
988
+ 1016,657376.0,147.0,NYY
989
+ 1017,656185.0,147.0,NYY
990
+ 1018,592450.0,147.0,NYY
991
+ 1019,543309.0,147.0,NYY
992
+ 1020,643396.0,147.0,NYY
993
+ 1021,518626.0,147.0,NYY
994
+ 1022,543901.0,147.0,NYY
995
+ 1023,650402.0,147.0,NYY
996
+ 1024,592454.0,147.0,NYY
997
+ 1025,624431.0,147.0,NYY
998
+ 1026,605280.0,147.0,NYY
999
+ 1027,683011.0,147.0,NYY
1000
+ 1028,641432.0,147.0,NYY
1001
+ 1029,622772.0,147.0,NYY
1002
+ 1030,519317.0,147.0,NYY
1003
+ 1031,676760.0,147.0,NYY
1004
+ 1032,543037.0,147.0,NYY
1005
+ 1033,624647.0,119.0,LAD
1006
+ 1034,669257.0,119.0,LAD
1007
+ 1035,641360.0,119.0,LAD
1008
+ 1036,621035.0,119.0,LAD
1009
+ 1037,664062.0,119.0,LAD
1010
+ 1038,681911.0,119.0,LAD
1011
+ 1039,571946.0,119.0,LAD
1012
+ 1040,592789.0,119.0,LAD
1013
+ 1041,605131.0,119.0,LAD
1014
+ 1042,676272.0,119.0,LAD
1015
+ 1043,571970.0,119.0,LAD
1016
+ 1044,518792.0,119.0,LAD
1017
+ 1045,657571.0,119.0,LAD
1018
+ 1046,518692.0,119.0,LAD
1019
+ 1047,660813.0,119.0,LAD
1020
+ 1048,677865.0,119.0,LAD
1021
+ 1049,444482.0,119.0,LAD
1022
+ 1050,502110.0,119.0,LAD
1023
+ 1051,622075.0,119.0,LAD
1024
+ 1052,681546.0,119.0,LAD
1025
+ 1053,623465.0,119.0,LAD
1026
+ 1054,477132.0,119.0,LAD
1027
+ 1055,572204.0,119.0,LAD
1028
+ 1056,605141.0,119.0,LAD
1029
+ 1057,500743.0,119.0,LAD
1030
+ 1058,678246.0,119.0,LAD
1031
+ 1059,624428.0,110.0,BAL
1032
+ 1060,665152.0,110.0,BAL
1033
+ 1061,669211.0,110.0,BAL
1034
+ 1062,669330.0,110.0,BAL
1035
+ 1063,657508.0,110.0,BAL
1036
+ 1064,683002.0,110.0,BAL
1037
+ 1065,622761.0,110.0,BAL
1038
+ 1066,623993.0,110.0,BAL
1039
+ 1067,663630.0,110.0,BAL
1040
+ 1068,680694.0,110.0,BAL
1041
+ 1069,663624.0,110.0,BAL
1042
+ 1070,668939.0,110.0,BAL
1043
+ 1071,608723.0,110.0,BAL
1044
+ 1072,543305.0,110.0,BAL
1045
+ 1073,672335.0,110.0,BAL
1046
+ 1074,669720.0,110.0,BAL
1047
+ 1075,669145.0,110.0,BAL
1048
+ 1076,602104.0,110.0,BAL
1049
+ 1077,642585.0,110.0,BAL
1050
+ 1078,666974.0,110.0,BAL
1051
+ 1079,679631.0,110.0,BAL
1052
+ 1080,641329.0,110.0,BAL
1053
+ 1081,543510.0,110.0,BAL
1054
+ 1082,502043.0,110.0,BAL
1055
+ 1083,543056.0,110.0,BAL
1056
+ 1084,656811.0,110.0,BAL
1057
+ 1085,666165.0,137.0,SF
1058
+ 1086,669477.0,137.0,SF
1059
+ 1087,502171.0,137.0,SF
1060
+ 1088,624424.0,137.0,SF
1061
+ 1089,571745.0,137.0,SF
1062
+ 1090,518397.0,137.0,SF
1063
+ 1091,640455.0,137.0,SF
1064
+ 1092,592426.0,137.0,SF
1065
+ 1093,605154.0,137.0,SF
1066
+ 1094,657277.0,137.0,SF
1067
+ 1095,676254.0,137.0,SF
1068
+ 1096,543063.0,137.0,SF
1069
+ 1097,543101.0,137.0,SF
1070
+ 1098,672275.0,137.0,SF
1071
+ 1099,527038.0,137.0,SF
1072
+ 1100,689172.0,137.0,SF
1073
+ 1101,622072.0,137.0,SF
1074
+ 1102,643511.0,137.0,SF
1075
+ 1103,669369.0,137.0,SF
1076
+ 1104,664774.0,137.0,SF
1077
+ 1105,666808.0,137.0,SF
1078
+ 1106,596001.0,137.0,SF
1079
+ 1107,573124.0,137.0,SF
1080
+ 1108,573262.0,137.0,SF
1081
+ 1109,605204.0,137.0,SF
1082
+ 1110,596103.0,137.0,SF
1083
+ 1111,518617.0,139.0,TB
1084
+ 1112,670764.0,139.0,TB
1085
+ 1113,642350.0,139.0,TB
1086
+ 1114,670623.0,139.0,TB
1087
+ 1115,623912.0,139.0,TB
1088
+ 1116,671737.0,139.0,TB
1089
+ 1117,664040.0,139.0,TB
1090
+ 1118,607192.0,139.0,TB
1091
+ 1119,663556.0,139.0,TB
1092
+ 1120,642336.0,139.0,TB
1093
+ 1121,668227.0,139.0,TB
1094
+ 1122,686747.0,139.0,TB
1095
+ 1123,592094.0,139.0,TB
1096
+ 1124,656222.0,139.0,TB
1097
+ 1125,542194.0,139.0,TB
1098
+ 1126,676596.0,139.0,TB
1099
+ 1127,676534.0,139.0,TB
1100
+ 1128,622534.0,139.0,TB
1101
+ 1129,665001.0,139.0,TB
1102
+ 1130,621107.0,139.0,TB
1103
+ 1131,687330.0,139.0,TB
1104
+ 1132,666139.0,139.0,TB
1105
+ 1133,621363.0,139.0,TB
1106
+ 1134,650490.0,139.0,TB
1107
+ 1135,677551.0,139.0,TB
1108
+ 1136,670042.0,139.0,TB
1109
+ 1137,621057.0,111.0,BOS
1110
+ 1138,622569.0,111.0,BOS
1111
+ 1139,570257.0,111.0,BOS
1112
+ 1140,657136.0,111.0,BOS
1113
+ 1141,571771.0,111.0,BOS
1114
+ 1142,608701.0,111.0,BOS
1115
+ 1143,657077.0,111.0,BOS
1116
+ 1144,572020.0,111.0,BOS
1117
+ 1145,678394.0,111.0,BOS
1118
+ 1146,445276.0,111.0,BOS
1119
+ 1147,676477.0,111.0,BOS
1120
+ 1148,670174.0,111.0,BOS
1121
+ 1149,676710.0,111.0,BOS
1122
+ 1150,601713.0,111.0,BOS
1123
+ 1151,624512.0,111.0,BOS
1124
+ 1152,646240.0,111.0,BOS
1125
+ 1153,680776.0,111.0,BOS
1126
+ 1154,606132.0,111.0,BOS
1127
+ 1155,665839.0,111.0,BOS
1128
+ 1156,595411.0,111.0,BOS
1129
+ 1157,807799.0,111.0,BOS
1130
+ 1158,656557.0,111.0,BOS
1131
+ 1159,446372.0,111.0,BOS
1132
+ 1160,455119.0,111.0,BOS
1133
+ 1161,671213.0,111.0,BOS
1134
+ 1162,457759.0,111.0,BOS
requirements.txt ADDED
@@ -0,0 +1,293 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # requirements.txt generated by rsconnect-python on 2023-04-20 21:38:50.254957
2
+ adjustText==0.7.3
3
+ aiohttp==3.8.1
4
+ aiosignal==1.2.0
5
+ altair==4.2.0
6
+ ansicolors==1.1.8
7
+ anyio==3.6.2
8
+ appdirs==1.4.4
9
+ argon2-cffi==21.1.0
10
+ asgiref==3.5.2
11
+ aspose-words==22.10.0
12
+ asttokens==2.2.1
13
+ async-timeout==4.0.2
14
+ atomicwrites==1.4.0
15
+ attrs==20.3.0
16
+ backcall==0.2.0
17
+ bandit==1.7.4
18
+ baseball-scraper==0.4.10
19
+ beautifulsoup4==4.9.3
20
+ bleach==4.1.0
21
+ branca==0.4.2
22
+ bs4==0.0.1
23
+ cachetools==5.2.0
24
+ cairocffi==1.2.0
25
+ CairoSVG==2.6.0
26
+ calfem-python==3.5.9
27
+ certifi==2020.12.5
28
+ cffi==1.14.5
29
+ chardet==4.0.0
30
+ charset-normalizer==2.0.11
31
+ click==8.1.3
32
+ click-plugins==1.1.1
33
+ cligj==0.7.2
34
+ colorama==0.4.4
35
+ colour==0.1.5
36
+ commonmark==0.9.1
37
+ contextvars==2.4
38
+ coverage==6.5.0
39
+ cryptography==38.0.1
40
+ cssselect==1.1.0
41
+ cssselect2==0.4.1
42
+ cssutils==2.2.0
43
+ cycler==0.10.0
44
+ dataframe-image==0.1.7
45
+ DateTime==4.3
46
+ decorator==4.4.2
47
+ decorest==0.0.6
48
+ defusedxml==0.7.1
49
+ Deprecated==1.2.13
50
+ deserialize==1.8.1
51
+ df2img==0.2.9
52
+ Django==4.1.1
53
+ docopt==0.6.2
54
+ entrypoints==0.3
55
+ et-xmlfile==1.0.1
56
+ executing==1.2.0
57
+ ezdxf==0.17.2
58
+ fastapi==0.95.0
59
+ fastjsonschema==2.16.3
60
+ flake8==5.0.4
61
+ Flask==2.2.3
62
+ folium==0.12.1.post1
63
+ fonttools==4.31.2
64
+ frozenlist==1.3.0
65
+ fsspec==2023.4.0
66
+ fuzzywuzzy==0.18.0
67
+ geomdl==5.3.1
68
+ gitdb==4.0.9
69
+ GitPython==3.1.29
70
+ gmsh==4.9.5
71
+ google-api-core==2.10.1
72
+ google-api-python-client==2.63.0
73
+ google-auth==2.12.0
74
+ google-auth-httplib2==0.1.0
75
+ google-auth-oauthlib==0.5.3
76
+ google-spreadsheet==0.0.6
77
+ googleapis-common-protos==1.56.4
78
+ graphviz==0.19.1
79
+ greenlet==1.1.3.post0
80
+ gspread==5.5.0
81
+ h11==0.12.0
82
+ h5py==3.6.0
83
+ hockey-rink==0.1.1
84
+ hockey-scraper==1.37.1
85
+ hockeyjockey==1.2
86
+ html2image==2.0.1
87
+ html5lib==1.1
88
+ htmltools==0.2.1
89
+ httpcore==0.15.0
90
+ httplib2==0.20.4
91
+ httpx==0.23.0
92
+ humanize==4.6.0
93
+ idna==2.10
94
+ image==1.5.33
95
+ imageio==2.15.0
96
+ imageio-ffmpeg==0.4.8
97
+ imgkit==1.2.2
98
+ immutables==0.19
99
+ importlib-metadata==6.0.0
100
+ importlib-resources==5.12.0
101
+ iniconfig==1.1.1
102
+ ipykernel==5.5.0
103
+ ipython==8.11.0
104
+ ipython-genutils==0.2.0
105
+ itsdangerous==2.1.2
106
+ jdcal==1.4.1
107
+ jedi==0.18.0
108
+ Jinja2==3.0.1
109
+ joblib==1.1.0
110
+ jsonschema==3.2.0
111
+ jupyter-client==6.1.11
112
+ jupyter-core==4.7.1
113
+ jupyterlab-pygments==0.1.2
114
+ kaleido==0.2.1
115
+ kiwisolver==1.3.1
116
+ libhockey==0.23.0
117
+ linkify-it-py==2.0.0
118
+ lxml==4.6.2
119
+ markdown-it-py==2.2.0
120
+ MarkupSafe==2.1.2
121
+ matplotlib==3.5.1
122
+ matplotlib-inline==0.1.6
123
+ mccabe==0.7.0
124
+ mdit-py-plugins==0.3.5
125
+ mdurl==0.1.2
126
+ menyou==1.0
127
+ mistune==0.8.4
128
+ MLB-StatsAPI==1.4.2
129
+ more-itertools==8.12.0
130
+ moviepy==1.0.3
131
+ mpmath==1.2.1
132
+ multidict==6.0.2
133
+ munch==2.5.0
134
+ mysql-connector-python==8.0.24
135
+ natsort==7.1.1
136
+ nbclient==0.5.4
137
+ nbconvert==6.4.0
138
+ nbformat==5.1.3
139
+ ndim==0.1.6
140
+ nest-asyncio==1.5.1
141
+ networkx==2.6.3
142
+ nhl-logo-scraper==1.1.0
143
+ nhlpy==0.3.0
144
+ nibabel==3.2.2
145
+ notebook==6.4.4
146
+ npx==0.1.1
147
+ numpy==1.22.3
148
+ oauth2client==4.1.3
149
+ oauthlib==3.2.1
150
+ openpyxl==3.0.5
151
+ packaging==21.3
152
+ pandas==1.2.0
153
+ pandocfilters==1.5.0
154
+ parso==0.8.1
155
+ patsy==0.5.1
156
+ pbr==5.11.0
157
+ pdfkit==1.0.0
158
+ pickleshare==0.7.5
159
+ Pillow==9.0.1
160
+ pins==0.8.0
161
+ pip==23.1
162
+ platformdirs==2.5.1
163
+ pluggy==0.13.1
164
+ praw==7.7.0
165
+ prawcore==2.3.0
166
+ proglog==0.1.10
167
+ prometheus-client==0.11.0
168
+ prompt-toolkit==3.0.38
169
+ protobuf==4.21.6
170
+ psutil==5.9.3
171
+ pure-eval==0.2.2
172
+ py==1.10.0
173
+ pyaml==20.4.0
174
+ pyarrow==5.0.0
175
+ pyasn1==0.4.8
176
+ pyasn1-modules==0.2.8
177
+ pybaseball==2.2.1
178
+ pybind11==2.9.1
179
+ pycairo==1.23.0
180
+ pycodestyle==2.9.1
181
+ pycparser==2.20
182
+ pydantic==1.10.7
183
+ pyfiglet==0.8.post1
184
+ pyflakes==2.5.0
185
+ PyGithub==1.55
186
+ Pygments==2.8.0
187
+ pygsheets==2.0.5
188
+ PyHockeyStats==0.5.2
189
+ PyJWT==2.6.0
190
+ pymesh==1.0.2
191
+ PyNaCl==1.4.0
192
+ PyOpenGL==3.1.6
193
+ pyOpenSSL==22.1.0
194
+ pyparsing==3.0.7
195
+ pyperclip==1.8.2
196
+ pyproj==3.2.1
197
+ PyQt5==5.15.6
198
+ PyQt5-Qt5==5.15.2
199
+ PyQt5-sip==12.9.1
200
+ PyQtWebEngine==5.15.5
201
+ PyQtWebEngine-Qt5==5.15.2
202
+ pyrsistent==0.17.3
203
+ pytest==7.1.3
204
+ pytest_check==1.0.5
205
+ python-dateutil==2.8.2
206
+ python-dotenv==0.21.0
207
+ python-mlb-statsapi==0.3.9
208
+ python-multipart==0.0.6
209
+ pytools==2022.1.1
210
+ pytz==2022.7.1
211
+ PyVTK==0.5.18
212
+ PyWavelets==1.2.0
213
+ PyYAML==5.3.1
214
+ pyzmq==25.0.1
215
+ rauth==0.7.3
216
+ requests==2.28.1
217
+ requests-mock==1.10.0
218
+ requests-oauthlib==1.3.1
219
+ retrying==1.3.3
220
+ rfc3986==1.5.0
221
+ rhino-shapley-interop==0.0.4
222
+ rhino3dm==7.15.0
223
+ rich==12.0.0
224
+ riotwatcher==3.2.4
225
+ rsa==4.9
226
+ scikit-image==0.19.1
227
+ scikit-learn==1.0.1
228
+ scipy==1.6.0
229
+ seaborn==0.11.1
230
+ selenium==3.141.0
231
+ semver==2.13.0
232
+ Send2Trash==1.8.0
233
+ Shapely==1.7.1
234
+ shiny==0.3.0
235
+ six==1.16.0
236
+ sklearn==0.0
237
+ smmap==5.0.0
238
+ sniffio==1.3.0
239
+ soupsieve==2.4
240
+ spotipy==2.18.0
241
+ SQLAlchemy==1.4.42
242
+ sqlparse==0.4.2
243
+ stack-data==0.6.2
244
+ starlette==0.26.1
245
+ statsmodels==0.12.2
246
+ stevedore==4.1.1
247
+ stringcase==1.2.0
248
+ sympy==1.10
249
+ tabulate==0.9.0
250
+ tekore==4.5.0
251
+ tenacity==8.2.2
252
+ terminado==0.12.1
253
+ termplotlib==0.3.9
254
+ testpath==0.5.0
255
+ threadpoolctl==3.0.0
256
+ tifffile==2022.2.2
257
+ tinycss2==1.2.1
258
+ toml==0.10.2
259
+ tomli==2.0.1
260
+ toolz==0.11.2
261
+ TopDownHockey-Scraper==2.0.1
262
+ tornado==6.2
263
+ tqdm==4.62.3
264
+ traitlets==5.9.0
265
+ triangle==20220202
266
+ trimeshpy==0.0.2
267
+ tweepy==4.13.0
268
+ typing_extensions==4.5.0
269
+ tzdata==2022.2
270
+ uc-micro-py==1.0.1
271
+ Unidecode==1.3.4
272
+ update-checker==0.18.0
273
+ uritemplate==4.1.1
274
+ urllib3==1.26.15
275
+ uvicorn==0.21.1
276
+ vega-datasets==0.9.0
277
+ visvis==1.13.0
278
+ vtk==9.1.0
279
+ wcwidth==0.2.6
280
+ webdriver-manager==3.8.5
281
+ webencodings==0.5.1
282
+ websocket-client==1.5.1
283
+ websockets==11.0.1
284
+ Werkzeug==2.2.3
285
+ wget==3.2
286
+ wrapt==1.12.1
287
+ wslink==1.4.3
288
+ xmltodict==0.12.0
289
+ xxhash==3.2.0
290
+ yahoo-oauth==2.0
291
+ yarl==1.7.2
292
+ zipp==3.15.0
293
+ zope.interface==5.4.0
runtime.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ python-3.9.13
stuff_df_melt.csv ADDED
The diff for this file is too large to render. See raw diff
 
team_logos.csv ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ id,city,name,franchise,abbreviation,imageAbbreviation,imageLink
2
+ 108,Los Angeles Angels,Angels,Los Angeles Angels,LAA,LAA,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/LAA.png&h=400&w=400
3
+ 109,Arizona Diamondbacks,D-backs,Arizona Diamondbacks,AZ,ARI,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/ARI.png&h=400&w=400
4
+ 110,Baltimore Orioles,Orioles,Baltimore Orioles,BAL,BAL,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/BAL.png&h=400&w=400
5
+ 111,Boston Red Sox,Red Sox,Boston Red Sox,BOS,BOS,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/BOS.png&h=400&w=400
6
+ 112,Chicago Cubs,Cubs,Chicago Cubs,CHC,CHC,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/CHC.png&h=400&w=400
7
+ 113,Cincinnati Reds,Reds,Cincinnati Reds,CIN,CIN,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/CIN.png&h=400&w=400
8
+ 114,Cleveland Guardians,Guardians,Cleveland Guardians,CLE,CLE,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/CLE.png&h=400&w=400
9
+ 115,Colorado Rockies,Rockies,Colorado Rockies,COL,COL,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/COL.png&h=400&w=400
10
+ 116,Detroit Tigers,Tigers,Detroit Tigers,DET,DET,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/DET.png&h=400&w=400
11
+ 117,Houston Astros,Astros,Houston Astros,HOU,HOU,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/HOU.png&h=400&w=400
12
+ 118,Kansas City Royals,Royals,Kansas City Royals,KC,KC,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/KC.png&h=400&w=400
13
+ 119,Los Angeles Dodgers,Dodgers,Los Angeles Dodgers,LAD,LAD,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/LAD.png&h=400&w=400
14
+ 120,Washington Nationals,Nationals,Washington Nationals,WSH,WSH,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/WSH.png&h=400&w=400
15
+ 121,New York Mets,Mets,New York Mets,NYM,NYM,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/NYM.png&h=400&w=400
16
+ 133,Oakland Athletics,Athletics,Oakland Athletics,OAK,OAK,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/OAK.png&h=400&w=400
17
+ 134,Pittsburgh Pirates,Pirates,Pittsburgh Pirates,PIT,PIT,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/PIT.png&h=400&w=400
18
+ 135,San Diego Padres,Padres,San Diego Padres,SD,SD,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/SD.png&h=400&w=400
19
+ 136,Seattle Mariners,Mariners,Seattle Mariners,SEA,SEA,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/SEA.png&h=400&w=400
20
+ 137,San Francisco Giants,Giants,San Francisco Giants,SF,SF,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/SF.png&h=400&w=400
21
+ 138,St. Louis Cardinals,Cardinals,St. Louis Cardinals,STL,STL,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/STL.png&h=400&w=400
22
+ 139,Tampa Bay Rays,Rays,Tampa Bay Rays,TB,TB,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/TB.png&h=400&w=400
23
+ 140,Texas Rangers,Rangers,Texas Rangers,TEX,TEX,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/TEX.png&h=400&w=400
24
+ 141,Toronto Blue Jays,Blue Jays,Toronto Blue Jays,TOR,TOR,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/TOR.png&h=400&w=400
25
+ 142,Minnesota Twins,Twins,Minnesota Twins,MIN,MIN,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/MIN.png&h=400&w=400
26
+ 143,Philadelphia Phillies,Phillies,Philadelphia Phillies,PHI,PHI,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/PHI.png&h=400&w=400
27
+ 144,Atlanta Braves,Braves,Atlanta Braves,ATL,ATL,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/ATL.png&h=400&w=400
28
+ 145,Chicago White Sox,White Sox,Chicago White Sox,CWS,CHW,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/CHW.png&h=400&w=400
29
+ 146,Miami Marlins,Marlins,Miami Marlins,MIA,MIA,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/MIA.png&h=400&w=400
30
+ 147,New York Yankees,Yankees,New York Yankees,NYY,NYY,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/NYY.png&h=400&w=400
31
+ 158,Milwaukee Brewers,Brewers,Milwaukee Brewers,MIL,MIL,https://a.espncdn.com/combiner/i?img=/i/teamlogos/mlb/500/scoreboard/MIL.png&h=400&w=400
www/Adelie.png ADDED
www/Chinstrap.png ADDED
www/Gentoo.png ADDED
www/palmerpenguins.png ADDED
www/penguins.png ADDED