목록축구 (10)
개발은 처음이라 개발새발
지난 편에서는 21/22시즌 그라운드와 공중볼 경합 탑10을 확인해봤는데요. 이어서 지난 시즌 가장 많은 경기당 크로스 성공 개수와 그 선수들의 크로스 성공%를 한번 확인해보도록하겠습니다. #총 크로스 횟수가 50회 이상인 선수만 추리기 df2 = df1[df1['totalCross'] > 50].sort_values(by=['totalCross'], ascending=False) print(df2) #경기당 크로스 성공 개수 계산 df2['per_game_cross'] = round(df2['accurateCross'] / df2['game'],2) # 크로스 성공% 계산 df2['cross%'] = round((df2['accurateCross'] /df2['totalCross'])*100,2) #2..
오늘도 축구를 곁들인 판다스 복습을 진행해보도록 하겠습니다. 이번 시간에는 PL 개막을 기념해서 지난 시즌인 21/22시즌의 기록들 중 경합 항목에 대해 어떤 선수들이 좋은 퍼포먼스를 보여줬는지 확인해보겠습니다. mport pandas as pd import numpy as np df= pd.read_excel('PL2.xlsx',sheet_name='Sheet1') print(df,'\n') df1 = df[['league', 'season', 'team', 'name', 'shirtNumber', 'minsPlayed', 'gameStarted', 'totalSubOn','duelWon', 'duelLost', 'aerialWon', 'aerialLost']] df1 = df1.groupby(['le..
안녕하세요. 이제 22/23 PL 개막이 5일 정도 남았는데요. D-5 기념으로 지난 시즌 프리미어리그 득점순위 탑 5 선수들의 경기당 주요 공격 지표에 대해 알아보겠습니다. 제목은 리그 Top 5 득점자들의 경기당 주요 공격지표로 하겠습니다. 근데 이제 파이썬을 곁들인... 늘 그랬듯이 활용한 스탯은 모두 fotmob 사이트(https://www.fotmob.com/)를 통해 모았습니다. 우선 잘 모은 데이터를 한번 확인해보겠습니다. 데이터를 불러오죠. import pandas as pd import numpy as np df= pd.read_excel('epl.xlsx',sheet_name='Sheet1') print(df) print('\n') league season team name assist..
안녕하세요. 지난 번에는 아놀드의 데이터를 다뤄봤다면, 이번에는 조금 더 재밌는 지도 그리기를 해볼까 합니다. 파이썬에는 'Folium'이라는 라이브러리가 있는데요. 이를 통해서 지도에 다양한 시각화 요소를 넣을 때 굉장히 유용하게 쓸 수 있는 라이브러리 입니다. 저는 이를 가지고 다가올 22/23시즌 프리미어리그 20팀의 홈구장이 표시된 지도를 만들어보려고 하는데요. 이를 위해서는 먼저 홈구장 마커를 찍을 잉글랜드 지도가 먼저 필요합니다. 우선 코드를 보시겠습니다. import pandas as pd import folium df= pd.read_excel('PL.xlsx',sheet_name='Sheet1',index_col=0) print(df) #잉글랜드 지도 만들기 England_map = fo..
오늘도 축구 데이터를 가지고 df.plot의 다양한 그래프를 그려보고자 하는데요. 이번에 다뤄볼 데이터는 제가 최근에 입덕한 리버풀의 플레이메이커 트렌트 알렉산더-아놀드의 데이터입니다. 아놀드는 포지션은 오른쪽 풀백이지만 실제 경기를 보고 있으면 공격 전개시 중앙으로 침투하여 중앙 미드필더 같은 모습을 보이거나 우측에서 롱패스와 크로스를 통해 플레이메이커로서 98년생인 어린 나이에도 불구하고 굉장히 좋은 모습을 보여주고 있습니다.그래서 이번에 아놀드의 패스 관련 데이터를 수집해 그래프로 표현봤는데요. 참고한 사이트는 지난 번과 동일하게 fotmob을 통해 수집했습니다. https://www.fotmob.com/ FotMob FotMob is the essential app for matchday. Get..
데이터를 다루다 보면 중복행이 종종 보이는 경우가 있습니다. 가공 작업을 진행하는 입장에서 표본이 적은 상황에서는 가볍게 엑셀에서 지워도 무방합니다. 하지만 세상 일이라는 게 그리 호락호락하지 않죠. 최근 겪을 일을 이야기해보자면 새로운 게임 스탯을 만들기 위해 분석하는 과정에서 행이 20만 개가 넘는 데이터를 다룰 때였습니다. 처음에는 중복된 것이 없는 줄 알았는데 특정 부분이 지나지체 많다 싶어 확인해보기 무려 3만 개가 넘는 중복행이 있던군요. ㅠㅠ 정말 막막했는데 판다스에서 간단한 코드를 해결할 수 있었습니다. 우선 예제를 만들어보겠습니다. import pandas as pd dict_data = {'goal':[23,23,2,1,15,17,23], 'assist':[7,13,12,7,8,9,7]..
from selenium import webdriver import pandas as pd #open webdriver chrome_driver = './chromedriver.exe' driver = webdriver.Chrome(chrome_driver) df_bundes_team = pd.DataFrame(columns = ['rank', 'team', 'game', 'win_pt', 'win', 'draw', 'lose', 'gf', 'ga', 'goal_diff']) bundes_football = "https://sports.news.naver.com/wfootball/record/index?category=bundesliga&tab=team" driver.get(bundes_football)..
지난 글에서 네이버 분데스리가 팀순위 페이지까지 연동하는 것을 해봤는데요. 코드는 아래와 같습니다. from selenium import webdriver import pandas as pd #open webdriver chrome_driver = './chromedriver.exe' driver = webdriver.Chrome(chrome_driver) df_bundes_team = pd.DataFrame(columns = ['rank', 'team', 'game', 'win_pt', 'win', 'draw', 'lose', 'gf', 'ga', 'goal_diff']) bundes_football = "https://sports.news.naver.com/wfootball/record/index?c..
이제 본격적으로 크롤링을 진행해보겠습니다. 우선 전에 적었던 크롬드라이버를 여는 코드까지는 아래와 같습니다. from selenium import webdriver #open webdriver chrome_driver = './chromedriver.exe' driver = webdriver.Chrome(chrome_driver) 제가 이번에 크롤링 해볼 것은 네이버의 해외축구 팀순위 테이블입니다. 그중에서도 저는 분데스리가의 바이에른 뮌헨 팬이라 분데스리가 팀순위를 크롤링 해 이를 데이터 프레임에 저장해 표출해 보도록 하겠습니다. 이를 위해서는 크롤링을 진행하기 전에 컬럼이 들어가 있는 데이터 프레임을 만들어야 하는데요. 우선 네이버 분데스리가 팀순위 테이를 보시죠. 2021/22시즌의 순위 테이블을 ..
이번에는 크롤링을 해볼까 합니다. 크롤링이라는 단어를 많이 들어봤을테지만 정작 정확한 뜻을 모르는 분도 많을 텐데요. 크롤링이란 간단하게 말하자면 웹페이지에 있는 데이터를 추출해오는 것을 의미합니다. 스포츠 데이터를 예로 들어보면 경기야 얼마든지 볼 수 있지만, 팀과 선수의 기록들을 가지고 재밌게 놀기에는 이와 관련된 회사를 가지 않곤 쉬운 일이 아닌데요. 그러나 크롤링을 할 수 있게 된다면 스포츠 통계 사이트에 있는 데이터를 추출해 저장해서 다양하게 씹고 뜯고 맛보고 즐길 수 있습니다. 그렇다면 지금 바로 크롤링에 대해 알아보도록하겠습니다. 크롤링 라이브러리는 BeautifulSoup4, requests 등 다양하게 있지만 전 selenium을 사용해보려고 합니다. 우선 selenium 라이브러리를 설..