In [ ]:
# Analyzes relationships between points and potential features for model

In [1]:
#Import Packages
import pandas as pd
import numpy as np
from Player.Players import Players
from Regression.Reg_Model import Reg_Model


//anaconda/lib/python2.7/site-packages/pandas/computation/__init__.py:19: UserWarning: The installed version of numexpr 2.4.4 is not supported in pandas and will be not be used

  UserWarning)

In [2]:
# Analyze Player's past points, assists, and minutes
Player_List = Players('2015-16').players

In [3]:
all_stats=pd.DataFrame()
all_game_logs=pd.DataFrame()

for key in Player_List:
    p=Player_List[key]
    game_logs = p.game_logs
    game_logs['PTS_MIN'] = [x*1.0/y for x,y in zip(game_logs['PTS'], game_logs['MIN'])]
    
    all_game_logs = all_game_logs.append(game_logs)
    
    stats = Player_List[key].get_stats(game_logs = game_logs, date_col='GAME_DATE', 
                                       id_col='Game_ID', target_col='PTS', 
                                       col_list=['PTS', 'MIN', 'PTS_MIN', 'AST', 'FGM', 'FGA', 'FG_PCT'], n=10)
    if len(stats>0):
        stats=stats[stats['n_games']>=5]
    
    all_stats = all_stats.append(stats)

In [4]:
cor = pd.DataFrame()
feature_list = ['PTS_avg_10', 'AST_avg_10', 'PTS_MIN_avg_10']
for f in feature_list:
    cor.set_value('PTS', f, np.corrcoef(x=stats[f], y=stats['PTS'])[0,1])
cor


Out[4]:
PTS_avg_10 AST_avg_10 PTS_MIN_avg_10
PTS 0.116314 -0.042724 0.135762

In [5]:
%matplotlib inline
x=stats['PTS_avg_10']
y=stats['PTS']
import matplotlib.pyplot as plt
plt.scatter(x, y, alpha=0.5)
plt.show


Out[5]:
<function matplotlib.pyplot.show>
//anaconda/lib/python2.7/site-packages/matplotlib/collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  if self._edgecolors == str('face'):

In [6]:
%matplotlib inline
x=stats['PTS_MIN_avg_10']
y=stats['PTS']
import matplotlib.pyplot as plt
plt.scatter(x, y, alpha=0.5)
plt.show


Out[6]:
<function matplotlib.pyplot.show>

In [8]:
# Looks at team's past performance using ELO
from Regression.ELO import ELO
from Schedule.Schedule import Schedule
sched_2014 = Schedule(b_dt = '10/1/2014')
sched_2015 = Schedule(b_dt = '10/1/2015')
games = sched_2014.get_games().append(sched_2015.get_games()).reset_index(drop=True)
elo = ELO(games, 'GAME_DATE', 'Home Team', 'Away Team', 'H_PTS', 'A_PTS')
elo_data = elo.create_elo(1500, 20, 100, '538')

In [9]:
# Joins ELO data back to games
for index, game in games.iterrows():
    game_dt = game['GAME_DATE']
    poss_elo = elo_data[elo_data.index < game_dt]
    
    h_team = game['Home Team']
    if len(poss_elo) == 0:
        h_elo_score = 1500
    else:
        h_elo_score = poss_elo.tail(1)[h_team][0]
    games.set_value(index, 'H_ELO', h_elo_score)
    
    a_team = game['Away Team']
    if len(poss_elo) == 0:
        a_elo_score = 1500
    else:
        a_elo_score = poss_elo.tail(1)[a_team][0]
    games.set_value(index, 'A_ELO', a_elo_score)

In [ ]:
elo_data

In [ ]:
# Joins Player data and ELO data
game_logs

In [ ]:
for index, g in game_logs.iterrows():
    elo=elo_data.ix[str(g['GAME_DATE'])[0:10], g['MATCHUP'][0:3]]
    game_logs.set_value(index, 'ELO', elo)
    opp_team = g['MATCHUP'].split(' ')[2]
    opp_elo = elo_data.ix[str(g['GAME_DATE'])[0:10], opp_team]
    game_logs.set_value(index, 'Opp_ELO', opp_elo)

In [ ]:
game_logs

In [ ]:
%matplotlib inline
x=[a-b for a,b in zip(game_logs['ELO'],game_logs['Opp_ELO'])]
y=game_logs['PTS']
import matplotlib.pyplot as plt
plt.scatter(x, y, alpha=0.5)
plt.show

In [ ]:
np.corrcoef(x, y)[0,1]

In [10]:
#Trying to get points per team
home_games = games[['GAME_DATE', 'Home Team', 'H_PTS']].rename({'Home Team': 'Team', 'H_PTS': 'PTS'})
away_games = games[['GAME_DATE', 'Away Team', 'A_PTS']].rename({'Away Team': 'Team', 'A_PTS': 'PTS'})
game_stats = home_games.append(away_games).reset_index(drop=True)
print len(games), len(home_games), len(away_games), len(game_stats)


2460 2460 2460 4920

In [17]:
from Schedule.Stats import Stats
my_team_stats = Stats(games, 'avg', 'GAME_DATE', 'Home Team', 'Away Team', 'Pts_diff', ['Game_ID', 'GAME_DATE', 'Home Team', 'Away Team'])
last_10_team_stats = my_team_stats.get_lastn_stats(10)

In [18]:
last_all_team_stats = my_team_stats.get_lastn_stats(100)

In [ ]:
last_10_team_stats.to_csv('tstats.csv', index=False)
game_logs.to_csv('gl.csv', index=False)
                    
                    # I need to plan this merge out--probably will need join home and away separately

In [ ]:
last_10_team_stats = pd.read_csv('tstats.csv')
game_logs = pd.read_csv('gl.csv')

In [28]:
team_stats_10 = last_10_team_stats[['Game_ID', 'GAME_DATE', 'Home Team', 'Away Team', 'H_PTS_10', 'A_PTS_10', 'H_BTB', 'A_BTB']]
team_stats_100 = last_all_team_stats[['Game_ID', 'H_PTS_100', 'A_PTS_100']]
team_stats = pd.merge(team_stats_10, team_stats_100, on='Game_ID')
team_stats['H_PTS_Trend'] = [(a-b)*1.0/b for a,b in zip(team_stats['H_PTS_10'], team_stats['H_PTS_100'])]
team_stats['A_PTS_Trend'] = [(a-b)*1.0/b for a,b in zip(team_stats['A_PTS_10'], team_stats['A_PTS_100'])]
team_stats


Out[28]:
Game_ID GAME_DATE Home Team Away Team H_PTS_10 A_PTS_10 H_BTB A_BTB H_PTS_100 A_PTS_100 H_PTS_Trend A_PTS_Trend
0 21401205.0 2015-04-13 ATL NYK 103.400000 87.700000 1.0 0.0 102.666667 89.125000 0.007143 -0.015989
1 21401176.0 2015-04-10 ATL CHA 104.100000 94.200000 0.0 0.0 102.333333 94.187500 0.017264 0.000133
2 21401154.0 2015-04-07 ATL PHX 103.600000 94.700000 0.0 0.0 103.928571 93.846154 -0.003162 0.009098
3 21401138.0 2015-04-04 ATL BKN 99.600000 106.400000 0.0 1.0 100.933333 103.562500 -0.013210 0.027399
4 21401103.0 2015-03-30 ATL MIL 99.800000 98.200000 0.0 0.0 101.000000 95.933333 -0.011881 0.023628
5 21401077.0 2015-03-27 ATL MIA 101.300000 97.800000 0.0 0.0 101.000000 98.500000 0.002970 -0.007107
6 21401039.0 2015-03-22 ATL SAS 103.300000 112.900000 0.0 0.0 100.133333 107.928571 0.031625 0.046062
7 21400939.0 2015-03-09 ATL SAC 96.800000 104.000000 0.0 0.0 96.000000 100.076923 0.008333 0.039201
8 21400915.0 2015-03-06 ATL CLE 99.000000 107.000000 0.0 0.0 99.545455 107.230769 -0.005479 -0.002152
9 21400892.0 2015-03-03 ATL HOU 99.100000 106.500000 0.0 0.0 99.181818 106.000000 -0.000825 0.004717
10 21400858.0 2015-02-27 ATL ORL 99.400000 95.000000 0.0 0.0 101.000000 95.454545 -0.015842 -0.004762
11 21400843.0 2015-02-25 ATL DAL 99.500000 100.200000 0.0 1.0 100.727273 99.071429 -0.012184 0.011391
12 21400805.0 2015-02-20 ATL TOR 104.300000 105.700000 0.0 0.0 104.666667 102.833333 -0.003503 0.027877
13 21400749.0 2015-02-06 ATL GSW 103.900000 118.500000 0.0 0.0 105.062500 116.600000 -0.011065 0.016295
14 21400732.0 2015-02-04 ATL WAS 104.400000 100.600000 0.0 0.0 105.187500 99.750000 -0.007487 0.008521
15 21400708.0 2015-01-31 ATL PHI 106.300000 87.100000 1.0 1.0 106.562500 88.235294 -0.002463 -0.012867
16 21400697.0 2015-01-30 ATL POR 107.800000 99.400000 0.0 0.0 106.666667 99.846154 0.010625 -0.004468
17 21400683.0 2015-01-28 ATL BKN 107.100000 90.500000 0.0 0.0 106.400000 92.000000 0.006579 -0.016304
18 21400661.0 2015-01-25 ATL MIN 105.500000 95.000000 0.0 0.0 103.187500 95.933333 0.022411 -0.009729
19 21400642.0 2015-01-23 ATL OKC 105.900000 107.300000 0.0 0.0 103.200000 107.076923 0.026163 0.002083
20 21400628.0 2015-01-21 ATL IND 106.400000 95.300000 0.0 0.0 103.125000 97.600000 0.031758 -0.023566
21 21400613.0 2015-01-19 ATL DET 106.900000 103.800000 0.0 0.0 103.812500 105.285714 0.029741 -0.014111
22 21400558.0 2015-01-11 ATL WAS 101.000000 97.400000 0.0 0.0 101.333333 98.466667 -0.003289 -0.010833
23 21400526.0 2015-01-07 ATL MEM 103.900000 100.400000 0.0 0.0 101.400000 104.000000 0.024655 -0.034615
24 21400466.0 2014-12-30 ATL CLE 98.400000 99.700000 0.0 0.0 100.466667 101.200000 -0.020571 -0.014822
25 21400434.0 2014-12-26 ATL MIL 102.100000 103.200000 0.0 0.0 103.750000 103.571429 -0.015904 -0.003586
26 21400420.0 2014-12-23 ATL LAC 101.200000 109.100000 1.0 1.0 103.687500 109.058824 -0.023990 0.000378
27 21400358.0 2014-12-15 ATL CHI 100.900000 106.300000 0.0 1.0 102.133333 102.357143 -0.012076 0.038521
28 21400330.0 2014-12-12 ATL ORL 104.400000 91.300000 0.0 0.0 104.000000 94.125000 0.003846 -0.030013
29 21400319.0 2014-12-10 ATL PHI 104.800000 95.400000 0.0 0.0 103.733333 91.230769 0.010283 0.045700
... ... ... ... ... ... ... ... ... ... ... ... ...
2430 21500860.0 2016-02-25 UTA SAS 101.700000 108.700000 0.0 1.0 101.833333 110.000000 -0.001309 -0.011818
2431 21500843.0 2016-02-23 UTA HOU 100.300000 107.500000 0.0 0.0 99.750000 108.181818 0.005514 -0.006303
2432 21500817.0 2016-02-19 UTA BOS 97.500000 113.500000 1.0 0.0 99.500000 112.769231 -0.020101 0.006480
2433 21500758.0 2016-02-05 UTA MIL 103.500000 99.300000 0.0 0.0 99.733333 98.857143 0.037767 0.004480
2434 21500743.0 2016-02-03 UTA DEN 103.500000 107.500000 0.0 0.0 100.133333 103.142857 0.033622 0.042244
2435 21500728.0 2016-02-01 UTA CHI 101.600000 98.600000 0.0 1.0 99.266667 101.600000 0.023506 -0.029528
2436 21500704.0 2016-01-29 UTA MIN 101.100000 102.600000 0.0 0.0 98.437500 97.937500 0.027048 0.047607
2437 21500690.0 2016-01-27 UTA CHA 100.300000 104.600000 0.0 0.0 98.000000 103.625000 0.023469 0.009409
2438 21500673.0 2016-01-25 UTA DET 100.900000 105.400000 0.0 0.0 98.750000 102.857143 0.021772 0.024722
2439 21500608.0 2016-01-16 UTA LAL 93.400000 98.300000 0.0 0.0 95.000000 95.250000 -0.016842 0.032021
2440 21500591.0 2016-01-14 UTA SAC 92.800000 111.500000 1.0 1.0 94.533333 108.571429 -0.018336 0.026974
2441 21500555.0 2016-01-09 UTA MIA 95.800000 98.800000 0.0 1.0 94.533333 99.062500 0.013399 -0.002650
2442 21500518.0 2016-01-04 UTA HOU 94.700000 103.800000 0.0 0.0 97.933333 107.066667 -0.033016 -0.030511
2443 21500503.0 2016-01-02 UTA MEM 95.300000 97.600000 0.0 0.0 98.066667 95.600000 -0.028212 0.020921
2444 21500489.0 2015-12-31 UTA POR 93.400000 100.700000 1.0 1.0 97.285714 102.812500 -0.039941 -0.020547
2445 21500467.0 2015-12-28 UTA PHI 97.100000 94.800000 0.0 0.0 99.357143 93.000000 -0.022717 0.019355
2446 21500452.0 2015-12-26 UTA LAC 98.900000 100.900000 0.0 1.0 99.000000 101.533333 -0.001010 -0.006238
2447 21500417.0 2015-12-21 UTA PHX 99.100000 100.900000 0.0 1.0 98.692308 103.470588 0.004131 -0.024844
2448 21500395.0 2015-12-18 UTA DEN 99.500000 95.000000 0.0 0.0 98.000000 96.714286 0.015306 -0.017725
2449 21500380.0 2015-12-16 UTA NOP 100.300000 101.100000 0.0 0.0 98.307692 102.714286 0.020266 -0.015716
2450 21500341.0 2015-12-11 UTA OKC 100.900000 105.600000 0.0 1.0 99.230769 104.785714 0.016822 0.007771
2451 21500327.0 2015-12-09 UTA NYK 100.000000 95.300000 1.0 0.0 99.846154 95.866667 0.001541 -0.005911
2452 21500297.0 2015-12-05 UTA IND 95.600000 108.700000 0.0 0.0 96.538462 105.461538 -0.009721 0.030708
2453 21500279.0 2015-12-03 UTA ORL 97.600000 102.000000 0.0 0.0 96.384615 101.200000 0.012610 0.007905
2454 21500259.0 2015-11-30 UTA GSW 96.200000 116.500000 0.0 0.0 95.923077 116.312500 0.002887 0.001612
2455 21500243.0 2015-11-28 UTA NOP 95.700000 102.300000 0.0 1.0 95.769231 103.571429 -0.000723 -0.012276
2456 21500208.0 2015-11-23 UTA OKC 95.500000 106.300000 0.0 1.0 95.083333 109.714286 0.004382 -0.031120
2457 21500173.0 2015-11-18 UTA TOR 95.500000 101.300000 0.0 1.0 95.500000 102.666667 0.000000 -0.013312
2458 21500091.0 2015-11-07 UTA MEM 94.200000 92.833333 0.0 0.0 94.200000 92.833333 0.000000 0.000000
2459 21500068.0 2015-11-04 UTA POR 94.333333 100.000000 0.0 0.0 94.333333 100.000000 0.000000 0.000000

2460 rows × 12 columns


In [46]:
print len(team_stats)
h_stats = team_stats[['Game_ID', 'GAME_DATE', 'Home Team', 'H_PTS_Trend', 'H_BTB']].rename(index = str, columns={'Home Team':'Team', 'H_PTS_Trend':'PTS_Trend', 'H_BTB':'BTB'})
print len(h_stats)
a_stats = team_stats[['Game_ID', 'GAME_DATE', 'Away Team', 'A_PTS_Trend', 'A_BTB']].rename(index = str, columns={'Away Team':'Team', 'A_PTS_Trend':'PTS_Trend', 'A_BTB':'BTB'})
print len(a_stats)
team_stats_sep = h_stats.append(a_stats).reset_index(drop=True)
print len(team_stats_sep)


2460
2460
2460
4920

In [59]:
game_logs


Out[59]:
SEASON_ID Player_ID Game_ID GAME_DATE MATCHUP WL MIN FGM FGA FG_PCT ... AST STL BLK TOV PF PTS PLUS_MINUS VIDEO_AVAILABLE PTS_MIN Team
5047 22015.0 2037.0 21501196.0 2016-04-10 LAC vs. DAL W 26.0 7.0 13.0 0.538 ... 2.0 1.0 0.0 2.0 1.0 22.0 6.0 1.0 0.846154 LAC
5048 22015.0 2037.0 21501187.0 2016-04-08 LAC @ UTA W 49.0 9.0 20.0 0.450 ... 4.0 1.0 1.0 1.0 3.0 30.0 6.0 1.0 0.612245 LAC
5049 22015.0 2037.0 21501164.0 2016-04-05 LAC vs. LAL W 18.0 2.0 6.0 0.333 ... 1.0 1.0 0.0 3.0 2.0 4.0 -5.0 1.0 0.222222 LAC
5050 22015.0 2037.0 21501147.0 2016-04-03 LAC vs. WAS W 25.0 6.0 12.0 0.500 ... 6.0 0.0 0.0 2.0 2.0 19.0 1.0 1.0 0.760000 LAC
5051 22015.0 2037.0 21501126.0 2016-03-31 LAC @ OKC L 40.0 10.0 20.0 0.500 ... 7.0 2.0 1.0 3.0 0.0 32.0 -9.0 1.0 0.800000 LAC
5052 22015.0 2037.0 21501116.0 2016-03-30 LAC @ MIN W 18.0 3.0 6.0 0.500 ... 1.0 2.0 0.0 0.0 0.0 10.0 15.0 1.0 0.555556 LAC
5053 22015.0 2037.0 21501106.0 2016-03-28 LAC vs. BOS W 29.0 5.0 12.0 0.417 ... 2.0 1.0 0.0 3.0 2.0 15.0 19.0 1.0 0.517241 LAC
5054 22015.0 2037.0 21501092.0 2016-03-27 LAC vs. DEN W 21.0 3.0 8.0 0.375 ... 2.0 0.0 0.0 1.0 0.0 14.0 1.0 1.0 0.666667 LAC
5055 22015.0 2037.0 21501072.0 2016-03-24 LAC vs. POR W 33.0 11.0 21.0 0.524 ... 2.0 1.0 0.0 1.0 2.0 25.0 11.0 1.0 0.757576 LAC
5056 22015.0 2037.0 21501066.0 2016-03-23 LAC @ GSW L 32.0 4.0 11.0 0.364 ... 6.0 2.0 1.0 2.0 1.0 12.0 -4.0 1.0 0.375000 LAC
5057 22015.0 2037.0 21501040.0 2016-03-20 LAC @ NOP L 33.0 5.0 12.0 0.417 ... 3.0 1.0 0.0 3.0 4.0 14.0 6.0 1.0 0.424242 LAC
5058 22015.0 2037.0 21501035.0 2016-03-19 LAC @ MEM L 28.0 2.0 9.0 0.222 ... 1.0 1.0 0.0 0.0 2.0 7.0 1.0 1.0 0.250000 LAC
5059 22015.0 2037.0 21501009.0 2016-03-16 LAC @ HOU W 27.0 4.0 9.0 0.444 ... 7.0 1.0 1.0 0.0 1.0 14.0 9.0 1.0 0.518519 LAC
5060 22015.0 2037.0 21501001.0 2016-03-15 LAC @ SAS L 22.0 1.0 9.0 0.111 ... 3.0 0.0 0.0 0.0 2.0 6.0 -20.0 1.0 0.272727 LAC
5061 22015.0 2037.0 21500983.0 2016-03-13 LAC vs. CLE L 25.0 3.0 11.0 0.273 ... 1.0 0.0 0.0 2.0 2.0 8.0 -27.0 1.0 0.320000 LAC
5062 22015.0 2037.0 21500972.0 2016-03-11 LAC vs. NYK W 19.0 4.0 13.0 0.308 ... 1.0 0.0 0.0 1.0 2.0 10.0 -9.0 1.0 0.526316 LAC
5063 22015.0 2037.0 21500955.0 2016-03-09 LAC @ OKC L 27.0 6.0 12.0 0.500 ... 2.0 1.0 0.0 1.0 0.0 16.0 -8.0 1.0 0.592593 LAC
5064 22015.0 2037.0 21500942.0 2016-03-07 LAC @ DAL W 29.0 5.0 15.0 0.333 ... 3.0 1.0 0.0 0.0 2.0 15.0 24.0 1.0 0.517241 LAC
5065 22015.0 2037.0 21500929.0 2016-03-05 LAC vs. ATL L 29.0 2.0 7.0 0.286 ... 1.0 1.0 0.0 2.0 1.0 5.0 -5.0 1.0 0.172414 LAC
5066 22015.0 2037.0 21500907.0 2016-03-02 LAC vs. OKC W 32.0 5.0 14.0 0.357 ... 2.0 1.0 0.0 0.0 0.0 12.0 7.0 1.0 0.375000 LAC
5067 22015.0 2037.0 21500890.0 2016-02-29 LAC vs. BKN W 25.0 10.0 17.0 0.588 ... 1.0 2.0 0.0 3.0 4.0 26.0 11.0 1.0 1.040000 LAC
5068 22015.0 2037.0 21500867.0 2016-02-26 LAC @ SAC W 26.0 7.0 19.0 0.368 ... 0.0 0.0 0.0 0.0 1.0 21.0 -3.0 1.0 0.807692 LAC
5069 22015.0 2037.0 21500853.0 2016-02-24 LAC vs. DEN L 28.0 8.0 18.0 0.444 ... 1.0 0.0 0.0 1.0 3.0 20.0 -1.0 1.0 0.714286 LAC
5070 22015.0 2037.0 21500839.0 2016-02-22 LAC vs. PHX W 17.0 0.0 4.0 0.000 ... 0.0 0.0 0.0 1.0 1.0 2.0 -2.0 1.0 0.117647 LAC
5071 22015.0 2037.0 21500822.0 2016-02-20 LAC vs. GSW L 38.0 7.0 18.0 0.389 ... 3.0 3.0 0.0 2.0 1.0 25.0 -11.0 1.0 0.657895 LAC
5072 22015.0 2037.0 21500804.0 2016-02-18 LAC vs. SAS W 30.0 7.0 15.0 0.467 ... 6.0 0.0 0.0 7.0 1.0 19.0 6.0 1.0 0.633333 LAC
5073 22015.0 2037.0 21500792.0 2016-02-10 LAC @ BOS L 38.0 4.0 17.0 0.235 ... 4.0 0.0 0.0 2.0 3.0 18.0 4.0 1.0 0.473684 LAC
5074 22015.0 2037.0 21500777.0 2016-02-08 LAC @ PHI W 39.0 9.0 21.0 0.429 ... 3.0 2.0 0.0 1.0 1.0 23.0 11.0 1.0 0.589744 LAC
5075 22015.0 2037.0 21500772.0 2016-02-07 LAC @ MIA W 34.0 7.0 19.0 0.368 ... 2.0 0.0 0.0 1.0 1.0 20.0 8.0 1.0 0.588235 LAC
5076 22015.0 2037.0 21500752.0 2016-02-05 LAC @ ORL W 35.0 8.0 14.0 0.571 ... 2.0 3.0 1.0 4.0 4.0 20.0 9.0 1.0 0.571429 LAC
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
5096 22015.0 2037.0 21500440.0 2015-12-25 LAC @ LAL W 20.0 4.0 10.0 0.400 ... 0.0 1.0 0.0 1.0 1.0 13.0 -5.0 1.0 0.650000 LAC
5097 22015.0 2037.0 21500418.0 2015-12-21 LAC vs. OKC L 24.0 4.0 10.0 0.400 ... 0.0 0.0 0.0 0.0 3.0 8.0 0.0 1.0 0.333333 LAC
5098 22015.0 2037.0 21500401.0 2015-12-19 LAC @ HOU L 31.0 1.0 8.0 0.125 ... 1.0 0.0 1.0 1.0 4.0 4.0 7.0 1.0 0.129032 LAC
5099 22015.0 2037.0 21500393.0 2015-12-18 LAC @ SAS L 17.0 0.0 3.0 0.000 ... 3.0 0.0 1.0 0.0 2.0 0.0 -10.0 1.0 0.000000 LAC
5100 22015.0 2037.0 21500382.0 2015-12-16 LAC vs. MIL W 21.0 0.0 3.0 0.000 ... 1.0 1.0 0.0 1.0 1.0 2.0 3.0 1.0 0.095238 LAC
5101 22015.0 2037.0 21500359.0 2015-12-14 LAC @ DET W 26.0 5.0 8.0 0.625 ... 4.0 1.0 0.0 1.0 0.0 14.0 -3.0 1.0 0.538462 LAC
5102 22015.0 2037.0 21500344.0 2015-12-12 LAC @ BKN W 25.0 4.0 8.0 0.500 ... 3.0 2.0 0.0 2.0 3.0 9.0 -3.0 1.0 0.360000 LAC
5103 22015.0 2037.0 21500330.0 2015-12-10 LAC @ CHI L 22.0 1.0 5.0 0.200 ... 2.0 0.0 0.0 1.0 0.0 2.0 -11.0 1.0 0.090909 LAC
5104 22015.0 2037.0 21500324.0 2015-12-09 LAC @ MIL W 22.0 3.0 11.0 0.273 ... 0.0 0.0 0.0 1.0 0.0 8.0 -1.0 1.0 0.363636 LAC
5105 22015.0 2037.0 21500311.0 2015-12-07 LAC @ MIN W 27.0 5.0 11.0 0.455 ... 7.0 1.0 0.0 2.0 2.0 18.0 13.0 1.0 0.666667 LAC
5106 22015.0 2037.0 21500298.0 2015-12-05 LAC vs. ORL W 31.0 10.0 19.0 0.526 ... 5.0 0.0 0.0 1.0 3.0 32.0 7.0 1.0 1.032258 LAC
5107 22015.0 2037.0 21500276.0 2015-12-02 LAC vs. IND L 37.0 5.0 16.0 0.313 ... 3.0 0.0 0.0 4.0 5.0 16.0 -10.0 0.0 0.432432 LAC
5108 22015.0 2037.0 21500261.0 2015-11-30 LAC vs. POR W 23.0 4.0 10.0 0.400 ... 4.0 1.0 0.0 0.0 2.0 11.0 0.0 1.0 0.478261 LAC
5109 22015.0 2037.0 21500247.0 2015-11-29 LAC vs. MIN W 15.0 0.0 4.0 0.000 ... 2.0 0.0 0.0 3.0 1.0 0.0 -1.0 1.0 0.000000 LAC
5110 22015.0 2037.0 21500238.0 2015-11-27 LAC vs. NOP W 27.0 2.0 8.0 0.250 ... 0.0 1.0 0.0 3.0 0.0 9.0 7.0 1.0 0.333333 LAC
5111 22015.0 2037.0 21500226.0 2015-11-25 LAC vs. UTA L 30.0 1.0 9.0 0.111 ... 2.0 0.0 0.0 2.0 1.0 3.0 -2.0 1.0 0.100000 LAC
5112 22015.0 2037.0 21500212.0 2015-11-24 LAC @ DEN W 24.0 4.0 9.0 0.444 ... 2.0 1.0 0.0 0.0 1.0 15.0 7.0 1.0 0.625000 LAC
5113 22015.0 2037.0 21500196.0 2015-11-22 LAC vs. TOR L 29.0 1.0 9.0 0.111 ... 2.0 1.0 0.0 1.0 1.0 8.0 1.0 1.0 0.275862 LAC
5114 22015.0 2037.0 21500186.0 2015-11-20 LAC @ POR L 27.0 6.0 15.0 0.400 ... 1.0 0.0 0.0 1.0 2.0 20.0 -5.0 1.0 0.740741 LAC
5115 22015.0 2037.0 21500177.0 2015-11-19 LAC vs. GSW L 40.0 6.0 16.0 0.375 ... 2.0 0.0 0.0 2.0 5.0 15.0 -9.0 1.0 0.375000 LAC
5116 22015.0 2037.0 21500138.0 2015-11-14 LAC vs. DET W 41.0 12.0 27.0 0.444 ... 8.0 0.0 1.0 3.0 4.0 37.0 21.0 1.0 0.902439 LAC
5117 22015.0 2037.0 21500126.0 2015-11-12 LAC @ PHX L 25.0 7.0 14.0 0.500 ... 2.0 3.0 0.0 5.0 2.0 18.0 -8.0 1.0 0.720000 LAC
5118 22015.0 2037.0 21500118.0 2015-11-11 LAC @ DAL L 29.0 3.0 8.0 0.375 ... 1.0 0.0 0.0 1.0 4.0 11.0 -9.0 1.0 0.379310 LAC
5119 22015.0 2037.0 21500105.0 2015-11-09 LAC vs. MEM W 20.0 2.0 7.0 0.286 ... 1.0 0.0 0.0 2.0 0.0 13.0 19.0 1.0 0.650000 LAC
5120 22015.0 2037.0 21500093.0 2015-11-07 LAC vs. HOU L 19.0 1.0 3.0 0.333 ... 4.0 1.0 0.0 3.0 0.0 2.0 -1.0 1.0 0.105263 LAC
5121 22015.0 2037.0 21500069.0 2015-11-04 LAC @ GSW L 20.0 4.0 15.0 0.267 ... 1.0 1.0 0.0 0.0 0.0 8.0 -10.0 1.0 0.400000 LAC
5122 22015.0 2037.0 21500052.0 2015-11-02 LAC vs. PHX W 26.0 2.0 8.0 0.250 ... 3.0 1.0 0.0 0.0 2.0 11.0 8.0 1.0 0.423077 LAC
5123 22015.0 2037.0 21500038.0 2015-10-31 LAC vs. SAC W 23.0 3.0 10.0 0.300 ... 0.0 0.0 0.0 0.0 1.0 10.0 -11.0 1.0 0.434783 LAC
5124 22015.0 2037.0 21500020.0 2015-10-29 LAC vs. DAL W 17.0 6.0 11.0 0.545 ... 2.0 0.0 0.0 0.0 0.0 15.0 12.0 1.0 0.882353 LAC
5125 22015.0 2037.0 21500016.0 2015-10-28 LAC @ SAC W 21.0 5.0 9.0 0.556 ... 1.0 1.0 0.0 0.0 2.0 11.0 -5.0 1.0 0.523810 LAC

79 rows × 29 columns


In [60]:
all_game_logs['Team'] = [a[0:3] for a in all_game_logs['MATCHUP']]
all_game_logs['GAME_DATE'] = pd.to_datetime(all_game_logs['GAME_DATE'])
team_stats_sep['GAME_DATE'] = pd.to_datetime(team_stats_sep['GAME_DATE'])
team_data = pd.merge(all_game_logs, team_stats_sep, on=['Team', 'GAME_DATE'])
print len(all_game_logs), len(team_stats_sep), len(team_data)


25417 4920 25417

In [55]:
team_data.columns


Out[55]:
Index([u'SEASON_ID', u'Player_ID', u'Game_ID_x', u'GAME_DATE', u'MATCHUP',
       u'WL', u'MIN', u'FGM', u'FGA', u'FG_PCT', u'FG3M', u'FG3A', u'FG3_PCT',
       u'FTM', u'FTA', u'FT_PCT', u'OREB', u'DREB', u'REB', u'AST', u'STL',
       u'BLK', u'TOV', u'PF', u'PTS', u'PLUS_MINUS', u'VIDEO_AVAILABLE',
       u'PTS_MIN', u'Team', u'Game_ID_y', u'PTS_Trend', u'BTB'],
      dtype='object')

In [61]:
cor = pd.DataFrame()
feature_list = ['PTS_Trend', 'BTB']
for f in feature_list:
    cor.set_value('PTS', f, np.corrcoef(x=team_data[f], y=team_data['PTS'])[0,1])
cor


Out[61]:
PTS_Trend BTB
PTS -0.000703 -0.001779

In [62]:
%matplotlib inline
x=team_data['PTS_Trend']
y=team_data['PTS']
import matplotlib.pyplot as plt
plt.scatter(x, y, alpha=0.5)
plt.show


Out[62]:
<function matplotlib.pyplot.show>

In [63]:
%matplotlib inline
x=team_data['BTB']
y=team_data['PTS']
import matplotlib.pyplot as plt
plt.scatter(x, y, alpha=0.5)
plt.show


Out[63]:
<function matplotlib.pyplot.show>

In [79]:
print len(Player_List)
min_list = []
for p in Player_List:
    minutes = np.mean(Player_List[p].game_logs['MIN'])
    if not np.isnan(minutes):
        min_list.append(minutes)
min_list


450
Out[79]:
[30.07547169811321,
 30.397058823529413,
 15.567567567567568,
 4.5,
 11.709090909090909,
 20.551724137931036,
 9.692307692307692,
 4.571428571428571,
 8.518518518518519,
 30.527027027027028,
 2.0,
 28.2125,
 31.951219512195124,
 13.764705882352942,
 20.246913580246915,
 34.02857142857143,
 21.37878787878788,
 10.65079365079365,
 21.14814814814815,
 27.763157894736842,
 23.4,
 12.31578947368421,
 22.783333333333335,
 17.2875,
 23.08219178082192,
 16.592105263157894,
 17.79032258064516,
 4.2,
 35.236111111111114,
 8.529411764705882,
 3.625,
 6.0,
 24.25,
 7.923076923076923,
 14.857142857142858,
 4.666666666666667,
 14.148148148148149,
 4.3,
 30.975609756097562,
 15.125,
 4.264705882352941,
 21.25,
 10.131578947368421,
 32.67901234567901,
 20.126984126984127,
 14.711538461538462,
 17.873417721518987,
 6.7,
 10.352941176470589,
 6.9655172413793105,
 22.513513513513512,
 3.5,
 10.258064516129032,
 9.407407407407407,
 24.0,
 25.34375,
 11.676470588235293,
 26.061728395061728,
 28.876543209876544,
 24.5,
 31.875,
 22.17142857142857,
 33.370370370370374,
 16.339622641509433,
 17.91891891891892,
 29.691176470588236,
 27.48611111111111,
 10.777777777777779,
 27.097560975609756,
 8.86111111111111,
 28.67948717948718,
 24.285714285714285,
 27.96,
 14.962962962962964,
 35.39344262295082,
 29.285714285714285,
 31.072727272727274,
 27.653846153846153,
 12.887323943661972,
 35.64,
 23.986301369863014,
 32.888888888888886,
 30.954545454545453,
 21.865671641791046,
 21.81967213114754,
 18.575757575757574,
 13.3,
 16.82456140350877,
 18.641025641025642,
 11.9,
 20.94,
 14.660714285714286,
 32.50632911392405,
 23.666666666666668,
 11.093023255813954,
 18.125,
 14.245901639344263,
 22.64516129032258,
 10.133333333333333,
 16.695652173913043,
 19.228070175438596,
 31.643835616438356,
 34.65432098765432,
 14.864406779661017,
 36.139240506329116,
 28.71951219512195,
 15.293333333333333,
 14.285714285714286,
 18.98701298701299,
 11.692307692307692,
 12.8,
 37.05194805194805,
 28.01298701298701,
 21.303797468354432,
 13.813559322033898,
 28.81578947368421,
 27.76,
 9.27450980392157,
 21.17241379310345,
 21.513157894736842,
 18.785714285714285,
 33.083333333333336,
 10.923076923076923,
 12.242857142857142,
 35.791666666666664,
 32.13414634146341,
 31.321428571428573,
 32.770270270270274,
 20.365853658536587,
 17.75,
 21.93103448275862,
 18.105263157894736,
 14.50943396226415,
 21.96551724137931,
 19.185185185185187,
 24.558823529411764,
 15.526315789473685,
 18.5,
 16.08695652173913,
 33.33802816901409,
 16.055555555555557,
 7.827586206896552,
 15.833333333333334,
 14.19047619047619,
 34.46153846153846,
 20.329268292682926,
 35.63157894736842,
 5.0,
 33.54716981132076,
 30.513513513513512,
 7.0625,
 13.695652173913043,
 11.864406779661017,
 18.03846153846154,
 42.0,
 18.19736842105263,
 14.64864864864865,
 15.867647058823529,
 19.848484848484848,
 18.583333333333332,
 17.017241379310345,
 26.38157894736842,
 6.866666666666666,
 9.365853658536585,
 18.24390243902439,
 9.6875,
 30.025,
 13.027777777777779,
 7.0,
 28.2125,
 15.320987654320987,
 33.054794520547944,
 32.12676056338028,
 19.384615384615383,
 19.953125,
 32.36486486486486,
 26.692307692307693,
 15.773584905660377,
 23.319148936170212,
 15.963636363636363,
 30.74025974025974,
 26.615384615384617,
 29.29850746268657,
 23.32051282051282,
 19.87272727272727,
 14.68421052631579,
 19.526315789473685,
 21.235294117647058,
 9.320754716981131,
 34.7,
 24.28767123287671,
 20.175,
 12.224137931034482,
 35.30864197530864,
 25.558441558441558,
 12.882352941176471,
 20.231884057971016,
 36.69736842105263,
 7.5,
 25.451219512195124,
 30.537037037037038,
 9.45,
 30.293333333333333,
 11.54054054054054,
 28.388059701492537,
 31.639344262295083,
 20.463414634146343,
 22.46153846153846,
 25.2375,
 16.92156862745098,
 20.3125,
 21.265625,
 20.742857142857144,
 35.3125,
 10.125,
 27.375,
 10.709677419354838,
 17.085714285714285,
 32.41538461538462,
 14.909090909090908,
 24.592105263157894,
 22.565217391304348,
 14.694915254237289,
 18.530864197530864,
 32.09375,
 17.677966101694917,
 25.577464788732396,
 16.436363636363637,
 20.333333333333332,
 22.921875,
 25.43243243243243,
 33.74074074074074,
 8.772727272727273,
 28.52238805970149,
 15.772727272727273,
 22.759493670886076,
 30.066666666666666,
 19.516129032258064,
 28.13888888888889,
 11.116279069767442,
 14.846153846153847,
 14.619047619047619,
 14.885245901639344,
 18.0,
 26.536585365853657,
 31.742424242424242,
 34.3625,
 31.48051948051948,
 34.660377358490564,
 32.91111111111111,
 19.06451612903226,
 33.68493150684932,
 28.96153846153846,
 10.02127659574468,
 14.583333333333334,
 27.0609756097561,
 11.61111111111111,
 23.22222222222222,
 10.823529411764707,
 12.485714285714286,
 14.610169491525424,
 30.46969696969697,
 29.59493670886076,
 19.076923076923077,
 32.1025641025641,
 35.02857142857143,
 34.13513513513514,
 21.67142857142857,
 13.0,
 33.76623376623377,
 17.36764705882353,
 16.973333333333333,
 32.791666666666664,
 3.76,
 13.647058823529411,
 35.125,
 28.196969696969695,
 19.893939393939394,
 5.333333333333333,
 14.745454545454546,
 10.872727272727273,
 8.863636363636363,
 27.98780487804878,
 14.282608695652174,
 15.919354838709678,
 28.733333333333334,
 32.35443037974684,
 8.892857142857142,
 6.324324324324325,
 7.260869565217392,
 32.10526315789474,
 13.25,
 24.794520547945204,
 32.21518987341772,
 7.5,
 8.941176470588236,
 11.355555555555556,
 6.862068965517241,
 26.857142857142858,
 22.938271604938272,
 19.774193548387096,
 23.858974358974358,
 22.659574468085108,
 11.257142857142858,
 27.311475409836067,
 15.987179487179487,
 14.434782608695652,
 9.346153846153847,
 15.038461538461538,
 28.234567901234566,
 5.722222222222222,
 13.030303030303031,
 6.414634146341464,
 35.098765432098766,
 31.67105263157895,
 4.875,
 3.6,
 15.972602739726028,
 5.75,
 11.0,
 5.857142857142857,
 33.457142857142856,
 38.0609756097561,
 30.56,
 30.539473684210527,
 34.24050632911393,
 20.671232876712327,
 35.94871794871795,
 19.064935064935064,
 19.916666666666668,
 7.863636363636363,
 7.95,
 16.210526315789473,
 28.138461538461538,
 21.424242424242426,
 28.569620253164558,
 28.430555555555557,
 29.945945945945947,
 27.28985507246377,
 26.506849315068493,
 30.26923076923077,
 21.236842105263158,
 20.721311475409838,
 6.176470588235294,
 8.424242424242424,
 24.6625,
 23.944444444444443,
 15.102564102564102,
 14.666666666666666,
 28.690140845070424,
 14.549019607843137,
 14.090909090909092,
 26.11392405063291,
 20.48148148148148,
 24.78048780487805,
 18.104166666666668,
 15.296296296296296,
 17.09375,
 5.615384615384615,
 7.166666666666667,
 21.6625,
 17.571428571428573,
 6.545454545454546,
 24.375,
 33.85897435897436,
 22.356164383561644,
 25.147540983606557,
 18.19672131147541,
 12.692307692307692,
 25.901234567901234,
 36.142857142857146,
 28.012345679012345,
 32.04838709677419,
 20.8,
 34.52307692307692,
 29.31645569620253,
 28.5609756097561,
 36.1125,
 34.901234567901234,
 13.333333333333334,
 20.790123456790123,
 25.531645569620252,
 18.0,
 11.041666666666666,
 34.12903225806452,
 33.36842105263158,
 14.098039215686274,
 20.645569620253166,
 20.043478260869566,
 6.75,
 29.068493150684933,
 17.966666666666665,
 19.869565217391305,
 8.266666666666667,
 21.57377049180328,
 17.473684210526315,
 26.243589743589745,
 29.09090909090909,
 19.864197530864196,
 16.816666666666666,
 31.493333333333332,
 18.16176470588235,
 4.0,
 22.271186440677965,
 13.235294117647058,
 11.820512820512821,
 17.47222222222222,
 16.8,
 19.603448275862068,
 32.26829268292683,
 31.41509433962264,
 17.9875,
 20.975609756097562,
 27.658536585365855,
 25.966666666666665,
 22.073170731707318,
 36.0,
 35.617283950617285,
 33.2625,
 25.741935483870968,
 25.46875,
 35.65,
 33.06944444444444,
 31.353846153846153,
 24.425925925925927,
 33.0921052631579,
 14.783783783783784,
 25.328358208955223,
 25.0,
 30.68354430379747,
 27.727272727272727,
 26.644444444444446,
 25.6625,
 36.91044776119403,
 26.759493670886076,
 14.441176470588236,
 20.326923076923077,
 29.524590163934427,
 18.776119402985074,
 6.375,
 20.265822784810126,
 21.440677966101696,
 7.914893617021277,
 26.911392405063292]

In [80]:
#plt.hist(min_list, bins=np.arange(np.min(min_list), np.max(min_list)+1))
plt.hist(min_list)


Out[80]:
(array([ 19.,  39.,  45.,  71.,  75.,  49.,  54.,  59.,  31.,   2.]),
 array([  2.,   6.,  10.,  14.,  18.,  22.,  26.,  30.,  34.,  38.,  42.]),
 <a list of 10 Patch objects>)

In [ ]: