CoderCastrov logo
CoderCastrov
NBA

Использование Python для парсинга статистики индивидуальных игроков NBA в менее чем 20 строк

Использование Python для парсинга статистики индивидуальных игроков NBA в менее чем 20 строк
просмотров
1 мин чтение
#NBA
Table Of Content

    Я сейчас занимаюсь анализом и визуализацией статистики NBA (Other Basketball Stats). Самым трудоемким этапом было для меня выяснить наилучший способ получения нужных мне данных из API статистики NBA. Вот самый быстрый способ, который я нашел для парсинга статистики сезона индивидуальных игроков:

    import pandas as pd
    import requestsurl = """
    [https://stats.nba.com/stats/leaguedashplayerstats?College=&Conference=&Country=&DateFrom=&DateTo=&Division=&DraftPick=&DraftYear=&GameScope=&GameSegment=&Height=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=Totals&Period=0&PlayerExperience=&PlayerPosition=&PlusMinus=N&Rank=N&Season=2019-20&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&StarterBench=&TeamID=0&TwoWay=0&VsConference=&VsDivision=&Weight=](https://stats.nba.com/stats/leaguedashplayerstats?College=&Conference=&Country=&DateFrom=&DateTo=&Division=&DraftPick=&DraftYear=&GameScope=&GameSegment=&Height=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=Totals&Period=0&PlayerExperience=&PlayerPosition=&PlusMinus=N&Rank=N&Season=2019-20&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&StarterBench=&TeamID=0&TwoWay=0&VsConference=&VsDivision=&Weight=)
    """header_dict = {
        'User-Agent': 'Mozilla/5.0',
        'x-nba-stats-origin': 'stats',
        'x-nba-stats-token': 'true',
        'Referer': '[https://stats.nba.com'](https://stats.nba.com'),
        'Connection': 'keep-alive',
        'Pragma': 'no-cache',
        'Cache-Control': 'no-cache',
        'Host': 'stats.nba.com'
    }res = requests.get(url, headers=header_dict)
    json_set = res.json()headers = json_set['resultSets'][0]['headers']
    data_set = json_set['resultSets'][0]['rowSet']df = pd.DataFrame(data_set, columns=headers)

    ..и вот! Вот как выглядит полученный DataFrame Pandas:

    Некоторые ключевые моменты о коде:

    • url: Каждый тип или категория статистики обслуживается своим собственным API URL; приведенный выше пример специфичен для статистики сезона индивидуальных игроков для сезона NBA 2019-2020 (см. параметр Season в URL).
    • header_dict: Это требуется для успешного доступа к API из скрипта; в противном случае запрос вернет ошибку. Эти заголовки позволяют скрипту имитировать браузер, делающий запрос. Затем этот словарь заголовков передается в качестве параметра функции request.get().

    Фактический запрос возвращает набор данных в формате json (json_set в приведенном выше примере), что очень удобно для просмотра и получения нужных секций данных. В конечном итоге загрузка набора данных в формате json в DataFrame Pandas требует только указания заголовков и фактического элемента данных внутри json объекта в конструкторе DataFrame.

    Приведенный выше шаблон кода можно использовать для доступа и загрузки широкого спектра категорий статистики с сайта NBA, и я надеюсь, что это поможет вам начать!