SQL 쿼리 문법을 활용하여 데이터 분석을 진행하기(5)

2023. 12. 8. 17:11TIL

실전 데이터 분석 사례 1 - Indian Restaurant Dataset

 데이터를 분석하기 전 먼저 중복이 있는지 확인한다. 프랜차이즈 식당들이 있어 중복이 있었다. 그다음 별점 기준 상위 20개 식당을 알아보니 모두 단일 점포이었다. SQL파일을  csv파일로 export 한 뒤 데이터 시각화를 할 수 있다. 히스토그램으로 시각화를 하니 단일 점포는 별점의 분포가 양끝으로 더 넓게 퍼져 있다. 만약 데이터가 상식과 맞지 않을 경우 데이터에 이상은 없는지, 분석 상 오류가 있는지 확인해야 한다. 엑셀이나 파이썬을 활용해 변수 간의 상관계수를 구할 수 있다. 점포개수와 별점과의 상관계수는 양수이고 평균가격, 평균 배달 시간과 별점과의 상관계수는 음수이었다. 지역별로 가격, 배달 시간, 별점 평균을 비교하였다. 가격이 저렴한 지역은 남인도 음식점과 거리 음식점이 많은 지역이었다. 평점이 가장 높은 지역은 베이커리와 비리아니 음식점이 상대적으로 적은 지역이었다.

 

실전 데이터 분석 사례 2 - Global AI, ML, Data Science Salary

 연도별 데이터가 얼마나 있는지 알아보았다. 2020년과 2021년은 상대적으로 데이터가 많지 않아 2022년과 2023년 데이터를 중심으로 분석하였다. 숙련도가 높을수록 연봉이 높았고 재택근무는 50%정도 할 때가 연봉이 제일 낮았다. 2022년보다 2023년에 고연봉 연차가 더 늘어났다. 그리고 연봉이 가장 높은 중간 크기 회사의 비중에 2022년에 비해 2023년에 늘어났기 때문에 2023년에 평균 연봉이 증가했다 말할 수 있다. 직책을 부르는 호칭이 다양하여 범주를 정해서 분석하였다. 연봉이 가장 높은 직책은 director가 들어간 직책이었고 그다음은 scientist, engineer이었다. 

 

 

실전 데이터 분석 사례 3 - NBA Player

 데이터는 시즌별로 고르게 있고 동명이인이 있어 중복이 있었다. 시즌이 지날수록 선수들의 키와 몸무게 평균은 줄어드는 추세, 시즌 내 소화하는 게임 수는 증가 추세이다. 평균득점과 어시스트는 증가하는 추세이고 리바운드는 유지되는 경향이었다. 드래프트 1라운드, 10순위 이내에 뽑힌 선수들의 키와 나이 추세가 감소하였다. 시즌별 득점 1위 선수가 당연히 10위 이내 선수들의 평균 득점보다 높았다. 농구 특성 상 뛰어난 개인이 많은 득점을 할 수 있는 스포츠이기 때문에 유의미하게 차이가 있었다. 

 

 

강의 요약

 SQL은 원하는 형태로 데이터를 가져올 수 있고 간단한 데이터 분석을 수행할 수 있다. 관계형 데이터베이스는 테이블/행/열로 이루어지며 SQL은 관계형 데이터베이스를 사용하기 위한 표준 언어이다. 데이터 조회의 기본(SELECT, FROM, WHERE), 비교 연산자, 논리 연산자, 정렬과 집계(GROUP BY, ORDER BY, HAVING, 집계함수), 기초 SQL 함수, DDL, DML 등을 배웠다. 그리고 두 개 이상의 테이블을 특정 key를 기준으로 결합하는 JOIN, UNION, UNION ALL, WITH, Subquery도 배웠다. 또, 타임스탬프 함수, 타입 변환(CAST, CONVERT), 조건문(IF, CASE WHEN), RANK, PERCENT_RANK, LEAD, LAG 등 다양한 함수도 알아보았다. 숫자, 문자, 이진 같은 데이터 타입을 공부하였고 Array, Key-value도 배웠다. 효율적인 SQL 코드를 작성하기 위해 테이블을 집합으로 생각하고 필터링으로 최대한 작게 만들어 놓고 JOIN이나 집계 연산을 수행하고 *,% 사용 대신 LIMIT, 파티션 조건을 사용해야 하며 데이터 타입 잘 확인해야 한다. JOIN 시 중복을 의식하고 행수가 커지지 않도록 유의하며 나중을 대비하여 코드 가독성을 높여야 한다. 

 

 

공부하며 어려웠던 내용

 SQL을 활용하여 데이터를 탐색하는게 막연하였는데 사례를 보고 어느 정도 감이 잡혔다. 강의 내용을 참고하여 프로젝트를 할 때 활용해야겠다.