Notice
Recent Posts
Recent Comments
Link
250x250
develope_kkyu
[Python] MLB Stats API를 이용해 내셔널리그 골든글러브 후보 3인 수비 지표 비교(김하성 포함) 본문
Python
[Python] MLB Stats API를 이용해 내셔널리그 골든글러브 후보 3인 수비 지표 비교(김하성 포함)
developekkyu37 2023. 1. 19. 16:57728x90
패키지 임포트
import statsapi
import pandas as pd
내셔널리그 골든글러브 최종 후보 3인 검색
김하성, 댄스비 스완슨, 미겔 로하스의 선수 id 찾기
print(statsapi.lookup_player('ha-seong'))
print(statsapi.lookup_player('dansby swanson'))
print(statsapi.lookup_player('miguel rojas'))
[{'id': 673490, 'fullName': 'Ha-Seong Kim', 'firstName': 'Ha-Seong', 'lastName': 'Kim', 'primaryNumber': '7', 'currentTeam': {'id': 135}, 'primaryPosition': {'code': '6', 'abbreviation': 'SS'}, 'useName': 'Ha-Seong', 'boxscoreName': 'Kim', 'mlbDebutDate': '2021-04-01', 'nameFirstLast': 'Ha-Seong Kim', 'firstLastName': 'Ha-Seong Kim', 'lastFirstName': 'Kim, Ha-Seong', 'lastInitName': 'Kim, H', 'initLastName': 'H Kim', 'fullFMLName': 'Ha-Seong Kim', 'fullLFMName': 'Kim, Ha-Seong'}]
[{'id': 621020, 'fullName': 'Dansby Swanson', 'firstName': 'James', 'lastName': 'Swanson', 'primaryNumber': '7', 'currentTeam': {'id': 112}, 'primaryPosition': {'code': '6', 'abbreviation': 'SS'}, 'useName': 'Dansby', 'boxscoreName': 'Swanson', 'nickName': 'Dans', 'mlbDebutDate': '2016-08-17', 'nameFirstLast': 'Dansby Swanson', 'firstLastName': 'Dansby Swanson', 'lastFirstName': 'Swanson, Dansby', 'lastInitName': 'Swanson, D', 'initLastName': 'D Swanson', 'fullFMLName': 'James Dansby Swanson', 'fullLFMName': 'Swanson, James Dansby'}]
[{'id': 500743, 'fullName': 'Miguel Rojas', 'firstName': 'Miguel', 'lastName': 'Rojas', 'primaryNumber': '11', 'currentTeam': {'id': 119}, 'primaryPosition': {'code': '6', 'abbreviation': 'SS'}, 'useName': 'Miguel', 'boxscoreName': 'Rojas, M', 'nickName': 'Miggy Ro', 'mlbDebutDate': '2014-06-06', 'nameFirstLast': 'Miguel Rojas', 'firstLastName': 'Miguel Rojas', 'lastFirstName': 'Rojas, Miguel', 'lastInitName': 'Rojas, M', 'initLastName': 'M Rojas', 'fullFMLName': 'Miguel Elias Rojas', 'fullLFMName': 'Rojas, Miguel Elias'}]
김하성 수비 지표
kim = statsapi.player_stat_data(673490, group="[fielding]", type="season")
kim
{'id': 673490,
'first_name': 'Ha-Seong',
'last_name': 'Kim',
'active': True,
'current_team': 'San Diego Padres',
'position': 'SS',
'nickname': None,
'last_played': None,
'mlb_debut': '2021-04-01',
'bat_side': 'Right',
'pitch_hand': 'Right',
'stats': [{'type': 'season',
'group': 'fielding',
'season': '2022',
'stats': {'gamesPlayed': 24,
'gamesStarted': 17,
'assists': 32,
'putOuts': 16,
'errors': 0,
'chances': 48,
'fielding': '1.000',
'position': {'code': '5',
'name': 'Third Base',
'type': 'Infielder',
'abbreviation': '3B'},
'rangeFactorPerGame': '2.00',
'rangeFactorPer9Inn': '2.53',
'innings': '171.1',
'games': 24,
'doublePlays': 4,
'triplePlays': 0,
'throwingErrors': 0}},
{'type': 'season',
'group': 'fielding',
'season': '2022',
'stats': {'gamesPlayed': 131,
'gamesStarted': 125,
'assists': 327,
'putOuts': 120,
'errors': 8,
'chances': 455,
'fielding': '.982',
'position': {'code': '6',
'name': 'Shortstop',
'type': 'Infielder',
'abbreviation': 'SS'},
'rangeFactorPerGame': '3.41',
'rangeFactorPer9Inn': '3.68',
'innings': '1092.0',
'games': 131,
'doublePlays': 59,
'triplePlays': 0,
'throwingErrors': 3}}]}
이 중 유격수 지표 추출
kim = statsapi.player_stat_data(673490, group="[fielding]", type="season")['stats'][1]['stats']
kim
{'gamesPlayed': 131,
'gamesStarted': 125,
'assists': 327,
'putOuts': 120,
'errors': 8,
'chances': 455,
'fielding': '.982',
'position': {'code': '6',
'name': 'Shortstop',
'type': 'Infielder',
'abbreviation': 'SS'},
'rangeFactorPerGame': '3.41',
'rangeFactorPer9Inn': '3.68',
'innings': '1092.0',
'games': 131,
'doublePlays': 59,
'triplePlays': 0,
'throwingErrors': 3}
똑같이 스완슨과 로하스의 유격수 수비 지표 추출
swanson = statsapi.player_stat_data(621020, group="[fielding]", type="season")['stats'][0]['stats']
swanson
rojas = statsapi.player_stat_data(500743, group="[fielding]", type="season")['stats'][1]['stats']
rojas
데이터 프레임 만들기
sr_k = pd.Series(kim, name = 'Kim')
sr_s = pd.Series(swanson, name = 'Swanson')
sr_r = pd.Series(rojas, name = 'Rojas')
df = pd.concat([sr_k,sr_s,sr_r], axis = 1)
df = df.drop('position')
df
728x90
'Python' 카테고리의 다른 글
[Python] plotly를 이용해 MLB 내셔널리그 서부 순위 변동 그래프 만들기 (1) | 2023.01.26 |
---|---|
[Python] ploty를 이용해 내셔널리그 골든글러브 최종 후보 3인 수비 지표 그래프 만들기 (0) | 2023.01.19 |
[Python] plotly를 이용해 오타니, 저지 2022시즌 타격 성적 비교 그래프 (0) | 2023.01.19 |
[Python] MLB Stats API를 이용해 오타니, 저지 2022시즌 타격 성적 비교 (1) | 2023.01.19 |
[Python] pandas 예제 - 5 (0) | 2023.01.17 |