Git Product home page Git Product logo

karttrack-lap / kartrider-game-analysis Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 0.0 35.11 MB

유저가 선호하는 트랙을 만들기 위해서는 어떤 특성을 고려해야할까요? 카트타고 출근팀의 Kartrider-game-anlysis는 신규 트랙 디자인을 고민하는 카트라이더 트랙 디자이너를 위해 유저가 선호하는 트랙의 특징을 분석하는 프로젝트입니다.

Jupyter Notebook 100.00%
data-analysis game game-data-analysis kartrider regression-analysis

kartrider-game-analysis's People

Contributors

goodkse7 avatar hhyojjin avatar hoinnovation avatar hyeming-king avatar jiyoonlee18 avatar junetofeb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

kartrider-game-analysis's Issues

[Data 지표추출] API_ percent_retire가 100이상인 문제 해결

Issue : [Data 지표추출] API

Description

percent_retire는 cnt_retire_user/cnt_user*100으로 100이상이 나오면 안되는데, 100이상인 값을 발견해서 해결하고자합니다.

To-do

  • SQL 쿼리 '05-single_09121010api-EDA' 확인
  • 쿼리 수정 후 percent_retire 재 추출

[Data 통계분석] 3일치 데이터 통계분석 테스트

  • 회정 : year로 독립변수, month 로 독립변수 단순 회귀 돌려보기 + 추가로 다른 변수를 합치면서 (시간 위주로)
  • 시은 : 트랙 9 등 일부 트랙 제외하고 회귀분석 진행해보기
  • 효진 : 종속변수를 rank로 변환해서 ols 단순 회귀 해보기
  • 혜민 : 각 변수 경향성 확인하기 → 왜도, 첨도 값 구하고 → 경향 있으면 이슈에 공유 → 전부 다 진행하면 회귀분석 넣고 빼고 하면서 진행

[데이터] - api 데이터 확인하기

api 데이터 가져오기 & 데이터 확인하기

과정 :

  • API를 통해 response를 확인하는 request 코드 구현
  • API가 연결되면, 데이터 보여주는 코드 (.json())
  • 매치 상세정보 조회 데이터 파악 (MATCH, USER 데이터 분리 위함)
  • MATCH, USER

파악 필요한 것

  • 한 번에 몇 건의 데이터를 불러올 수 있는지 (Limit)
  • offset(시작점)에 따라 겹치는 데이터가 있는지
  • limit, offset의 한계로 출력되지 못하는 데이터가 있는지
  • 요청 시간에 플레이 되고있는 모든 데이터를 출력하는지
    - 만약 그렇다면, 플레이타임 (총 2분, 1분 시작 3분 종료) 기준
    - 0-2분 / 2-4분 모두에 존재하는 데이터 중복의 가능성 있음
  • drop_duplicates를 썼을 때와 안쓰고 nunique() 값을 쓸때 왜 값이 다르게 나오는지 (2022-10-16 추가)
  • 현재는 2분 기준으로 api를 날리게끔 되어 있는데 1분 단위로 날리면 매치 건수가 다르게 나올지 (2022-10-16 추가)

[Data 전처리] API_ 데이터 정합성 파악하기

데이터 정합성(Data Consistency) 파악하기

  • api로 카트라이더에서 제공한 데이터에 중복이 있는지 확인 필요!
  • 일정 기간 이후 id 값이 변경되는 경우가 있을 수도 있으니, 같은 이름을 가지는 id 값이 있는 지 확인해 보아야함

[데이터 환경 구축] 분석 환경_컬럼명, 테이블명 수정

Issue : [데이터 환경 구축]

Description

분석에 필요한 테이블에서 trigger 테이블명 변경, track_straight에서 속성 추가로 넣어주어야함
테이블 import 하면 index 함꼐 로드 됨.

To-do

  • 테이블명 오타 수정 tigger -> trigger

  • track_straight 테이블에 straight_all_section 추가로 넣어주기

  • 테이블 index = False 지정하여 내보내기

[Data EDA] API_ 3일치 데이터와 한 달 데이터 EDA진행

Api로 수집한 데이터 EDA

데이터 : 00-single_10031010.csv

  • 추출 시간 : 2021년 10/3(월) ~ 10/9(일) 7일 데이터

완료한 내용

  • EDA
  • 주요 지표 도출

확인 필요한 내용

  • 21년 데이터가 맞는지 확인 요청
    : 21년 데이터로 알고 있는데 올해 출시 된 메이플 트랙이 포함되어 있습니다. 21년 데이터가 맞는지 확인 필요

    • #10 에서 해결
  • rankinggrade2: 플레이어의 라이센스 확인 필요
    : 깃허브 글에서는 rankinggrade2는 플레이어의 라이센스로 0은 없음, 1-6은 초보부터 pro까지, 게임 종료시 "", single_10031010 데이터로 확인해보니, rankinggrade2는 0-6
    그리고 22년 1008일 데이터인 single_1008로 확인해보니 rankinggrade2는 0-5가 있었으니 다른 데이터 뽑아서 플레이어의 라이센스가 0-6인지 확인 필요

    • #10 에서 해결
  • 개인전 데이터가 뽑혔는지 확인 요청
    : 개인전이기 때문에, matchWin이 1(승리)이면, matchRank는 1 즉 1위만 승리하게 뽑혔는지 검증했는데요. 2위~7위,리타이어 된 유저가 matchWin이 1인 것을 발견, matchId에 개인전이 잘 들어간 건지 matchId를 넥슨 api홈페이지에서 검색해봤는데 개인전이 아닌 아이템 배틀임. 개인전이 잘 들어간건지 확인 필요

    • #18 에서 해결

[설문조사]

📃1차 설문조사

  • 설문조사 기획하기 (설문조사를 통해 우리가 알고 싶은 것 정리하기)
  • 설문지 카테고리 정리하기 (ex : 1. screening question / 2. 카트 관련 질문 / 3. 트랙 관련 질문 / 4. 인구통계적 변수)
  • 각 카테고리별 질문, 설명, 측정법 정하기
  • 설문지 주의사항 체크하기

📃2차 설문조사

  • 설문조사 기획하기 (설문조사를 통해 우리가 알고 싶은 것 정리하기)
  • 설문지 카테고리 정리하기 (ex : 1. screening question / 2. 카트 관련 질문 / 3. 트랙 관련 질문 / 4. 인구통계적 변수)
  • 각 카테고리별 질문, 설명, 측정법 정하기
  • 설문지 주의사항 체크하기

[Data 전처리] 크롤링_ ERD기준에 맞게 테이블 컬럼 변경하고, 출시일 컬럼 삭제, null로 입력된 데이터 추가

Issue : [Data 전처리] 크롤링

Description

api 데이터로 추출한 kpi데이터와 크롤링 데이터를 조인하기 위해 크롤링 데이터 전처리를 진행합니다.

To-do

  • 1. ERD기준에 맞게 테이블 컬럼을 변경하는 작업을 진행합니다.
  • 2. 출시일과 첫 등장일 컬럼 내용이 동일해서 출시일 컬럼을 삭제합니다.
  • 3. null로 입력된 데이터를 직접 추가합니다.

[트랙 분석] - 정량적 지표 기준 정하기

트랙분석을 통해 정량적 지표를 만들기 위한 기준 정하기

  1. 곡선과 직선 어떻게 구간화 할 것인지
  2. 장애물 분류 및 체크 방법 정하기
  3. 지름길 분류 및 체크 방법 정하기
  4. 도로폭, 벽면 체크 방법 정하기
  5. 오르막길, 내리막길 구간 기준 및 체크 방법 정하기

[Data 지표 추출] API_ 트랙 사용률 기반 '인기' 상위, 하위 트랙 기준 정하기

사용 데이터 : 9/12 ~ 10/9 동안 카트라이더 OPEN API 기반 수집 데이터에서 아래의 기준을 적용한 가공 데이터 (이하 KPI)

기준(SQL 검색 조건 혹은 우리가 사용하게 될 1달 데이터에 대한 설명) 링크

각 트랙의 28일 사용 건수를 계산하고, 해당 지표를 트랙 인기의 척도로 확인합니다.

- 트랙 사용 건수 정의 : cnt_match 사용, 28일간 각 트랙 당 플레이 된 매치 수

데이터 가공

(1) 결측치 제거

  • track 메타 데이터와 kpi 데이터를 track_id를 기준으로 join하여 만든 데이터
  • 만약 null이 출력된다면 kpi 에는 존재하지만, track 메타 데이터에 track_id가 없는 값
  • 최종 kpi 데이터에서 출력되는 null값은 없었음.

(2) 지표 정하기

  • cnt_match : 28일간 각 트랙 당 플레이 된 매치 수
  • cnt_user : 28일간 각 트랙을 플레이 한 유저 수
    • 둘 중 어떤 지표로 '사용률'을 정의할 것인지 정의 필요
    • 두 지표가 큰 상관성을 가지는지 파악 위해 상관분석 진행
    • 두 지표는 0.81의 높은 상관성을 가지는 것으로 파악되어, 둘 중 어떤 지표를 사용하든 트랙 정렬에 있어 비슷한 추이를 보일 것이라고 판단.

(3) 이용하지 않을 데이터 삭제

  • 하루에 한 번도 플레이 하지 않았다면, 사용이 거의 되지 않는 맵이라고 판단
  • 28일 데이터 기준, 28회 이하로 플레이 된 맵은 삭제

(4) 상위, 하위 트랙 설정

  • 28회 초과 플레이 된 트랙들을 줄 세워 상위 25%, 하위 25%에 속하는 트랙을 각각 상위, 하위 트랙으로 설정
  • Q3 이상 44건, Q1 미만 44건을 각각 상위, 하위 트랙으로 출력하였음.

[데이터 import] - MySQL 데이터 업로드

Python을 이용하여 MySQL에 데이터를 바로 업로드 하는 방법입니다

  • MySQL에 반드시 SCEMA를 먼저 생성 후 시도해주세요!
  • 생성한 SCEMA이름에 따라 변수 명을 수정해 주세요!

[Data 환경 구축하기] 데이터 수집 환경_ 대용량 데이터 수집

대용량 api 원하는 데이터 뽑아올때

  • 하루 단위 데이터 뽑는 데 걸리는 시간 확인 (주말/평일)
  • 하루 단위 데이터 용량 확인 (주말/ 평일)

고민해볼 사항 + 방법 찾아보기

  • 파이썬 스크립트를 배치파일로 날짜 돌려가면서(자동으로 다음날짜 뽑기) 작동시킬 수는 없는지
  • 가능하다면 방법 더 찾아보기
  • 각각 다운받은 하루 데이터를 어디에서 모으고 합칠 수 있을지
    • AWS의 DB 환경으로 하루하루 데이터를 넣고 -> spark로 데이터베이스 연결해서 합치는 것이 좋을지
  • ⭐️ AWS S3이 배치 관련인 것 같음! 더 찾아봐야할 것 같음

등등
대용량 데이터를 처리하는 방법에 대해 고민해보아요 🙏🏻

[Data 전처리] 크롤링_crawl_data_with_theme 파일을 Meta 데이터 기반으로 조인 변경

Issue : [데이터 전처리]

Description

242fac7 [크롤링/테마/메타(raw)데이터 텍스트 전처리 코드]

  • crawl_data_with_theme (크롤링 데이터 기반 데이터) 데이터와 map_name_with_theme(Meta 데이터 기반데이터) 데이터를 merge하는 코드
  • 위 과정에서 crawl_data_with_theme (크롤링 데이터 기반 데이터)를 기준으로 merge 되어 일부 Meta 데이터 유실 발생

To-do

map_name_with_theme(Meta 데이터 기반데이터) 기반으로 재 merge 작업 필요

ETC

기존 데이터 변경 커밋 필요

[Data 전처리] crawl-data-with-theme + api_Kpi 결측치 채우기

Issue : [Data 전처리]

Description

#30 에서 확인한 API_KPI 데이터 기반 상위/하위 트랙의 결측치를 수기로 채워넣습니다.
해당 결측치는 Crawling 단계에서 크롤링이 불가능하였던 데이터로 수기작업이 불가피합니다!

To-do

카트라이더 공식 문서 기준 결측치를 수가로 채워넣었습니다!

ETC

이 작업을 끝으로 API_KPI 데이터 기반 상위/하위 트랙 데이터가 완성됩니다👏👏

[Data 전처리] crawl-data-with-theme + api_Kpi 데이터 조인

Issue : [Data 전처리]

Description

재 merge한 crawl-data-with-theme와 API기반 KPI 데이터를 조인합니다.
merged된 API_KPI데이터를 바탕으로 상위/하위 트랙을 추출합니다.

To-do

API 기반 KPI 데이터를 기준으로 재 merge한 crawl-data-with-theme를 붙여, KPI의 name(track_name) 기준 데이터가 남도록 합니다.

ETC

#31 API_KPI 데이터 기반 상위/하위 트랙 데이터에서 결측치 채우기 후속 작업이 필요합니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.