nfl_data_py icon indicating copy to clipboard operation
nfl_data_py copied to clipboard

Team Abbreviations don't match between imports

Open darkhark opened this issue 1 year ago • 1 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

Have you installed the latest development version of the package(s) in question?

  • [X] I have installed the latest development version of the package.

If this is a data issue, have you tried clearing your nflverse cache?

I have cleared my nflverse cache and the issue persists.

What version of the package do you have?

0.3.1

Describe the bug

The weekly stats and schedule stats use different team abbreviations for teams that moved. For example, in 1999, the chargers are SD in the schedule data, but are LAC in the weekly stats data. There may be more (like STL and LA) but I found this while attempting to merge the two datasets and noticed the chargers data was missing in 1999 - 2016.

Reprex

import nfl_data_py as nfl

weekly_df = nfl.import_weekly_data([1999, 2017])
schedule_df = nfl.import_schedules([1999, 2017])

print('Weekly Data')
print(weekly_df[weekly_df['opponent_team'] == 'LAC'][['season', 'opponent_team']])
print('-------------------')
print('Schedule Data')
print(schedule_df[schedule_df['away_team'] == 'LAC'][['season', 'away_team']])

Expected Behavior

I would expect all team abbreviations to be consistent between imports. Ideally, they would all use the team name at the time.

nflverse_sitrep

NA

Screenshots

No response

Additional context

This may be the desired outcome when this was written, but even if it is, it would be useful to have a parameter or something that can convert the team names to either what they were at the time or to the most recent names

darkhark avatar Jun 26 '24 02:06 darkhark

This is the case for SD -> LAC, STL -> LA, and OAK -> LV. It's not really a bug, it's just how the data is presented in the nflverse sources.

I've also gotten caught up on this before though, and I like the idea of a parameter to toggle the updates. I'll plan on adding that at some point.

Here's a quick conversion for anyone needing it in the meantime:

for col in ("recent_team", "opponent_team"):
    weekly_df.loc[(weekly_df[col] == "LA") & (weekly_df["season"] <= 2015), col] = "STL"
    weekly_df.loc[(weekly_df[col] == "LAC") & (weekly_df["season"] <= 2016), col] = "SD"
    weekly_df.loc[(weekly_df[col] == "LV") & (weekly_df["season"] <= 2019), col] = "OAK"

alecglen avatar Sep 20 '24 02:09 alecglen