새로운 주제가 시작되는 첫 장이다.
이전 롤 데이터에 이어 이번에는 축구 데이터이다.
이쯤되면 강사님의 기호가 반영된 주제선정 같기도..??
다만 이전의 주제들과 차이가 있다면 데이터셋 준비 방식에 있다.
기존에는 Kaggle API를 통해 CSV 파일을 가져왔다면,
이번 주제에서 다루는 데이터들은 SQL 데이터 형태를 판다스 데이터프레임으로 변환하는 방식이다.
SQL 이야기는 본 강의의 주된 내용이 아니긴하지만
강의에서도 잠깐 설명해준 만큼 간단하게 요약?을 해보려고한다.
SQL(Structured Query Language)은 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 관리하고 검색하기 위한 언어이다.
이 때 테이블이라는 용어를 자주 쓰게되는데 테이블(Table)은 2차원 데이터 구조를 사용하여 데이터를 저장하고 이를 기반으로 원하는 방식에 맞춰 조회 및 추출이 가능하다.
RDBMS에 대해서도 간략히 서술하자면, 대표적인 RDBMS로 Oracle, MySQL, PostgreSQL, SQL Server 등이 있다.
각각의 RDBMS는 SQL 구문의 일부 기능을 구현하는데 차이가 존재하는데 요즘은 정리된 글도 많아서 어렵지 않게 환경에 적절한 구문(혹은 함수)을 찾아서 볼 수 있다.
이번 주제에서 활용하는 시스템은 위에 예시와 살짝 다른 Sqlite이다.
혹시 추가로 차이에 대해 궁금하다면 별도로 검색하여 확인하는걸 추천한다.
(간단하게 정리하면 조금 더 가벼운 SQL 방식이라고 이해하면 되려나?)
이제 아래 코드와 함께 데이터베이스 읽어오는 과정을 살펴보자
# sqlite3 import 한 뒤 데이터베이스 읽어오기
import sqlite3
# sqlite3.connect()와 pd.read_sql_query()로 데이터 읽어오기
conn = sqlite3.connect('database.sqlite')
df_country = pd.read_sql_query('select * from Country', conn)
df_league = pd.read_sql_query('select * from League', conn)
df_match = pd.read_sql_query('select * from Match', conn)
df_player = pd.read_sql_query('select * from Player', conn)
df_player_att = pd.read_sql_query('select * from Player_Attributes', conn)
df_team = pd.read_sql_query('select * from Team', conn)
df_team_att = pd.read_sql_query('select * from Team_Attributes', conn)
위 코드 설명에 앞서 해당 Kaggle을 들어가서보면 (https://www.kaggle.com/datasets/hugomathien/soccer)
Data 설명이 테이블 구조와 함께 나타나있다.
이러한 테이블들을 read_sql_query를 활용하여 불러왔고,
그 뒤로 SQL 쿼리문을 통해 해당되는 테이블들을 정리한 내용이다.
이렇게 불러온 데이터는 조회 시 아래와 같이 나타난다.
다행히 원천 테이블이 그리 복잡하진 않아서 간단한 편이었는데
실제 분석 상황에서는 테이블 단위에서부터 고민거리가 생길 수 있기 때문에
SQL에 대한 어느정도 지식 및 활용능력은 배양하는걸 추천한다.
자주 쓰다보면 엑셀보다 SQL이 쉽다 ㅎㅎ
http://bit.ly/3Y34pE0
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Analytics > Study' 카테고리의 다른 글
실전#4 오늘 밤 유럽 축구, 어디가 이길까(3) (0) | 2023.03.10 |
---|---|
실전#4 오늘 밤 유럽 축구, 어디가 이길까(2) (0) | 2023.03.09 |
실전#3 데이터로 알아보는 리그 오브 레전드의 승리 공식(3) (1) | 2023.03.07 |
실전#3 데이터로 알아보는 리그 오브 레전드의 승리 공식(2) (1) | 2023.03.06 |
실전#3 데이터로 알아보는 리그 오브 레전드의 승리 공식(1) (0) | 2023.03.05 |