繁体   English   中英

使用 Pandas 转换 NBA API 数据时出现回溯错误

[英]Traceback Error when Using Pandas to Convert NBA API data

我正在使用 Pandas 将 NBA API JSON 格式转换为 csv,并且出现回溯错误。 现在我会注意到几天前我遇到了另一个追溯错误,但这次不同。

这个错误让我很困扰,特别是因为相同的代码在程序的早期工作。 这是控制台中的错误:Traceback(最近一次调用最后一次):

  File "nbagamestats.py", line 48, in <module>
    dfLoop.columns = headersLoop
  File "C:\Users\*\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pandas\core\generic.py", line 5149, in __setattr__
    return object.__setattr__(self, name, value)
  File "pandas\_libs\properties.pyx", line 66, in pandas._libs.properties.AxisProperty.__set__
  File "C:\Users\*\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pandas\core\generic.py", line 564, in _set_axis
    self._mgr.set_axis(axis, labels)
  File "C:\Users\*\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pandas\core\internals\managers.py", line 226, in set_axis
    raise ValueError(
ValueError: Length mismatch: Expected axis has 0 elements, new values have 24 elements

另外,这里是我写的所有代码:

from nba_api.stats.endpoints import boxscoretraditionalv2
from nba_api.stats.endpoints import shotchartdetail
import pandas as pd
import json
from openpyxl import Workbook

print('Game ID?')
gamenum = input()

### PART ONE - Player List###
response = boxscoretraditionalv2.BoxScoreTraditionalV2(
    end_period = 0,
    game_id= gamenum

)

content = json.loads(response.get_json())

# transform contents into dataframe
results = content['resultSets'][0]
headers = results['headers']
rows = results['rowSet']
df = pd.DataFrame(rows)
df.columns = headers

playerList = df['PLAYER_ID'].tolist()
print(playerList)


###PART TWO - Download Player Shotchart Data###
for i in playerList :
    filename = str(i) +'.xlsx'
    responseLoop = shotchartdetail.ShotChartDetail(
        team_id= 0,
        #last_n_games = numGames,
        game_id_nullable = gamenum,
        player_id= i
    )

    contentLoop = json.loads(responseLoop.get_json())

    # transform contents into dataframe
    resultsLoop = contentLoop['resultSets'][0]
    headersLoop = resultsLoop['headers']
    rowsLoop = resultsLoop['rowSet']
    dfLoop = pd.DataFrame(rowsLoop)
    dfLoop.columns = headersLoop

    # write to excel file
    dfLoop.to_excel(filename, index=False)
    print(i + ' has been written')

希望大家帮帮忙,谢谢。

好的,所以,要进入季后赛,您需要在那里添加该参数(或者我应该说将其从"Regular Season"的默认值更改。射手图仅返回已完成投篮,而不是错过投篮(再次因为默认值)。因此,如果您想要所有投篮尝试,您需要更改的另一个参数也列在下面:

from nba_api.stats.endpoints import boxscoretraditionalv2
from nba_api.stats.endpoints import shotchartdetail
import pandas as pd
import json
from openpyxl import Workbook

#print('Game ID?')
#gamenum = input()
gamenum = '0041900404'

### PART ONE - Player List###
response = boxscoretraditionalv2.BoxScoreTraditionalV2(
    end_period = 0,
    game_id= gamenum

)

content = json.loads(response.get_json())

# transform contents into dataframe
results = content['resultSets'][0]
headers = results['headers']
rows = results['rowSet']
df = pd.DataFrame(rows,columns=headers)

playerList = df['PLAYER_ID'].tolist()
print(playerList)



###PART TWO - Download Player Shotchart Data###
for i in playerList :
    filename = str(i) +'.xlsx'
    responseLoop = shotchartdetail.ShotChartDetail(
        team_id= 0,
        season_type_all_star = 'Playoffs', #<-- change to 'Playoffs' - default is 'Regular Season' I believe
        context_measure_simple = 'FGA', #<-- Default is 'PTS' and will only return made shots
        game_id_nullable = gamenum,
        player_id= i
    )

    contentLoop = json.loads(responseLoop.get_json())

    # transform contents into dataframe
    resultsLoop = contentLoop['resultSets'][0]
    headersLoop = resultsLoop['headers']
    rowsLoop = resultsLoop['rowSet']
    dfLoop = pd.DataFrame(rowsLoop,columns=headersLoop)

    # write to excel file
    dfLoop.to_excel(filename, index=False)
    print(str(i) + ' has been written')

输出示例:

print(dfLoop.to_string())
            GRID_TYPE     GAME_ID  GAME_EVENT_ID  PLAYER_ID   PLAYER_NAME     TEAM_ID           TEAM_NAME  PERIOD  MINUTES_REMAINING  SECONDS_REMAINING   EVENT_TYPE                     ACTION_TYPE       SHOT_TYPE    SHOT_ZONE_BASIC         SHOT_ZONE_AREA  SHOT_ZONE_RANGE  SHOT_DISTANCE  LOC_X  LOC_Y  SHOT_ATTEMPTED_FLAG  SHOT_MADE_FLAG GAME_DATE  HTM  VTM
0   Shot Chart Detail  0041900404             61       2544  LeBron James  1610612747  Los Angeles Lakers       1                  5                 57    Made Shot               Running Dunk Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              1     -9      6                    1               1  20201006  MIA  LAL
1   Shot Chart Detail  0041900404            151       2544  LeBron James  1610612747  Los Angeles Lakers       2                 11                 23  Missed Shot                      Layup Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              3     32     15                    1               0  20201006  MIA  LAL
2   Shot Chart Detail  0041900404            155       2544  LeBron James  1610612747  Los Angeles Lakers       2                 10                 42  Missed Shot                  Jump Bank Shot  2PT Field Goal          Mid-Range   Left Side Center(LC)        16-24 ft.             20   -129    161                    1               0  20201006  MIA  LAL
3   Shot Chart Detail  0041900404            176       2544  LeBron James  1610612747  Los Angeles Lakers       2                  9                  6    Made Shot              Driving Layup Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              0      3      6                    1               1  20201006  MIA  LAL
4   Shot Chart Detail  0041900404            187       2544  LeBron James  1610612747  Los Angeles Lakers       2                  8                 48    Made Shot               Driving Dunk Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              1      5      9                    1               1  20201006  MIA  LAL
5   Shot Chart Detail  0041900404            204       2544  LeBron James  1610612747  Los Angeles Lakers       2                  7                 25  Missed Shot              Driving Layup Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              3     29     14                    1               0  20201006  MIA  LAL
6   Shot Chart Detail  0041900404            272       2544  LeBron James  1610612747  Los Angeles Lakers       2                  2                 10  Missed Shot              Driving Layup Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              2    -29     -1                    1               0  20201006  MIA  LAL
7   Shot Chart Detail  0041900404            296       2544  LeBron James  1610612747  Los Angeles Lakers       2                  1                  3  Missed Shot                       Jump Shot  2PT Field Goal          Mid-Range  Right Side Center(RC)        16-24 ft.             18     66    169                    1               0  20201006  MIA  LAL
8   Shot Chart Detail  0041900404            349       2544  LeBron James  1610612747  Los Angeles Lakers       3                  8                 18    Made Shot                Pullup Jump shot  3PT Field Goal  Above the Break 3              Center(C)          24+ ft.             28    -20    286                    1               1  20201006  MIA  LAL
9   Shot Chart Detail  0041900404            362       2544  LeBron James  1610612747  Los Angeles Lakers       3                  7                 22    Made Shot  Cutting Finger Roll Layup Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              2      5     28                    1               1  20201006  MIA  LAL
10  Shot Chart Detail  0041900404            367       2544  LeBron James  1610612747  Los Angeles Lakers       3                  6                 44    Made Shot                Pullup Jump shot  3PT Field Goal  Above the Break 3              Center(C)          24+ ft.             27     -9    272                    1               1  20201006  MIA  LAL
11  Shot Chart Detail  0041900404            506       2544  LeBron James  1610612747  Los Angeles Lakers       4                  8                 47    Made Shot        Turnaround Fadeaway shot  2PT Field Goal          Mid-Range           Left Side(L)         8-16 ft.             13   -131     31                    1               1  20201006  MIA  LAL
12  Shot Chart Detail  0041900404            533       2544  LeBron James  1610612747  Los Angeles Lakers       4                  6                  8    Made Shot              Driving Layup Shot  2PT Field Goal    Restricted Area              Center(C)  Less Than 8 ft.              3    -28     28                    1               1  20201006  MIA  LAL
13  Shot Chart Detail  0041900404            540       2544  LeBron James  1610612747  Los Angeles Lakers       4                  5                 37  Missed Shot                Pullup Jump shot  3PT Field Goal  Above the Break 3   Left Side Center(LC)          24+ ft.             30   -131    274                    1               0  20201006  MIA  LAL
14  Shot Chart Detail  0041900404            548       2544  LeBron James  1610612747  Los Angeles Lakers       4                  4                 48  Missed Shot                Pullup Jump shot  3PT Field Goal  Above the Break 3   Left Side Center(LC)          24+ ft.             30    -98    286                    1               0  20201006  MIA  LAL
15  Shot Chart Detail  0041900404            568       2544  LeBron James  1610612747  Los Angeles Lakers       4                  3                 14  Missed Shot             Step Back Jump shot  3PT Field Goal  Above the Break 3   Left Side Center(LC)          24+ ft.             27   -168    217                    1               0  20201006  MIA  LAL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM