[태블로 시각화 사례] 프로야구 색다르게 즐기기 – 투수 데이터 분석 및 시각화 (기본편)

야구 좋아하시나요? ‘기록의 스포츠’라고 불리는 야구를 즐기는 또 하나의 색다른 방법, 바로 야구 데이터 분석 및 시각화 방법을 소개해드리고자 합니다!

시각화 주제

야구 경기는 크게 ‘투수’와 ‘타자’로 포지션이 나뉘는데, 이번 포스팅에서는 투수 포지션 기록에 대해 다뤄보려고 합니다. 수많은 투수 중에서, 2020년 상반기 최고의 시즌을 보낸 NC 다이노스 구창모 선수 기록을 토대로 분석해보겠습니다.

구창모 선수는 KBO 5월 MVP로 선정됨과 동시에, KBO 리그 나눔 올스타 선발투수 부문에 이름을 당당히 올렸는데요. 대한민국 차세대 좌완 에이스로 불리는 구창모 선수, 과연 올 시즌 얼마나 잘했을까요?

*이번 첫 포스팅은 태블로를 통한 데이터 시각화를 한 번도 해보지 않으신 분들의 눈높이에 맞추어, 쉽게 따라할 수 있도록 구성해두었으니 참고 부탁드립니다.

데이터 출처

프로야구 데이터는 KBO 홈페이지를 비롯하여, 스탯티즈, KBreport 등 여러 플랫폼에 데이터가 모두 공개되어 있습니다. 이 포스팅에서는 스탯티즈(http://www.statiz.co.kr)에서 구창모 선수 데이터를 가져왔고, Raw 데이터는 아래에서 다운로드 받으실 수 있습니다.

HOW TO

1. 결합된 축 및 라인 경로 활용

먼저 선발투수 기록 중에 가장 주요하게 다뤄지는, 투구이닝 및 실점, 그리고 방어율(ERA) 기록을, 결합된 축 및 라인 경로를 활용하여 표현해보도록 하겠습니다.

새로운 워크시트 차원에서 ‘날짜’ 및 ‘상대’ 필드를 열 선반에 두고, 측정값 ‘이닝’ 필드를 행 선반으로 가져옵니다. 이후 측정값 ‘실점’ 필드를 드래그 하여, 아래 화면과 같이 축에서 ‘II’ 모양이 되었을 때 놓으면, 축이 결합되어 하나의 축에서 같이 표현됩니다

이후, 측정값 ‘이닝’ 및 ‘실점’ 필드를 각각 선택 후, 마우스 오른쪽 버튼을 눌러 집계 방식을 SUM(합계)이 아닌 AVG(평균)으로 변경해주어야 합니다. 각 경기당 평균 투구이닝 및 실점을 볼 것이기 때문입니다.

마크에서 막대를 라인으로 변경한 후, 행 선반에 있는 ‘측정값(Measure Values)’ 필드를 Ctrl키를 누른 채로 경로(Path)로 드래그 하여 가져옵니다. 아래 화면과 같이 경로 유형을 가운데에 위치한 ‘Step’을 클릭하면, ‘L’자형 모양이 나옵니다.

축 편집(Edit axis)을 눌러 축 제목을 지워주고, 열 선반에 있는 차원값(Measure Names)을 Ctrl 키를 누르고 드래그 하여 색상(Color)으로 가져옵니다. 색상을 Dark brown 및 Light brown으로 각각 설정하고, 평균자책점 (ERA) 필드를 마크 레이블 (Label)로 가져옵니다.

*평균자책점이란, 투수가 한 게임(9이닝) 당 내준 평균(Average) 자책점(Earned Runs)을 의미합니다.

레이블(Label)에 있는 ‘ERA’ 필드를 마우스 오른쪽 버튼으로 클릭하여, 집계 방식을 SUM(합계)이 아닌 AVG(평균)으로 변경합니다. 이후, 레이블을 클릭하여 선택된 값만 표시되도록 설정을 합니다. 모든 경기의 ERA 값을 볼 필요가 없으므로, MVP를 확정짓는 5월 마지막 경기, 역 L자형을 보이는 경기, 그리고 가장 최근 경기 ERA만 표시하도록 하겠습니다.

완성된 그래프를 보면, 투구이닝 > 실점인 경우 L 모양을 보이지만, 투구이닝 < 실점인 경우 L이 뒤집힌 모양을 보입니다. 2020년 6월 25일 KT전에서만 모양이 다른데, 더블헤더 2차전에 선발 출장하여 야수들의 실책이 연달아 발생하면서 어려운 경기를 펼친 날입니다. 그 경기 기록이 아래와 같이 표현되고 있습니다.

2. 이중 축 및 막대차트 활용

다음으로 투수의 제구력을 가늠해볼 수 있는 지표인, 삼진 및 볼넷 갯수를 이중 축을 활용하여 표현하도록 하겠습니다.

앞서 소개한 결합된 축은 하나의 축을 공유하는 개념이지만, 이중 축은 양쪽으로 축을 이중으로 사용하는 개념으로 이해하시면 됩니다.

새로운 워크시트에서 ‘날짜’ 및 ‘상대’ 필드를 행 선반에 올린 후, 측정값 ‘삼진’ 및 ‘볼넷’ 필드를 열 선반으로 가져오겠습니다. 우선 열 선반에 있는 측정값 ‘삼진’ 및 ‘볼넷’ 필드를 마우스 오른쪽 버튼으로 누른 후, 집계 방식을 SUM(합계)이 아닌 AVG(평균)으로 변경해주겠습니다.

이후 측정값 볼넷 필드 오른쪽 버튼을 클릭한 후, 이중 축(Dual Axis) 부분을 클릭합니다. 이중 축으로 결합되면 마크(Mark)에서 자동완성 기능에 따라 원(Circle) 모양으로 변하게 됩니다. 태블로가 인식하기에 가장 적합한 형태로 보여주는 방식으로 변하는 것이죠. 하지만 원 모양으로는 삼진과 볼넷의 상관관계를 명확히 알기 어려운 듯하여, 마크에서 모두 막대(Bar)로 변경해주겠습니다.

아래 화면과 같이, 축 동기화(Synchronize Axis)를 해주고, 위쪽 축은 머릿말 표시(Show header)를 해제하여 숨겨줍니다. 아래쪽 축 편집(Edit Axis)를 통해, 축 이름을 ‘삼진 및 볼넷 갯수’로 바꿔주고, 형식(Format)을 클릭하여 소수점을 제외하고 정수로 만들어 줍니다.

아래 화면과 같이, 마크에서 볼넷 부분을 선택한 후, 막대 크기를 작게 조절해줍니다. 색상을 Dark blue 및 Light blue로 변경하고, 열 방향의 라인을 없애기 위해 뷰 마우스 우클릭 -> 화면 좌측의 서식 메뉴에서 라인 서식을 선택하여, 열 탭에서 격자선 ‘없음’을 선택하여 깔끔하게 정리합니다.

마지막으로 삼진 필드를 레이블(Label) 마크로 가져온 후, 맞춤(Alignment)을 클릭하여, 막대 가운데 부분에 텍스트가 표현되도록 아래 이미지와 같이 설정하면, 완성입니다!

전반적으로 볼넷 보다 삼진 갯수가 월등히 많은 모습을 보이고 있습니다. 리그 최고 수준의 닥터K임을 볼 수 있는 대목이네요.

3. 구종별 HOT & COLD Zone 만들기

이번에는 각 구종별 구사율을 시각적으로 보여주려고 합니다. 구창모 선수는 총 4가지 구종 (직구, 커브, 슬라이더, 스플리터)을 구사하고 있는데요. 구종 필드를 따로 가져오기 위해, 데이터 원본 페이지로 이동하여 아래와 같이 피벗(Pivot) 작업을 별도로 해주어야 합니다. 피벗 작업 실행 후, 새로 생긴 필드명을 ‘구종’ 및 ‘구종별 투구 수’로 변경해주겠습니다.

새로운 워크시트에서 ‘날짜’ 및 ‘상대’ 필드를 행 선반으로, ‘구종’ 필드를 열 선반으로 가져옵니다. 이후 계산된 필드 만들기를 활용하여, 아래 수식과 같이 ‘구종별 구사율’ 필드를 만들어줍니다.

IF [구종]=’직구’ THEN [직구 구사율]
ELSEIF [구종]=’커브’ THEN [커브 구사율]
ELSEIF [구종]=’슬라이더’ THEN [슬라이더 구사율]
ELSEIF [구종]=’스플리터’ THEN [스플리터 구사율]

END

이후 마크에서 사각형(Square)를 선택하고, ‘구종별 구사율’ 필드를 색상(Color)으로 가져온 후, 크기(Size)를 조절하면 아래와 같이 됩니다. ‘구종별 투구수’ 및 ‘구종별 구사율’ 필드를 레이블로 가져온 후, 분석 탭 > 총계에서 행 선반 Total 표시를 추가해주면 완료!

4. 구종별 평균 구속 만들기 (파이 차트 활용)

구종별 구사율에 이어, 구종별 평균 구속을 알아보고자 합니다. 행 선반에 ‘날짜’ 필드를 올리고, ‘구종’ 필드를 열 선반에 올립니다. 이후 마크에서 파이(Pie)를 선택하고, ‘구종’ 필드를 Ctrl 키 누른 채로 색상(Color)으로 가져옵니다.

‘구종별 평균 구속’ 필드를 레이블(Label)로 가져온 후, 정렬을 가운데로 맞춰주면 파이 안에 평균 구속 숫자가 잘 들어갈 것입니다.

위에서 만든 구종별 HOT & COLD ZONE 및 구종별 평균 구속을 대시보드에 표현하면 아래와 같습니다.

2020시즌 구창모 선수는 전반적으로 직구 구사율이 높았는데, 이는 직구 구위가 워낙 좋기 때문에 자신있게 던졌으리라 추정이 됩니다. 직구에 이어 Blue 계열을 띄는 구종은 슬라이더 인데요. 헛스윙을 유도하는 명품 슬라이더 덕분에, 리그 최고의 탈삼진율을 보여주었다는 생각도 듭니다.

마지막으로 스플리터 구사율도 눈에 띄는데요. 엠엘비닷컴(MLB.com)의 데이비드 애들러는 구창모의 스플리터 영상을 공유하며 “메이저리그에는 거의 없는 좌완 투수의 스플리터를 보게 돼 멋지다”라고 말한 적이 있습니다. 스플리터 구위 또한 좋기 때문에, 구창모 선수가 올해 최고의 퍼포먼스를 보여준 게 아닐까 싶습니다.

비록 불의의 부상으로 마운드에 오르지 못하고 있지만, 구창모 선수가 빠른 시일 내에 회복되어 다시 멋지게 투구하는 모습을 볼 수 있으면 좋겠습니다.

마무리 하며

야구는 종목 특성상 모든 데이터가 기록되고 모두 공개됩니다. 따라서 데이터를 수집하고, 전처리 및 시각화를 하면, 굉장히 다채로운 방식으로 야구 기록을 살펴볼 수 있습니다.

이번 포스팅은 첫 포스팅이기에, 전통적인 투수 기록을 바탕으로, 초보자들도 쉽게 따라할 수 있는 수준으로 시각화를 해보았습니다.

다만 최근 야구 분석 트랜드만 봐도, 전통적인 기록 보다는 세이버매트릭스(Sabermetrics) 지표 (WHIP, FIP, WAR 등)를 기반으로 살펴보는 트랜드에 있습니다.

아울러, 이번 포스팅에서는 특정 선수의 한 시즌 기록만을 대상으로 분석했지만, 역대 시즌별 기록 분석, 특정 선수들 간의 비교, 리그 전체 투수별 기록 분석, 나아가 투수가 아닌 타자 포지션 분석까지 그 분석의 범위가 무궁무진 합니다.

다음 포스팅에서는 기본편에서 나아가 중급편으로 찾아뵈려고 하니, 많은 기대 부탁드립니다. 혹여나 원하시는 팀 / 포지션 / 선수 분석이 있으시면 댓글 남겨주세요!

One thought on “[태블로 시각화 사례] 프로야구 색다르게 즐기기 – 투수 데이터 분석 및 시각화 (기본편)

댓글 남기기

태블로위키만의 새로운 소식, 놓칠 수 없겠죠?