Notice
Recent Posts
Recent Comments
Link
250x250
develope_kkyu
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 6 본문
728x90
https://developerkkyu37.tistory.com/75
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 5
https://developerkkyu37.tistory.com/73 [Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 4 https://developerkkyu37.tistory.com/72 [Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 3 https://developerkkyu37.tistory.com/70
developerkkyu37.tistory.com
경기 기록은 다 보여준 것 같고 이제 다른 스포츠 사이트에서 보듯이 그 경기에 대한 개인 기록을 보여주고 싶었다.
streamlit 라이브러리에는 탭이라는 기능이 있어 어웨이 팀, 홈 팀을 탭으로 나누어 주었다.
tab1, tab2 = st.tabs([away_h, home_h])
타자 기록, 투수 기록은 어차피 홈, 어웨이 똑같은 코드이기 때문에 함수로 만들어 주었다.
- 타자 기록은 타수, 득점, 안타, 타점, 홈런, 볼넷, 삼진, 타율
- 투수 기록은 이닝, 피안타, 자책, 볼넷, 삼진, 투구수, 평균자책점
def batting_stats(home_away):
boxscore = statsapi.boxscore_data(game_id)
batter = boxscore[home_away]['batters']
batter_list = []
for i in range(len(batter)):
batter_list.append(batter[i])
batting_df = pd.DataFrame(columns=['타자명','타수', '득점', '안타', '타점', '홈런', '볼넷', '삼진', '타율'])
for i in range(len(batter_list)):
try:
name = boxscore[home_away]['players']['ID'+str(batter_list[i])]['person']['fullName']
atBats = boxscore[home_away]['players']['ID'+str(batter_list[i])]['stats']['batting']['atBats']
runs = boxscore[home_away]['players']['ID'+str(batter_list[i])]['stats']['batting']['runs']
hits = boxscore[home_away]['players']['ID'+str(batter_list[i])]['stats']['batting']['hits']
rbi = boxscore[home_away]['players']['ID'+str(batter_list[i])]['stats']['batting']['rbi']
homeRuns = boxscore[home_away]['players']['ID'+str(batter_list[i])]['stats']['batting']['homeRuns']
baseOnBalls = boxscore[home_away]['players']['ID'+str(batter_list[i])]['stats']['batting']['baseOnBalls']
strikeOuts = boxscore[home_away]['players']['ID'+str(batter_list[i])]['stats']['batting']['strikeOuts']
avg = boxscore[home_away]['players']['ID'+str(batter_list[i])]['seasonStats']['batting']['avg']
batting_df.loc[i] = [name, atBats, runs, hits, rbi, homeRuns, baseOnBalls, strikeOuts, avg]
except:
pass
batting_df = batting_df.set_index("타자명")
return batting_df
def pitching_stats(home_away):
boxscore = statsapi.boxscore_data(game_id)
pitcher = boxscore[home_away]['pitchers']
pitcher_list = []
for i in range(len(pitcher)):
pitcher_list.append(pitcher[i])
pitching_df = pd.DataFrame(columns=['투수명', '이닝', '피안타', '자책', '볼넷', '삼진', '투구수', '평균자책'])
for i in range(len(pitcher_list)):
try:
name = boxscore[home_away]['players']['ID'+str(pitcher_list[i])]['person']['fullName']
inningsPitched = boxscore[home_away]['players']['ID'+str(pitcher_list[i])]['stats']['pitching']['inningsPitched']
hits = boxscore[home_away]['players']['ID'+str(pitcher_list[i])]['stats']['pitching']['hits']
earnedRuns = boxscore[home_away]['players']['ID'+str(pitcher_list[i])]['stats']['pitching']['earnedRuns']
baseOnBalls = boxscore[home_away]['players']['ID'+str(pitcher_list[i])]['stats']['pitching']['baseOnBalls']
strikeOuts = boxscore[home_away]['players']['ID'+str(pitcher_list[i])]['stats']['pitching']['strikeOuts']
numberOfPitches = boxscore[home_away]['players']['ID'+str(pitcher_list[i])]['stats']['pitching']['numberOfPitches']
era = boxscore[home_away]['players']['ID'+str(pitcher_list[i])]['seasonStats']['pitching']['era']
pitching_df.loc[i] = [name, inningsPitched, hits, earnedRuns, baseOnBalls, strikeOuts, numberOfPitches, era]
except:
pass
pitching_df = pitching_df.set_index("투수명")
return pitching_df
출력
tab1, tab2 = st.tabs([away_h, home_h])
with tab1:
st.write(batting_stats('away'))
st.write(pitching_stats('away'))
with tab2:
st.write(batting_stats('home'))
st.write(pitching_stats('home'))
- 배포 링크 : https://mlbstats.streamlit.app/
728x90
'Python' 카테고리의 다른 글
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 7 (0) | 2023.03.12 |
---|---|
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 5 (0) | 2023.03.04 |
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 4 (0) | 2023.02.27 |
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 3 (0) | 2023.02.26 |
[오류 해결] TypeError: unsupported operand type(s) for &: ‘str’ and ‘str’ (0) | 2023.02.19 |