728x90
lol 데이터를 이용해 미니 팀 프로젝트를 진행한다고 하셔서 하기에 앞서 내가 맡은 부분이 제대로 정보를 뽑을 수 있는 내용인지 대충이나마 확인하기 위해 혼자 대충 정보를 뽑아봤다.
확인만 한 것이기 때문에 완벽하게 끝낸 것이 아니라 사전 작업만 해둔 것이다.
1. 사전 준비
1-1) import
import requests
import pandas as pd
from tqdm import tqdm
- 확인용 테스트이기 때문에 따로 함수들을 빼두진 않았다.
- 받아오기 위한 requests
- 데이터프레임을 만들기 위한 pandas(알리어스를 이용해 pd로 바꿈)
- 체크용 tqdm(간략화하여 사용하기 위해 from ~ import를 사용하여 import했다.)
1-2) 정보 받아오기
api = '(본인의 api key)'
- lol 데이터를 받아오기 위해서는 riot api key가 필요한데, 이건 Riot Developer Portal 사이트에서 로그인(riot 계정이 없다면 회원가입해야함) 후 요청하면 1~2일 내로 되는 것 허락해주는 것 같다.
- 나의 경우에는 다음 날 확인해보니 바로 허락해주면서 api key를 받을 수 있었다.
tiers = ['CHALLENGER','GRANDMASTER','MASTER','DIAMOND']
page = 1
top_tiers= []
top_nick_WL = []
- tiers에는 정보를 상위 티어로만 가지고 올 것이라 티어 이름을 저장했다.
- page는 가지고 올 정보의 페이지 수? 같은 것이라고 생각하고 있다. (정보의 양)
- top_tiers, top_nick_WL은 각 각 모든 정보, 혹은 몇개의 정보를 담아두기 위해 만들어 두었다. (사실 이 부분은 모든 정보만 담아두고 따로 빼면 됐는데 당시에는 정보를 뽑는 것에 급급해 생각하지 못했다.)
for tier in tqdm(tiers):
for p in range(page):
print(tier)
url = f'https://kr.api.riotgames.com/lol/league-exp/v4/entries/RANKED_SOLO_5x5/{tier}/I?page={p+1}&api_key={api}'
req = requests.get(url).json()
if req == '[]':
print('pass')
pass
else:
if len(req)>4:
for i in range(len(req)):
top_tiers.append(req[i])
top_nick_WL.append([req[i]['tier'],req[i]['summonerName'],req[i]['wins'],req[i]['losses']])
- url은 지금 상황에선 첫번째 for문에서 선언해도 되지만, 페이지 수가 달라질 경우를 대비하여 두번째 for문에서 위치하도록 했다.
- 첫번째 for문은 미리 만들어둔 tiers에서 하나씩 꺼내도록 했고, 두번째 for문은 페이지 수 만큼 돌도록 했다.
- 확인용으로 print를 이용하여 tier를 출력하도록 했다.
- requests.get()을 통해 url에 저장한 링크에서 정보를 받아와 req에 저장했다. 뒤의 .json()을 통해 json으로 받아올 수 있었다.
- 혹시라도 빈 값을 가져올 수도 있으니, 만약 req가 '[]'라면(비어있다면) pass를 출력하고 넘어가도록 했다.
- 빈 값이 아니라면 다시 req의 사이즈가 4를 초과하는 경우만 걸렀다. (위의 if문으로 안 걸러지는건지 아닌지 이 if문이 없으면 에러가 났다. ㅠㅠ)
- req의 사이즈만큼 for문을 돌려 미리 만들어둔 top_tiers, top_nick_WL에 각 각 담을 정보를 꺼내어 담았다.
1-3) 데이터 프레임으로 만들기
all_df = pd.DataFrame(top_tiers)
tnw_df = pd.DataFrame(top_nick_WL, columns=['tier','summonerName','win','loss'])
- top_tiers, top_nick_WL에 담아둔 데이터를 각 각 데이터 프레임으로 만들어 준다.
더보기
- 만든 데이터 프레임은 이런 식으로 나온다.
1-4) 컬럼 추가 후 값 입력
tnw_df['suNameLen'] = tnw_df['summonerName'].str.len()
tnw_df = tnw_df[['tier','summonerName','suNameLen','win','loss']]
- 컬럼을 추가하면서 컬럼의 값을 입력해줬다.
- tnw_df['summonerName'].str.len()은 summonerName 컬럼 값의 문자열 길이를 나타낸다.
더보기
- 결과는 이렇게 나온다.
정보들이 제대로 뽑히는 것을 확인 했으니 사전 작업은 끝났다!
728x90
'프로그래밍 > +a' 카테고리의 다른 글
미니 팀 프로젝트 중간 과정 (파이썬) (1) | 2024.01.03 |
---|---|
slPro 3차 일지 (0) | 2024.01.01 |
slPro 2차 일지 (0) | 2023.12.28 |
slPro 1차 일지 (1) | 2023.12.27 |
Java_주말 복습: 문제 다시 풀어보기 (0) | 2023.10.01 |