Как очистить файл JSON, чтобы он стал Dataframe? ⇐ Python

Программы на Python
Anonymous
Как очистить файл JSON, чтобы он стал Dataframe?

Сообщение Anonymous »

Я собираю баскетбольную статистику с MaxPreps (веб-сайт спортивной статистики средней школы). Я успешно поместил данные в свой vscode, но данные JSON огромны и беспорядочны. Я вижу все правильные номера и имена игроков, но они не расположены в аккуратных строках и столбцах. Как мне сделать так, чтобы файл json представлял собой аккуратный фрейм данных со строками и столбцами?
Я попробовал функцию нормализации pandas, но не был уверен, на что смотрю. Я попытался сравнить выходные данные со статистикой веб-сайта НБА, и их данные выглядели более организованными, как если бы их выходные данные представляли собой таблицу статистики с веб-сайта.
Мой код:

Код: Выделить всё

import pandas as pd
import requests
pd.set_option('display.max_columns', None)
import numpy as np

test_url = 'https://production.api.maxpreps.com/gatewayweb/react/team-season-player-stats/rollup/v1?teamId=cb3c4816-4749-4381-8c4c-5613ef8c89c9&sportSeasonId=77be7c75-cdf9-483d-867f-ea2af557e731'
url_json = requests.get(url=test_url).json()

df_normal = pd.json_normalize(url_json)
print(df_normal)
#print(url_json)

Код: Выделить всё

  {'status': 200, 'message': 'Success', 'cacheResult': 'None', 'data': {'teamId': 'cb3c4816-4749-4381-8c4c-5613ef8c89c9', 'sportSeasonId': '77be7c75-cdf9-483d-867f-ea2af557e731', 'groups': [{'name': 'Game Stats', 'subgroups': [{'name': '', 'stats': {'columns': [{'name': 'Jersey', 'header': '#', 'displayName': '#', 'isSortedColumn': True, 'overallValue': None, 'sortDirection': 1, 'columnType': 1}, {'name': 'Name', 'header': 'Name', 'displayName': 'Name', 'isSortedColumn': False, 'overallValue': None, 'sortDirection': 0, 'columnType': 2}, {'name': 'GamesPlayed', 'header': 'GP', 'displayName': 'Games Played', 'isSortedColumn': True, 'overallValue': '29', 'sortDirection': 2, 'columnType': 0}, {'name': 'MinutesPerGame', 'header': 'MPG', 'displayName': 'Minutes Per Game', 'isSortedColumn': True, 'overallValue': '0', 'sortDirection': 2, 'columnType': 0}, {'name': 'PointsPerGame', 'header': 'PPG', 'displayName': 'Points Per Game', 'isSortedColumn': True, 'overallValue': '53.2
^^^данные json
Как я хочу, чтобы это выглядело

Код: Выделить всё

parameters
:
{LeagueID: "00", PerMode: "Totals", StatCategory: "PTS", Season: "All Time", SeasonType: "Playoffs",…}
resource
:
"leagueleaders"
resultSet
:
{name: "LeagueLeaders",…}
headers
:
["PLAYER_ID", "PLAYER_NAME", "GP", "MIN", "FGM", "FGA", "FG_PCT", "FG3M", "FG3A", "FG3_PCT", "FTM",…]
name
:
"LeagueLeaders"
rowSet
:
[,…]
[0 … 99]
0
:
[2544, "LeBron James", 287, 11858, 2928, 5896, 0.497, 470, 1415, 0.332, 1836, 2479, 0.741, 430, 2153,…]
1
:
[893, "Michael Jordan", 179, 7474, 2188, 4497, 0.487, 148, 446, 0.332, 1463, 1766, 0.828, 305, 847,…]
2
:
[76003, "Kareem Abdul-Jabbar", 237, 8851, 2356, 4422, 0.533, 0, 4, 0, 1050, 1419, 0.74, 505, 1273,…]
3
:
[977, "Kobe Bryant", 220, 8641, 2014, 4499, 0.448, 292, 882, 0.331, 1320, 1617, 0.816, 230, 889, 1119,…]

Код: Выделить всё

{'resource': 'leagueleaders', 'parameters': {'LeagueID': '00', 'PerMode': 'Totals', 'StatCategory': 'PTS', 'Season': 'All Time', 'SeasonType': 'Playoffs', 'Scope': 'S', 'ActiveFlag': 'No'}, 'resultSet': {'name': 'LeagueLeaders', 'headers': ['PLAYER_ID', 'PLAYER_NAME', 'GP', 'MIN', 'FGM', 'FGA', 'FG_PCT', 'FG3M', 'FG3A', 'FG3_PCT', 'FTM', 'FTA', 'FT_PCT', 'OREB', 'DREB', 'REB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS', 'AST_TOV', 'STL_TOV', 'EFG_PCT', 'TS_PCT', 'GP_RANK', 'MIN_RANK', 'FGM_RANK', 'FGA_RANK', 'FG_PCT_RANK', 'FG3M_RANK', 'FG3A_RANK', 'FG3_PCT_RANK', 'FTM_RANK', 'FTA_RANK', 'FT_PCT_RANK', 'OREB_RANK', 'DREB_RANK', 'REB_RANK', 'AST_RANK', 'STL_RANK', 'BLK_RANK', 'TOV_RANK', 'PF_RANK', 'PTS_RANK', 'AST_TOV_RANK', 'STL_TOV_RANK', 'EFG_PCT1', 'TS_PCT1'], 'rowSet': [[2544, 'LeBron James', 287, 11858, 2928, 5896, 0.497, 470, 1415, 0.332, 1836, 2479, 0.741, 430, 2153, 2583, 2067, 483, 275, 1034, 655, 8162, 1.999, 0.467, 0.536, 0.584, 1, 1, 1, 1, 591, 3, 2, 714, 1, 1, 1262, 16, 1, 4, 2, 1, 10, 1, 8, 1, 469, 1078, 491, 405], [893, 'Michael Jordan', 179, 7474, 2188, 4497, 0.487, 148, 446, 0.332, 1463, 1766, 0.828, 305, 847, 1152, 1022, 376, 158, 546, 541, 5987, 1.872, 0.689, 0.503, 0.568, 19, 12, 3, 3, 65
Статистика НБА ^^^
Нечто подобное уже рассматривалось, но использовалась статистика с NBA.com. Я не уверен, как это соотносится с данными, которые я получил от MaxPreps. По сути, я хочу взять свои данные MaxPreps и превратить их в чистый фрейм данных, чтобы я мог начать отображать их в виде графика.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -dataframe

Вернуться в «Python»