Skip to content

EDA 프로젝트 4조 저장소. 🎲 보드게임 트렌드 분석 🎲

Notifications You must be signed in to change notification settings

addinedu-amr-2th/eda-repo-4

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 

Repository files navigation

🎲 보드게임 트렌드 분석 EDA 프로젝트 🎲

프로젝트 설명

  • 세계 최대 규모 보드게임 커뮤니티 사이트 BoardGameGeek으로부터 데이터를 추출하여 EDA를 통한 향후 트렌드를 분석하는 프로젝트

목표

image
탐색적 데이터 분석을 통해 다양한 관점에서 보드게임의 현재까지의 트렌드를 분석하여 향후 보드게임 산업의 방향을 예측, 제안해보자 한다.

결론

image
image
image
배경 시대, ip 매체, 구성물, 권장연령, 권장인원, 최대플레이시간, 가격 등 여러가지 측면에서 데이터들을 분석해본 결과 유의미해보이는 경향성을 얻어낼 수 있었다.

주제 선정 배경

  1. 보드게임이라는 분야가 사람들에게 생소한 분야이기에 신선한 시도를 하기에 좋은 주제라고 판단.
  2. 국내외 보드게임 커뮤니티 사이트에 데이터가 매우 잘 정리되어 있어 분석을 위한 데이터를 모으기 용이했다.
  3. 방대한 양의 데이터를 다뤄보는 경험을 체험해보기 위한 목적
  4. 특정 산업 분야의 트렌드를 분석하는 주제이기에 실무적으로도 의의가 있을 것으로 판단.

크롤링

출처 사이트

  • 보드게임긱 : 세계 최대의 보드게임 커뮤니티 사이트, 해외 보드게임 트렌드 분석을 위한 자료를 수집하는데 사용하였다.
  • 보드라이프 : 국내 최대의 보드게임 커뮤니티 사이트, 국내 보드게임 트렌드 분석을 위한 자료를 수집하는데 사용하였다.
  • 다나와 : 가격비교 사이트, 다른 항목 상품들과의 비교를 위해 사용하였다.
    해당 보드게임 사이트들은 마니악한 보드게임을 고평가하고 캐주얼한 파티게임을 저평가하는 경향성이 있기에 약간의 편향성이 존재할 수 있다는 한계가 있을 수 있다.
    image
    image

[출처 사이트 구조]
표 형식으로 구성된 목록에 랭킹, 이름, 발매년도, 점수, 가격 등의 점수가 정리되어 있다.
해당 항목 클릭 시 상세페이지로 연결되어 권장연령, 난이도, 예상플레이시간, 카테고리, 매커니즘 등 추가적인 정보를 수집할 수 있다.

image
난점1. : 다루는 데이터의 양이 방대해 코드가 무거워지고 프로그램이 처리하는데 시간이 오래 걸렸다.
총 38만개의 데이터 중 유저 평가가 존재하는 상위 23900개의 데이터만을 수집하고 취급했다.

image
난점2 : 사이트에서 데이터 목록의 특정구간(20번 이상의 항목)을 조회하기 위해서는 로그인 되어있을 것을 요구했다.
Selenium으로 로그인 한 뒤, 쿠키 정보를 저장해. 해당 쿠키 정보를 가지고 있는 세션을 통해 BeautifulSoup으로 크롤링하는 것이 가능했다.

image
image
난점3 : 수집한 soup 상에서 원하는 정보를 조회해봤더니 해당 정보가 존재하지 않는다는 결과가 나왔다.
이는 해당 사이트가 javaScript를 통해 화면 구성이 이루어지는 동적 페이지였기에 발생하는 문제였으며, javaScript 상에 존재하는 문자를 정규식을 통해 정리해 원하는 데이터들을 수집하는 것이 가능했다.

image
난점4 : 국내 사이트에서 대량의 데이터를 수집하려 시도했더니, 해당 사이트에서 접속을 차단하여 수집이 불가능했다.
따라서 국내 사이트를 출처로 하는 데이터는 상위 100개의 데이터만 수집하고 다루기로 했다.

image
난점5 : 다루고자 하는 데이터의 카테고리, 매커니즘의 종류수가 굉장히 많았으며, 하나의 항목에 대응되는 카테고리, 매커니즘의 수가 1개가 아니었다.(1:1대응이 아니다.)
여러개의 카테고리, 매커니즘을 나타내는 String들을 List 형태처럼 구성해서 하나의 행에 넣어, 사용할 때에는 별개의 함수를 만들어 처리했다.

데이터 프레임 가공

image
각 보드게임 항목별 존재하는 데이터프레임을 선그래프로 분석하기 위해 발매년도를 기준으로 groupby를 통해 통합을 하여 년도별 발매량 데이터프레임으로 가공하였다.
이후 절대적인 양이 아닌 상대적인 비율을 보기 위해 최대값을 1로 scaling하는 함수를 만들었으며 해당하는 데이터프레임으로 가공하였다.

image
다루는 매커니즘 수가 과도하게 많아 이를 분석하기 위해 매커니증이 정의되어있는 해당 사이트의 공식문서를 보고 비슷한 매커니즘끼리 통합하여 다루었다. 통합하는 기준에 주관이 개입되었을 여지가 있다는 한계가 있을 수 있다.

시각화 및 데이터 분석

시각화를 통한 데이터 분석은 크게 발매년도별 발매량 절대값을 분석하기 위한 꺾은선그래프, 실제 일어난 역사적 사건과 발매량의 변화를 비교해 보기 위한 움직이는 바 그래프, 발매년도에 따른 발매비율의 변화를 분석하기 위한 누적바그래프, 전체적인 비율을 보기 위한 파이그래프로 구성된다.
꺾은 선 그래프는 년도에 따라 어떻게 발매량이 급증했는가 보여주기 용이하지만, 항목이 많아질 경우 상세한 분석이 어려워진다는 단점이 존재한다. 움직이는 바 그래프의 경우, 실제 역사적 상황과 비교해 영향을 끼친 요인을 찾아내기에 용이하지만, 전체적으로 흐름이 어떻게 변했는지 한 눈에 파악하기엔 부적합하다는 단점이 존재한다.
누적 바 그래프의 경우, 전체 시간 상에서 각 비율이 어떻게 변화하는지 한 눈에 파악하기에 용이하지만, 왼쪽과 오른쪽 그래프의 데이터 양에 차이가 크기 떄문에 비율상으로는 감소하나 절대값 상으로는 증가하는 등의 케이스가 존재해 해석에 오류를 가져올 수 있다는 한계점이 존재한다.
파이그래프의 경우 전체 비율 구성을 파악기에 용이하나 전체 시간상에서의 통합 비율이 해당 통계를 대표하는 값으로 적합한가하는 문제가 있다.

상관관계 분석

Screenshot from 2023-02-14 11-49-29
우선 간단한 상관관계를 출력해보았다. 주목할 만한 상관관계로는 다음과 같은 것들이 있었다.

  • 난이도평점이 강한 상관관계를 보였다. 사람들은 쉬운 게임보다 어려운 게임을 선호한다고 분석할 수 있겠다.
  • 권장 연령난이도 역시 강한 상관관계를 보였다. 이에 따라 자연스럽게 권장 연령평점 역시 상관관계가 나타났다.
  • 평점가격은 약한 상관관계를 보였다. 이에 따라 난이도가격역시 상관관계를 띄게 되었다.
  • 출시일이 경과함에 따라 약하지만 평점이 올라가는 점도 흥미로웠다.

배경 시대별 분석

1
image
image
image
image

매체별 분석

image
image
image
image

테마별 분석

image
image
image
image

구성물별 분석

image
image
image

도메인 분야별 분석

image
image
image
image

게임 매커니즘별 분석

image
image
image
image

권장 최소연령별 분석

image
image
image

게임 복잡도별 분석

image
image
image

권장 최소인원별 분석

image
image
image

게임 최대 플레이시간별 분석

image
image
image

가격 분석

image
image
image
image
image

유추되는 미래 경향성

  • 시간의 흐름에 따라 SF 분야의 수요가 늘어나는 것으로 보이나, 사람들은 낯선 주제를 선호하는 것으로 보인다. 따라서 마찬가지로 시간에 따라 수요가 늘어나는 경향을 보이는 중세 배경 판타지 장르를 배경으로 삼는 것이 주류일 것으로 예상된다.
  • 지금까지의 추세로 보았을 때, 특히 코로나 등의 여파가 남아있다면 더더욱 1인용 플레이를 지원하는 보드게임이 강세일 것으로 예상된다.
  • 시간의 흐름에 따라 전체적으로 게임의 난이도가 높아지는 경향이 보인다. 따라서 플레이 시간이 길고 복잡한 구성도 시장에서 받아들여질 것으로 예상된다.
  • 현대로 넘어올수록 만화, 게임을 원작으로 하는 보드게임이 늘어나는 것을 볼 때 여러 게임, 만화의 판권을 토대로 공격적으로 사업을 전개하는 것도 좋을 것으로 보인다.

아쉬운 점..

  • 발매 국가 등에 대한 데이터가 존재하지 않아 국가별 통계 분석이 불가능하였다.
  • 국내산 보드게임이 유의미한 정도의 규모가 아니기 때문에 국내산 보드게임에 대한 분석을 할 수 없었다.
  • 해당 데이터로 알 수 있는 것은 발매종류뿐, 실질적인 판매량에 대한 데이터는 알 수 없다. 따라서 많이 발매되는 분야에 대한 분석은 가능하나 많이 판매되는 분야는 알기 어렵다.
  • 국내 발매후 해외가격 대비 국내가격에 대한 데이터 역시 얻을 수 없었다.

시간이 더 있었다면..

  • 움직이는 바 그래프의 항목별 아이콘 이미지가 표시되게끔 만들고 싶었다.
  • 움직이는 바 그래프에 좀 더 다양하고 정확한 역사 연표를 표기하고 싶었다.
  • 파이그래프도 막대그래프처럼 움직이는 시각화를 시도해보고 싶었다.
  • 부족한 데이터를 얻기 위해 국내 사이트를 좀 더 조사해보고 싶었다.

팀원

  • 성용호 : 웹 크롤링, 데이터 수집 담당 (사용툴 : Selenium, BeautifulSoup, pandas)
  • 송승훈 : 데이터 프레임 전처리, 가공 담당 (사용툴 : pandas, numpy, matplotlib)
  • 신재성 : 시각화, 디자인 담당 (사용툴 : pandas, matplotlib)

첨부 데이터

  • 크롤링
    • data_crawl.ipynb (성용호) : BoardGameGeek 사이트에서 크롤링을 통한 데이터 추출하는 코드
    • danawa.ipynb (신재성) : 다나와 사이트에서 아동용 장난감 가격 데이터를 추출하는 코드
    • danawa_golf.ipynb (신재성) : 다나와 사이트에서 골프용품 가격 데이터를 추출하는 코드
    • boardlife_df.ipynb (성용호) : 보드라이프로부터 크롤링을 통해 데이터를 추출해서 BoardGameGeek의 데이터와 비교하는 코드
  • 데이터 프레임 가공
    • df_preprocessing.ipynb (송승훈) : 크롤링한 데이터들을 1차 전처리해서 사용하기 용이하게 합쳐놓
    • boardgamegeek_df.ipynb (송승훈) : BoardGameGeek 사이트로부터 추출한 데이터 파일을 가공해서 여러가지 형태로 분석시킨 코드
  • 시각화 및 데이터 분석
    • design_graph.ipynb(신재성) : 산출된 그래프를 더 효과적인 시각화가 되도록 디자인 개선시킨 코드
  • 데이터

About

EDA 프로젝트 4조 저장소. 🎲 보드게임 트렌드 분석 🎲

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published