In [1]:
import nba_py
import datetime
import time
import nba_py.game
import nba_py.player
import nba_py.team
import pandas as pd
import numpy as np
import functools
import pymysql
from sqlalchemy import create_engine
%matplotlib inline
In [2]:
conn = create_engine('mysql+pymysql://root:@localhost:3306/nba_stats')
game_logs = pd.read_sql_table('game_logs', conn)
In [7]:
game_logs.columns
Out[7]:
Index(['SEASON_ID', 'Player_ID', 'Game_ID', 'GAME_DATE', 'MATCHUP', 'WL',
'MIN', 'FGM', 'FGA', 'FG_PCT', 'FG3M', 'FG3A', 'FG3_PCT', 'FTM', 'FTA',
'FT_PCT', 'OREB', 'DREB', 'REB', 'AST', 'STL', 'BLK', 'TOV', 'PF',
'PTS', 'PLUS_MINUS', 'VIDEO_AVAILABLE', 'LOCATION', 'Oppo', 'Oppo_ID'],
dtype='object')
In [10]:
game_log_col = ['SEASON_ID', 'Player_ID','LOCATION', 'Oppo_ID',
'MIN', 'PTS', 'AST', 'OREB', 'DREB', 'STL', 'BLK', 'TOV',
'FGM', 'FGA', 'FG3M', 'FG3A']
In [20]:
game_logs = game_logs[game_log_col]
game_logs = game_logs[game_logs['MIN'] != 0]
In [21]:
convert_to_36 = lambda x: x[['PTS', 'AST', 'OREB', 'DREB', 'STL', 'BLK',
'TOV', 'FGM', 'FGA', 'FG3M']] * 36 / x['MIN']
game_logs_36 = game_logs.apply(convert_to_36, axis = 1)
In [29]:
game_logs_36 = pd.concat([game_logs[['Player_ID','LOCATION', 'Oppo_ID']], game_logs_36], axis = 1)
In [32]:
game_logs_36['SCORE'] = game_logs_36['PTS'] * 1 + game_logs_36['AST'] * 1.5 + \
game_logs_36['OREB'] * 1 + game_logs_36['DREB'] * 0.7 + \
game_logs_36['STL'] * 2 + game_logs_36['BLK'] * 1.8 + game_logs_36['TOV'] * -1 + \
game_logs_36['FGM'] * 0.4 + \
(game_logs_36['FGA'] - game_logs_36['FGM']) * -1 + game_logs_36['FG3M'] * 0.5
game_logs_36
Out[32]:
Player_ID
LOCATION
Oppo_ID
PTS
AST
OREB
DREB
STL
BLK
TOV
FGM
FGA
FG3M
SCORE
0
203518
HOME
1610612743
22.000000
2.000000
6.000000
6.000000
0.000000
0.000000
2.000000
8.000000
22.000000
6.000000
25.400000
1
203518
AWAY
1610612750
14.400000
0.000000
0.000000
0.000000
2.400000
2.400000
2.400000
4.800000
7.200000
4.800000
23.040000
2
203518
HOME
1610612749
36.000000
0.000000
0.000000
3.000000
0.000000
0.000000
3.000000
12.000000
18.000000
12.000000
39.900000
3
203518
HOME
1610612766
0.000000
0.000000
0.000000
5.538462
0.000000
0.000000
2.769231
0.000000
11.076923
0.000000
-9.969231
4
203518
HOME
1610612759
12.857143
2.571429
0.000000
0.000000
0.000000
0.000000
2.571429
5.142857
12.857143
2.571429
9.771429
5
203518
AWAY
1610612753
9.818182
1.636364
1.636364
0.000000
3.272727
0.000000
0.000000
3.272727
13.090909
3.272727
13.581818
6
203518
AWAY
1610612742
0.000000
0.000000
0.000000
10.285714
0.000000
0.000000
5.142857
0.000000
10.285714
0.000000
-8.228571
7
203518
AWAY
1610612745
14.666667
2.666667
0.000000
0.000000
4.000000
0.000000
1.333333
5.333333
13.333333
4.000000
21.466667
8
203518
HOME
1610612755
7.500000
0.000000
0.000000
4.500000
1.500000
1.500000
1.500000
1.500000
9.000000
1.500000
8.700000
9
203518
HOME
1610612744
3.600000
3.600000
0.000000
5.400000
3.600000
0.000000
0.000000
0.000000
14.400000
0.000000
5.580000
10
203518
HOME
1610612758
6.000000
0.000000
0.000000
3.000000
0.000000
0.000000
0.000000
3.000000
9.000000
0.000000
3.300000
11
203518
AWAY
1610612761
18.000000
3.600000
0.000000
3.600000
3.600000
0.000000
1.800000
5.400000
12.600000
3.600000
28.080000
12
203518
AWAY
1610612751
18.000000
4.153846
0.000000
4.153846
2.769231
1.384615
0.000000
6.923077
9.692308
4.153846
37.246154
13
203518
HOME
1610612762
12.000000
2.400000
0.000000
0.000000
0.000000
0.000000
0.000000
4.800000
7.200000
2.400000
16.320000
14
203518
HOME
1610612759
9.000000
0.000000
3.000000
6.000000
6.000000
0.000000
0.000000
3.000000
18.000000
3.000000
15.900000
15
203518
HOME
1610612757
13.846154
2.769231
0.000000
2.769231
0.000000
0.000000
0.000000
5.538462
13.846154
2.769231
15.230769
16
203518
AWAY
1610612742
0.000000
7.200000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
10.800000
0.000000
0.000000
17
203518
AWAY
1610612756
14.181818
0.000000
0.000000
1.090909
1.090909
0.000000
1.090909
5.454545
12.000000
3.272727
13.309091
18
203518
AWAY
1610612757
21.600000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
7.200000
10.800000
7.200000
24.480000
19
203518
HOME
1610612762
15.230769
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
5.538462
5.538462
4.153846
19.523077
20
203518
HOME
1610612740
13.371429
1.028571
1.028571
2.057143
0.000000
0.000000
0.000000
4.114286
12.342857
3.085714
12.342857
21
203518
HOME
1610612747
23.586207
0.000000
0.000000
3.724138
0.000000
0.000000
0.000000
8.689655
16.137931
6.206897
25.324138
22
203518
HOME
1610612752
11.250000
0.000000
0.000000
2.250000
0.000000
0.000000
0.000000
4.500000
11.250000
2.250000
9.000000
23
203518
AWAY
1610612764
14.400000
0.000000
0.000000
3.600000
1.800000
0.000000
0.000000
3.600000
12.600000
3.600000
14.760000
24
203518
HOME
1610612744
8.000000
0.000000
0.000000
0.000000
4.000000
0.000000
0.000000
0.000000
0.000000
0.000000
16.000000
25
203518
HOME
1610612739
8.000000
12.000000
0.000000
4.000000
4.000000
0.000000
0.000000
4.000000
8.000000
0.000000
34.400000
26
203518
AWAY
1610612754
27.000000
0.000000
4.500000
0.000000
0.000000
0.000000
4.500000
9.000000
18.000000
9.000000
26.100000
27
203518
AWAY
1610612739
0.000000
4.500000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
4.500000
0.000000
2.250000
28
203518
HOME
1610612742
11.250000
2.250000
0.000000
0.000000
0.000000
0.000000
0.000000
2.250000
6.750000
2.250000
12.150000
29
203518
AWAY
1610612740
22.000000
0.000000
0.000000
0.000000
2.000000
2.000000
0.000000
8.000000
10.000000
4.000000
32.800000
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
64634
1627826
AWAY
1610612743
30.000000
1.200000
4.800000
8.400000
0.000000
1.200000
1.200000
14.400000
18.000000
0.000000
45.600000
64635
1627826
HOME
1610612755
18.947368
0.000000
0.000000
11.368421
0.000000
7.578947
3.789474
7.578947
9.473684
0.000000
37.894737
64636
1627826
AWAY
1610612756
29.647059
0.000000
4.235294
2.117647
2.117647
4.235294
0.000000
14.823529
27.529412
0.000000
40.447059
64637
1627826
HOME
1610612738
12.521739
4.695652
0.000000
1.565217
3.130435
3.130435
0.000000
6.260870
12.521739
0.000000
28.800000
64638
1627826
HOME
1610612766
18.000000
0.000000
0.000000
9.000000
0.000000
0.000000
0.000000
9.000000
27.000000
0.000000
9.900000
64639
1627826
HOME
1610612759
4.000000
0.000000
0.000000
4.000000
2.000000
2.000000
4.000000
2.000000
6.000000
0.000000
7.200000
64640
1627826
AWAY
1610612760
14.666667
1.333333
1.333333
6.666667
1.333333
4.000000
1.333333
6.666667
12.000000
0.000000
28.533333
64641
1627826
AWAY
1610612756
20.571429
0.000000
5.142857
5.142857
0.000000
0.000000
2.571429
7.714286
15.428571
0.000000
22.114286
64642
1627826
HOME
1610612758
0.000000
0.000000
0.000000
18.000000
0.000000
0.000000
3.600000
0.000000
3.600000
0.000000
5.400000
64643
1627826
AWAY
1610612749
25.714286
3.428571
1.714286
8.571429
0.000000
1.714286
3.428571
12.000000
18.857143
0.000000
36.171429
64644
1627826
AWAY
1610612765
8.181818
1.636364
1.636364
1.636364
0.000000
3.272727
0.000000
3.272727
8.181818
0.000000
15.709091
64645
1627826
AWAY
1610612752
21.176471
0.000000
4.235294
10.588235
2.117647
6.352941
0.000000
10.588235
19.058824
0.000000
44.258824
64646
1627826
AWAY
1610612738
9.000000
0.000000
0.000000
18.000000
0.000000
0.000000
9.000000
0.000000
0.000000
0.000000
12.600000
64647
1627826
AWAY
1610612764
13.090909
0.000000
3.272727
6.545455
0.000000
3.272727
3.272727
6.545455
13.090909
0.000000
19.636364
64648
1627826
HOME
1610612743
29.142857
1.714286
5.142857
5.142857
0.000000
0.000000
1.714286
13.714286
15.428571
0.000000
42.514286
64649
1627826
AWAY
1610612762
22.153846
1.384615
2.769231
11.076923
0.000000
0.000000
0.000000
8.307692
15.230769
0.000000
31.153846
64650
1627826
AWAY
1610612757
15.428571
2.571429
5.142857
7.714286
0.000000
3.857143
5.142857
6.428571
19.285714
0.000000
21.342857
64651
1627826
AWAY
1610612742
3.789474
1.894737
1.894737
5.684211
0.000000
1.894737
1.894737
1.894737
3.789474
0.000000
12.884211
64652
1627826
HOME
1610612754
24.000000
0.000000
0.000000
6.000000
0.000000
0.000000
0.000000
12.000000
12.000000
0.000000
33.000000
64653
1627826
HOME
1610612743
15.230769
1.384615
6.923077
11.076923
1.384615
4.153846
1.384615
6.923077
15.230769
0.000000
35.307692
64654
1627826
HOME
1610612765
16.000000
4.000000
4.000000
16.000000
0.000000
8.000000
4.000000
8.000000
16.000000
0.000000
42.800000
64655
1627826
AWAY
1610612746
24.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
12.000000
12.000000
0.000000
28.800000
64656
1627826
AWAY
1610612759
19.200000
2.400000
4.800000
4.800000
4.800000
2.400000
2.400000
9.600000
16.800000
0.000000
39.120000
64657
1627826
AWAY
1610612753
12.705882
2.117647
2.117647
2.117647
0.000000
0.000000
2.117647
4.235294
14.823529
0.000000
8.470588
64658
1627826
AWAY
1610612766
0.000000
0.000000
0.000000
12.000000
0.000000
0.000000
0.000000
0.000000
12.000000
0.000000
-3.600000
64659
1627826
AWAY
1610612758
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
18.000000
0.000000
18.000000
0.000000
-36.000000
64660
1627826
AWAY
1610612745
14.400000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
14.400000
0.000000
0.000000
64661
1627826
AWAY
1610612750
4.500000
0.000000
0.000000
9.000000
0.000000
0.000000
4.500000
0.000000
9.000000
0.000000
-2.700000
64662
1627826
HOME
1610612744
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
64663
1627826
AWAY
1610612737
11.368421
0.000000
3.789474
3.789474
1.894737
0.000000
0.000000
5.684211
7.578947
0.000000
21.978947
64461 rows × 14 columns
In [64]:
game_logs_36[(game_logs_36['Player_ID'] == 1626164) & (game_logs_36['LOCATION'] == 'HOME')]['SCORE'].describe()
Out[64]:
count 79.000000
mean 21.739667
std 13.799493
min -36.000000
25% 13.971619
50% 21.600000
75% 27.690000
max 70.200000
Name: SCORE, dtype: float64
In [65]:
game_logs_36[(game_logs_36['Player_ID'] == 1626164) & (game_logs_36['LOCATION'] == 'AWAY')]['SCORE'].describe()
Out[65]:
count 75.000000
mean 19.863884
std 12.321743
min -13.500000
25% 11.072727
50% 22.220690
75% 26.855212
max 63.520000
Name: SCORE, dtype: float64
In [66]:
game_logs_36[game_logs_36['Player_ID'] == 1626164]['SCORE'].describe()
Out[66]:
count 154.000000
mean 20.826137
std 13.091852
min -36.000000
25% 12.490435
50% 21.910345
75% 27.531000
max 70.200000
Name: SCORE, dtype: float64
In [ ]:
Content source: wonderui/Hoop_Fantasy
Similar notebooks: