웹대시보드 프로젝트 1일차.
1. 데이터 주제 선정
- 주제 : nba 경기 및 선수 스탯으로 웹대시보드 만들기.
2. 데이터 조회
https://www.kaggle.com/datasets/nathanlauga/nba-games?resource=download&select=teams.csv
NBA games data
Dataset with all NBA games from 2004 season to dec 2020
www.kaggle.com
kaggle 에서 nba 데이터를 다운로드
3. 주피터 노트북에서 데이터 확인하기
import pandas as pd
df_teams = pd.read_csv('data/teams.csv')
df_games = pd.read_csv('data/games.csv')
df_players = pd.read_csv('data/players.csv')
df_games_detail = pd.read_csv('data/games_details.csv',low_memory = False)
df_teams 의 데이터를 확인
내가 필요한 데이터만을 가져온다.
# teams 에 내가 필요한 데이터 추출
# team_id , ABBREVIATION, YEARFOUNDED,CITY,ARENA
df_teams = df_teams.loc[:,['TEAM_ID','ABBREVIATION','YEARFOUNDED','CITY','ARENA']]
df_games 데이터를 확인
필요한 데이터만 가져온다
# games 에 내가 필요한 데이터 추출
# GAME_DATE_EST,HOME_TEAM_ID,PTS_home,AST_home,REB_home,TEAM_ID_away,PTS_away,AST_away
# REB_away,HOME_TEAM_WINS
df_games = df_games.loc[:,['GAME_DATE_EST','GAME_ID','HOME_TEAM_ID','PTS_home','AST_home','REB_home','TEAM_ID_away','PTS_away','AST_away','REB_away','HOME_TEAM_WINS']]
df_players 확인
df_games_detail 확인
확인해보니 kaggle 들의 설명값과 데이터 값들이 무엇인가 이상함을 느꼇다.
컬럼 설명인데 comment 부분은 분명 플레이 타임이어야 하는데 값이 없고 min은 필드골 인데 시간이 들어와있다.
이를 해결하고자
데이터를 분할한뒤 shift 함수로 한칸씩 땡기고 다시 합치는 방법을 사용하였다..
아마도 더 좋은 방법이 있을테지만 당장에는 이방법 밖에 떠오르지가 않았다.
# 문제 없는 데이터프레임
df_games_detail_1 = df_games_detail.loc[:,:'START_POSITION']
# 문제 있는 데이터프레임 짜른 뒤 수정
df_games_detail_2 = df_games_detail.loc[:,'COMMENT':].shift(-1,axis= 1)
# 짜른 두 코드를 합쳤다.
df_games_detail = pd.concat([df_games_detail_1,df_games_detail_2],axis=1)
이제 필요한 부분만 가져온다
df_games_detail = df_games_detail.loc[:,['GAME_ID', 'TEAM_ID','PLAYER_ID','PLAYER_NAME','START_POSITION',
'COMMENT','MIN', 'FG_PCT', 'FG3_PCT',
'DREB', 'REB', 'AST', 'STL', 'BLK','TO']]
그리고 가져온 모든 데이터들의 컬럼을 내가 보여주고 싶은 컬럼명으로 변경한다.
rename ={ 'GAME_DATE_EST' : '경기날짜' ,'GAME_ID':'경기ID', 'HOME_TEAM_ID':'홈팀ID','PTS_home':'홈팀점수','AST_home':'홈팀어시','REB_home':'홈팀리바운드','TEAM_ID_away':'어웨이팀ID','PTS_away':'어웨이팀점수','AST_away':'어웨이팀어시','REB_away':'어웨이팀리바운드','HOME_TEAM_WINS':'홈팀승리여부' }
df_games = df_games.rename(columns=rename)
rename_detail = { 'GAME_ID':'경기ID','TEAM_ID':'팀ID','PLAYER_ID':'선수ID','PLAYER_NAME':'선수명',
'START_POSITION':'포지션',
'COMMENT':'출전시간','MIN':'2점슛', 'FG_PCT':'3점슛', 'FG3_PCT':'자유투',
'DREB':'리바운드','REB':'어시스트','AST':'가로채기','STL':'블락','TO':'턴오버수'}
df_games_detail = df_games_detail.rename(columns=rename_detail)
rename_playes = { 'PLAYER_NAME':'선수명','TEAM_ID':'팀ID','PLAYER_ID':'선수ID','SEASON':'시즌' }
df_players=df_players.rename(columns=rename_playes)
rename_team = {'TEAM_ID':'팀ID','ABBREVIATION':'팀약어','YEARFOUNDED':'팀창설해',
'CITY':'연고지','ARENA':'홈구장'}
df_teams = df_teams.rename(columns=rename_team)
'개발 > 프로젝트' 카테고리의 다른 글
웹대시보드 프로젝트 - 6일차 (EC2에서 에러 해결하기) (1) | 2022.12.23 |
---|---|
웹대시보드 프로젝트 5일차 - 선수탭 작성 (차트 추가 , 데이터 분석) (0) | 2022.12.23 |
웹대시보드 프로젝트 4일차 (0) | 2022.12.21 |
웹대시보드 프로젝트 - 3일차(팀 차트추가 및 데이터 가공 , ec2서버에 한글 추가) (0) | 2022.12.19 |
웹 대시보드 프로젝트 - 2일차 ( 이미지, 차트로 데이터 표기) (0) | 2022.12.19 |