데이터 분석 시각화 테크닉_1

Stella Kim·2022년 8월 16일
0

[책] 데이터 분석

목록 보기
1/2
post-thumbnail

데이터 분석에 대해 공부하며 읽었던 책의 주요 내용을 요약하였다.

<책 정보>

제목: SQL로 분석하고 Tableau로 시각화하자(실무 예제로 익히는 데이터 분석 시각화 테크닉)
출간일자: 2020
저자: 모원서
출판사: 비제이퍼블릭

00 들어가기에 앞서

  • 데이터 분석가의 역할: 개발자/데이터 엔지니어가 저장 및 수집한 데이터를 활용해, 데이터를 근거로 의사결정에 필요한 인사이트를 분석. 이러한 인사이트를 토대로, 데이터 과학자와 함께 새로운 비즈니스 구현
    즉, 데이터를 기반한 비즈니스에서 중추적인 역할 수행

  • SQL 및 Tableau를 배워야 하는 이유
    - SQL은 데이터를 추출/수집/가공/검색/분석할 때 사용되며, 데이터 분석을 위한 기본적인 언어
    - Tableau는 분석 인사이트를 표, 그래프 등으로 시각화할 때 사용되며, 기업에서 가장 선호하는 BI Tool

01 SQL을 학습하기 전에

  • SQL은 데이터에 질문을 하는 언어, Tableau는 데이터를 시각화하는 도구
  • 데이터 추출/수집/가공 , 데이터 검색/분석 , 데이터 시각화
  • 데이터 분석 Tools: R, Python, Scala, Spark
  • 데이터 전처리
    | 데이터 정제 | 데이터는 채우고 잡음은 제거 |
    | 데이터 통합 | 여러 개의 데이터베이스, 데이터 파일 통합 |
    | 데이터 축소 | 데이터 볼륨 줄이거나 분석 대상의 차원 축소 |
    | 데이터 변환 | 데이터 정규화 또는 집단화 |
    | 데이터 이산화 | 데이터 구간화 |
  • 데이터 전처리 프로그램: Tableau Prep / Python / R

02 기본에 충실한 SQL

01 SQL 기본 구조

  • SQL: 데이터를 추출/수집/가공/검색/분석하기 위한 언어
  • SQL이 사용되는 RDBMS: MS-SQL, MySQL, Oracle, PostgreSQL
  • SSMS: SQL Server 연결/쿼리 작성 및 실행/데이터베이스 선택

02 SQL 기본 명령어 분류

  • DDL(Data Definition Language): 테이블 생성(Create), 변경(Alter, Rename), 삭제(Drop, Truncate)
  • DML(Data Manipulation Language): 데이터 삽입(Insert), 조회(Select), 수정(Update), 삭제(Delete)
  • DCL(Data Control Language): 데이터 접근 권한 부여(Grant), 제거(Revoke)
  • TCL(Transaction Control Language): DML 명령어를 실행(Commit), 취소(Rollback), 임시 저장(Savepoint)

※ Delete vs Truncate vs Drop

  • Delete는 데이터만 삭제
  • Truncate는 데이터+테이블 공간만 삭제
  • Drop은 테이블 전체 삭제

03 데이터 분석에 필요한 SQL

01 조회(SELECT)

  • SELECT와 함께 사용되는 절: FROM / WHERE / GROUP BY / HAVING / ORDER BY
  • 문법 순서: SELECT --> FROM --> WHERE --> GROUP BY --> HAVING --> ORDER BY
  • 실행 순서: FROM --> WHERE --> GROUP BY --> HAVING --> SELECT --> ORDER BY

02 결합(JOIN)

  • ERM(Entity-Relationship Modeling): 데이터를 구조화하여 데이터베이스에 저장하기 위한 개체-관계 모델링 기법
  • JOIN 종류: Inner(두 테이블 간의 공통 값이 매칭되는 데이터만 조회) / Outer(두 테이블 간의 공통 값이 매칭되는 데이터뿐만 아니라 매칭 안 되는 데이터도 조회) / Cross(두 테이블의 행을 결합) / Self JOIN(한 테이블의 행과 다른 행들을 결합)

03 서브 쿼리(Sub Query)

  • 서브 쿼리: 하나의 SQL 명령어에 포함된 SELECT 명령어
  • 위치: SELECT절, FROM절, WHERE절 뒤
    1) SELECT절: 하나의 열처럼 사용됨. 스칼라 서브 쿼리라고도 함. JOIN의 대체 표현식이지만, 데이터의 양이 많을수록 실행 속도가 느려 거의 사용되지 않음
    2) FROM절: 테이블처럼 사용됨. 인라인 뷰 서브 쿼리라고도 함. 테이블처럼 사용되기 때문에 열 이름 및 테이블명을 명시해주어야 함
    3) WHERE절: 일반 서브 쿼리(단일 및 다중)

04 실무에 필요한 SQL

01 자주 쓰이는 SQL 문법

  • 연산자
구분연산자설명
비교 연산자=같음
>보다 큼
<보다 작음
>=크거나 같음
<=작거나 같음
<>같지 않음
논리 연산자AND앞, 뒤 조건 모두 만족
OR앞, 뒤 조건 중 하나라도 만족
NOT뒤에 오는 조건과 반대
특수 연산자BETWEEN a AND ba와 b의 값 사이
NOT BETWEEN a AND ba와 b의 값 사이가 아님
IN (List)리스트(List) 값
NOT IN (List)리스트(List) 값 아님
LIKE '비교문자열'비교문자열 형태 (예시> '모%'/'%모%'/'%모')
NOT LIKE '비교문자열'비교문자열 형태가 아님
IS NULLNULL 값
IS NOT NULLNULL 값이 아님
산술 연산자+덧셈
-뺄셈
*곱셈
/나눗셈
  • 단일 행 함수

1) 숫자형 함수

함수설명함수 사용결과
ABS(숫자)절댓값 반환SELECT ABS(-123)123
ROUND(숫자,m)m 기준으로 반올림SELECT ROUND(1.56, 1)1.60
CEILING(숫자)크거나 같은 최소 정수SELECT CEILING(1.56)2
FLOOR(숫자)작거나 같은 최소 정수SELECT FLOOR(1.56)1
POWER(n, m)n의 m 거듭 제곱SELECT POWER(3,2)9
SQRT(n)n의 제곱근SELECT SQRT(9)3

2) 문자형 함수

함수설명함수 사용결과
LOWER('문자열')소문자 반환SELECT LOWER('ABCD')abcd
UPPER('문자열')대문자 반환SELECT UPPER('abcd')ABCD
LEFT('문자열', n)왼쪽부터 지정한 수(n)만큼 문자 반환SELECT LEFT('ABCD', 2)AB
RIGHT('문자열', n오른쪽부터 지정한 수(n)만큼 문자 반환SELECT RIGHT('ABCD', 2)CD
LEN('문자열')문자수 반환(오른쪽 공백 제외)SELECT LEN('ABCD')4
REPLACE('문자열", a, b)문자열 중, a가 있으면 b로 반환SELECT REPLACE('ABCD', 'A','a')aBCD
CONCAT('문자열', '문자열'..)둘 이상의 문자열 연결SELECT CONCAT('AB', 'C', 'D')ABCD
LTRIM('문자열')왼쪽 공백 제외 문자 반환SELECT LTRIM(' ABCD')ABCD
RTRIM('문자열')오른쪽 공백 제외 문자 반환SELECT RTRIM('ABCD ')ABCD
TRIM('문자열')양쪽 공백 제외 문자 반환SELECT TRIM(' ABCD ')ABCD
SUBSTRING('문자열', m, n)문자열의 m 위치에서 n개 길이만큼 문자 반환SELECT SUBSTRING('ABCD', 2, 2)BC
CHARINDEX(a, '문자열', n)문자열 중, a가 있으면 위치 반환SELECT CHARINDEX('B', 'ABCD')2
SPACE(n)n만큼 공백 추가SELECT 'A'+SPACE(5)+'B'A B
STUFF('문자열', m, n, a)문자열의 m 위치에서 n개 길이만큼 삭제 후, a로 문자 반환SELECT STUFF('ABCD', 2, 2, 'xx')AxxD

3) 날짜형 함수

함수설명함수 사용결과
GETDATE()현재 날짜 및 시간 반환SELECT GETDATE()현재 날짜/시간
YEAR/MONTH/DAY(날짜열)YEAR, MONTH, DAY 데이터 반환SELECT YEAR('2020-12-31')2020
DATE-PART(기준, 날짜열)지정 기준으로, 데이터 반환SELECT DATEPART(MI, '2020-12-31 10:20:30')20
DATEADD(기준, n, 날짜열)지정한 기준에서, n 숫자만큼 더한 데이터 반환SELECT DATEADD(DAY, -1, '2020-12-31')2020-12-30 00:00:00.000
DATEDIFF(기준, 날짜열a, 날짜열b)지정한 기준으로, 날짜열a,b 차이 데이터 반환SELECT DATEDIFF(YEAR, '2020-12-31', '2021-12-31')1

4) 형 변환 함수

함수설명함수 사용결과
CONVERT(VARCHAR, '날짜열', 기준)지정 기준으로 날짜→문자열 데이터 형식 변환SELECT CONVERT(VARCHAR, GETDATE(), 1)03/03/20
SELECT CONVERT(VARCHAR, GETDATE(), 5)03-03-20
SELECT CONVERT(VARCHAR, GETDATE(), 8)17:05:30
SELECT CONVERT(VARCHAR, GETDATE(), 21)2020-03-03 17:05:30.007
SELECT CONVERT(VARCHAR, GETDATE(), 23)2020-03-03
SELECT CONVERT(VARCHAR, GETDATE(), 111)2020/03/03
SELECT CONVERT(VARCHAR, GETDATE(), 112)20200303
SELECT CONVERT(VARCHAR, GETDATE(), 120)2020-03-03 17:05:30
CONVERT(VERCHAR(n), '날짜열', 기준)지정 기준으로 날짜→문자열 데이터 형식 변환 (n 숫자만큼)SELECT CONVERT(VARCHAR(8), GETDATE(), 112)20200303
SELECT CONVERT(VARCHAR(6), GETDATE(), 112)202003
CAST(특정 열 AS 기준)지정 기준으로 특정 열 데이터 형식 변환SELECT CAST('100' AS INT) + CAST ('100' AS INT)200
SELECT CAST(1.56 AS INT)1

5) 일반 함수

함수설명함수 사용결과
ISNULL(특정 열 지정 값)특정 열이 NULL일 경우, 지정 값 변환SELECT ISNULL(NULL, 0)0
NULLIF(특정 열a, 특정 열b)특정 열 a,b가 같은 경우 NULL/다를 경우 특정열a 변환SELECT NULLIF(1, 1)NULL
CASE WHEN[조건1] THEN [지정 값1] WHEN [조건2] THEN [지정 값2] END여러 조건별로 지정 값으로 변환
  • 복수 행 함수
구분함수설명
집계함수(NULL 값 제외)COUNT건수
SUM합계값
AVG평균값
MAX최고값
MIN최소값
STDEV표준 편차값
VAR분산값
그룹함수WITH ROLLUPGROUP BY 항목들을 오른쪽에서 왼쪽 순으로 그룹
WITH CUBEGROUP BY 항목들의 모든 경우의 수를 그룹
GROUPING SETGROUP BY 항목들을 개별 그룹
GROUPINGWITH ROLLUP 및 CUBE에 의해 그룹화 되었다면 0, 그렇지 않으면 1을 반환
  • 윈도우 함수
구분함수설명
순위 함수ROW_NUMBER()동일한 값에 대해 고유한 순위 반환
RANK()동일한 값에 대해 고유한 순위 반환
DENSE)RANK()RANK()와 흡사하나, 동일한 순위를 하나의 등수로 간주
집계 함수(누적)COUNT()누적 건수
SUM()누적 합계값
AVG()누적 평균값
MAX()누적 최고값
MIN()누적 최소값
  • 집합 연산자
연산자집합설명
UNION합집합중복된 행을 하나의 행으로 반환
UNION ALL합집합중복된 행을 그대로 반환
INTERSECT교집합중복된 행은 하나의 행으로 반환
EXCEPT차집합중복된 행은 하나의 행으로 반환

02 효율화 & 자동화에 필요한 SQL 문법

  • VIEW: 가상 테이블 또는 저장된 SQL 명령어라고 함
  • PROCEDURE: VIEW와 같이 SQL 명령어를 저장하지만, 매개 변수라는 프로그래밍 기능이 추가됨

03 기타

  • 데이터 마트: 분석 목적에 맞게 데이터를 가공한 분석용 데이터 세트
  • 데이터 정합성: 분석 데이터 값들이 서로 일관되게 일치함을 나타내는 정도

05 실무에 자주 쓰이는 SQL 데이터 분석

01 Excel 데이터 분석을 SQL로

  • 임시 테이블: 영구적으로 테이블을 생성할 필요가 없을 때 임시로 사용하는 테이블
테이블사용 위치생성 방법삭제 방법
일반 테이블영구적으로 사용CREATE TABLE [테이블명]DROP TABLE [테이블명]
세션 임시 테이블해당 쿼리창INTO #[테이블명]DROP TABLE #[테이블명] 또는 해당 쿼리 창 종료
전역 임시 테이블모든 쿼리창INTO ##[테이블명]DROP TABLE ##[테이블명] 또는 모든 쿼리 창 종료
profile
취업 준비 용으로 사용했던 기술 블로그입니다. 이제는 업로드 거의 안 할지도..

0개의 댓글