프로젝트/[DA] 데이터 분석 : 배구 5

데이터 수집 (웹 크롤링) (3) - 경기 세부 데이터

크롤링을 진행하는 방법은 크롤링(1) 포스트와 크롤링(2) 포스트에서 자세히 다루었다. 크롤링(2) 포스트의 마지막에서 얘기했듯이 이번 포스트에서는 두 번째 크롤링에서 수집한 데이터를 이용해서 세 번째 크롤링을 수행하려고 한다. (1) 수집할 태그 찾기 이번에는 아래의 웹 페이지에서 데이터를 모을 예정이다. url을 보면 "https://m.sports.naver.com/game/20211016018F2/record" 의 형태로, 공통부분 뒤의 '경기날짜(20211016)+018(리그 고유번호이다. 18번째 리그라는 뜻)+F(여자부)+경기번호' 가 경기마다 바뀌는 내용이다. 바로 이것 때문에 이전 포스트에서 데이터를 수집할 때 가공된 새 날짜와 경기 번호 데이터를 저장한 것이다. 한 경기에서의 세부 기록..

데이터 수집 (웹 크롤링) (2) - 경기 데이터

예측 모델을 만들어보려고 하는데 기존에 모았던 데이터로는 모델을 만들기에 적합하지 않다고 판단했다. 그래서 경기 관련 데이터를 추가로 수집했는데 이번 포스트에서는 그 내용을 담아보려고 한다. 자세한 크롤링 방법은 이전 포스트를 참고하면 된다. (1) 수집할 데이터 담은 태그 찾기 저번과 같은 방식으로 크롤링을 할 것이기 때문에 먼저 url과 태그를 살펴보도록 하겠다. 크롤링을 수행할 페이지는 다음과 같다. KOVO 공식 홈페이지의 경기 결과 페이지이다. 페이지를 살펴보면 경기 날짜, 경기 번호(순번), 경기를 치른 두 팀, 경기 결과, 경기가 진행된 라운드(정규리그는 총 6라운드로 구성된다.)의 데이터를 볼 수 있다. url은 "https://www.kovo.co.kr/game/v-league/(생략)s..

데이터 전처리 - 결측값 처리

지난 포스트에서는 크롤링으로 수집한 데이터를 통해 선수의 공격과 수비 지표로 쓸 수 있는 공격 성공률, 리시브 효율, 세트당 서브/세트/블로킹/디그 수 등을 구했다. 하지만 공격 지표 중에는 공격 성공률 뿐 아니라 공격이 얼만큼의 효과를 냈는지 보는 '공격 효율' 또한 중요하다. 공격 효율은 (공격 성공-공격 범실)/공격 시도 로 구한다. 그러나 크롤링 당시 전체 범실 개수만 저장하고 공격에서의 범실은 저장하지 않아서 추가로 공격 범실 데이터가 필요했다. ( 데이터 새로 얻는 과정은 생략 ) 새롭게 얻은 데이터이다. 이제 기존에 작성했던 코드 중 공격 효율(at_rate)을 계산하는 부분을 추가한다. 공격 성공률, 공격 효율, 리시브 효율은 모두 백분율이므로 이전에 전처리 할 때 놓쳤던 백분율 변환 부분..

데이터 전처리 - PySpark에서 SQL 사용하기

저번 포스트에서 설명했듯이 이번 프로젝트에서는 배구 선수들의 능력치를 통해 팀 별 경기에서 어떤 팀이 승리할지를 예측하는 모델을 만들 것이다. 그러기 위해서는 선수 능력치를 판단할 수 있는 지표가 필요한데, 이전에 모았던 단순 데이터로는 한 눈에 파악하기 어렵다. 현재 데이터의 컬럼에는 이름, 소속 팀, 포지션, 총 점수 외에도 공격 시도, 공격 성공, 리시브 시도, 리시브 정확, 리시브 실패, 서브 성공, 세트 성공, 블로킹 성공, 디그 성공 이 있다. 이 중 공격 지표로 사용할 수 있는 공격 성공률과 수비 지표로 사용할 수 있는 리시브 효율을 구하고, 참여한 세트 수를 통해 세트당 서브, 세트, 블로킹, 디그 개수를 구해서 새롭게 데이터를 만들 것이다. 위의 내용으로 데이터 전처리를 해 볼 텐데, 어..

프로젝트 설명 & 데이터 수집 (웹 크롤링), 저장 - 선수 데이터

새롭게 시작하는 프로젝트는 스포츠 데이터 분석 프로젝트로, 스포츠 중 여자배구의 데이터를 분석해보려고 한다. 프로젝트의 큰 목표는 선수들의 경기 기록 데이터를 통해 능력치를 구하고, 어떤 두 팀이 경기를 치른다고 가정할 때 포지션 별로 선수를 지정하면 어느 팀이 승리할지 예측하는 것이다. 프로젝트의 진행 과정을 담을 것이기 때문에 배구의 자세한 룰 설명은 생략하도록 하겠다. 선수의 경기 기록 데이터에는 크게 공격, 서브, 세트, 블로킹, 리시브, 디그 내용이 포함되어 있다. 각 포지션 별로 중요하게 여겨지는 항목이 조금씩은 다르지만 위 항목들을 토대로 선수의 역량을 측정한다. 데이터를 분석하기 위해서 가장 먼저 해야 할 일은 분석할 데이터를 마련하는 일이다. 데이터를 마련하려면 여러 방법이 있겠지만 이미..