Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Help Finding Each Teams Rushing Yards Each Game #155

Open
theSanchize3 opened this issue May 22, 2016 · 2 comments
Open

Help Finding Each Teams Rushing Yards Each Game #155

theSanchize3 opened this issue May 22, 2016 · 2 comments

Comments

@theSanchize3
Copy link

theSanchize3 commented May 22, 2016

I'm trying to determine the strength of the association between wins a high amount of rushing yards. I made an empty list called over150 to store 'Y' or 'N' values depending on if the team had over 150 yards that game. I have another array called winLoss to store 'W' or 'L' values depending on if the team won. I have a list called teamsList with all the abbreviations of the teams. Finally, rushArray will combine over150 and winLoss so I can compare. I created counters for each combination of W/L and Y/N.

Here is what I have:

import nfldb

db = nfldb.connect()

over150 = []
winLoss = []
rushArray = []

teamRushYds = 0

teamRush = []

teamsList = ['ARI','STL','ATL','BAL','BUF','CAR','CHI','CIN','CLE','DAL','DEN','DET','GB','KC','HOU','IND','JAC','MIA','MIN','NE','NO','NYG','NYJ','OAK','PHI','PIT','SD','SF','SEA','TB','TEN','WAS']

for t in teamsList:
    for i in range(1,18):
        q = nfldb.Query(db)
        q.game(season_year=2015,season_type='Regular',week=i,team=t)
        q.play_player(team=t)
        pps = q.as_aggregate()
        teamRushYds = sum(pp.rushing_yds for pp in pps)
        if teamRushYds >= 150:
            over150.append('Y')
        elif teamRushYds < 150:
            over150.append('N')

        q = nfldb.Query(db)
        q.game(season_year=2015,season_type='Regular',week=i,team=t)
        for g in q.as_games():
            if g.home_team == t:
                if g.home_score > g.away_score:
                    winLoss.append('W')
                elif g.home_score < g.away_score:
                    winLoss.append('L')
                else:
                    winLoss.append('T')
            elif g.away_team == t:
                if g.home_score < g.away_score:
                    winLoss.append('W')
                elif g.home_score > g.away_score:
                    winLoss.append('L')
                else:
                    winLoss.append('T')


print over150
print len(over150)
print winLoss
print len(winLoss)

for k in xrange(len(over150)):
    rushArray.append([over150[k],winLoss[k]])

counterYW = 0
counterYL = 0
counterNW = 0
counterNL = 0

for pair in rushArray:
    if pair == ['Y','W']:
        counterYW += 1
    elif pair == ['Y','L']:
        counterYL += 1
    elif pair == ['N','W']:
        counterNW += 1
    elif pair == ['N','L']:
        counterNL += 1

print 'YW: ' + str(counterYW)
print 'YL: ' + str(counterYL)
print 'NW: ' + str(counterNW)
print 'NL: ' + str(counterNL)

counterYW counts the number of Wins with over 150 yards. counterYL counts the number of Losses with over 150 yards, etc.

The program does not run correctly, however, because over150 has 544 elements while winLoss has 512 (which it should). Is there any reason why over150 has 32 more elements than winLoss?

Please help,
Thanks

@ochawkeye
Copy link
Contributor

You are adding a "Y" or "N" to over150 17 times for each team. But each team has one bye week during the season and plays only 16 games.

Since there are 32 teams in the league, your over150 list is 32 elements longer than your winLoss list.

@ochawkeye
Copy link
Contributor

ochawkeye commented Nov 11, 2016

A version of what you were after that might give you some new ideas.

  • Note that this doesn't take into account that it is possible to tie in the NFL
import nfldb

def team_rushing_total(db, year, s_type, week, team):
    q = nfldb.Query(db)
    q.game(season_year=year, season_type=s_type, week=week, team=team)
    q.play_player(team=team)
    pps = q.as_aggregate()
    return sum(pp.rushing_yds for pp in pps)

counterYW = counterYL = counterNW = counterNL = 0

db = nfldb.connect()
q = nfldb.Query(db)
q.game(season_year=2015, season_type='Regular')
for game in q.as_games():
    if team_rushing_total(db, game.season_year, game.season_type, game.week, game.winner) > 150:
        counterYW += 1
    else:
        counterNW += 1

    if team_rushing_total(db, game.season_year, game.season_type, game.week, game.loser) > 150:
        counterYL += 1
    else:
        counterNL += 1

print 'YW: ' + str(counterYW)
print 'NW: ' + str(counterNW)
print 'YL: ' + str(counterYL)
print 'NL: ' + str(counterNL)
print '='*25
print 'Winners: {}'.format(counterYW+counterNW)
print 'Losers:  {}'.format(counterYL+counterNL)
YW: 74
NW: 182
YL: 22
NL: 234
=========================
Winners: 256
Losers:  256

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants