[ZB] SQL분석 - chap1. 시장동향이해

porii·2024년 10월 11일

[edu] zerobase

목록 보기
13/28

결과 대시보드 미리보기

chap1.시장 연월별 전체 거래액 대시보드 Tableau 링크

과제 - (집계/전처리) 데이터셋 체크, 지표설계 - (시각화) 인사이트

BI Tool - Tableau, Looker Studio, Power BI

BI ( Business intelligence )

= 비즈니스 의사결정을 위한 전 과정

  1. 데이터를 통한 구체적인 방향성 도출 ( data-driven )
  2. 이전 성과에 대한 이해 + 누적된 경험 ( data-informed )
  3. 다양한 데이터를 통한 새로운 방향성 ( data-inspired )

BI Tool

  • Tableau(태블로) : 시각적 분석 플랫폼
    • Drag & Drop
    • 다양한 시각화
    • 다양한 데이터 소스 연동

Chap1. 공공데이터 - 시장 동향 이해

< 통계청 공식 데이터로 온라인 쇼핑 동향 파악하기 >

  • Role : 이커머스 분야 BA
  • 진행
    • 전처리
    • 태블로/루커스튜디오
    • 동향 파악

why “시장”?

  • 시장에 대한 이해가 중요
  • 비즈니스와 관련하여 관심사 넓어야 - 도메인, 시장/트렌드, 경쟁사

데이터셋

  • 통계청에서 매월 온라인 쇼핑동향 발표
    • 카테고리별 거래액, 성장률
    • 단위 : 백만원
    • 매월 m-2월(2개월 전) 의 데이터 업로드
    • 샘플링 조사 후 전수 추정
    • 23개 상품군
    • 2017.1월 ~
  • 판매매체 따라 - 모바일 쇼핑 / 인터넷 쇼핑 취급범위 따라 - 종합몰 / 전문몰 운영형태 따라 - 온라인 매장 / 온오프라인 복합 매장

데이터셋 재구조화

  • 필요성 이유 (주어진 데이터의 문제점)
    • 이미 집계 완료 - melt
    • 총합, 중간 집계값 존재- indexing
    • 가전,전자,통신기기 카테고리 세분화 - indexing
    • 날짜컬럼 양식 불일치
  • 전처리 방법
    • 집계 완료된 형태를 재구조화 pd.melt()
      1. pd.melt() - wide → long

      2. pd.pivot_table()- long → wide. pivot과 달리 집계도 함 (즉, value값이 여러 개여도 O)

        pd.melt(id_vars = None,            # 유지할 컬럼
        				value_vars = None,         # 변환할 컬럼
        				var_name = None,           # 변환 후 생성되는 컬럼 이름
        				value_name = 'value')      # 변환 후 생성되는 값 컬럼의 이름
        
        pd.pivot_table(values = None,      # 집계값
        					index = None,            # 집계기준(행)
        					columns = None,          # 집계기준(열)
        					aggfunc = 'mean')        # 집계방식 - value마다 다른 집계 할때 {'a':'sum', 'b':'mean'}
      3. pd.pivot() - long → wide. 배치만 함. (value값이 여러 개면 error)

      4. pd.concat()

        axis=1 - 가로로 붙여, 행 개수 다를 경우 빈 칸은 NaN으로

        axis=0 - 세로로 붙여 (default), 컬럼명이 다르면 각각 생성 후 NaN 값 됨

  • 데이터 열기
    • 한글파일 열 때 인코딩 옵션
      encoding = 'cp949'|'utf-8'|'utf-8-sig'
  • list comprehension
    # [2, 4, 6, 8, ... , 20]
    
    #1
    test= []
    
    for i in range(1, 11):
    		i = i * 2
    		print(i)
    		
    		test.append(i)
    
    #2 - list comprehension
    [i * 2 for i in range(1, 11)]
    • 특정 컬럼에 데이터가 어떤 데이터타입으로 들어가 있는지 확인할 때
    • set : 중복을 제외한 고유값들을 집합으로 반환
      set([i % 2 for i in range(1, 11)])
      
      -> {0, 1}
    • if 문
      [i for i in ragne(0, 20)]
      -> [-,1, 2, 3, ..., 18, 19]
      
      test = []
      fori in range(0, 20):
      		if i % 2 == 1:
      				test.append(i)
      -> test = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
      
      # range안의 i 중 if문을 만족시키는 i
      [i for i in range(0, 20) if i % 2 == 1]
      -> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
  • Indexing
  • Lambda

반복업무 줄이기

  • 비슷한 형태의 데이터에 대하여 ( ex.) 운영형태별, 취급상품범위별, 판매매체별 3개의 파일에 대해)
  • 반복작업을 처리해야 할 파일이 많을 때
  • 경로
    • 절대경로 : 파일의 전체 경로
    • 상대경로 : 파이썬 실행위치 이후의 경로
  • library - os import os os.getcwd() - 파이썬 실행되고 있는 현재 경로 os.listdir('전체경로'|'.상대경로') or os.listdir() - 경로에 있는 파일 os.mkdir('결과물 저장할 경로') - directory 만들기 os.path.join() - 파라미터로 경로,파일 넣으면 파일의 경로 반환

대시보드 만들기

  • 대시보드가 무엇에 대답해야 하는지 생각 ( Key Question )
  • 질문에 따른 지표 설정 - 명료하게
  • 지표에 적합한 시각화 형태

1. Tableau

  • 저장
    • .twb : 대시보드만
    • .twbx : 대시보드 + 분석에 사용되는 데이터 포함
  • 차원과 측정값
    1. 차원

      데이터 필드의 회색 보조선 위쪽 데이터들

      • 정성적 값
      • 분류 기준이 됨
    2. 측정값

      데이터 필드의 회색 보조선 아래쪽 데이터들

      • 정량적 수치
      • 집계 가능
    • 차원 → 측정값 선택 : 표 default 측정값 → 차원 : 바 그래프 default
    • 차원과 측정값 변경
      • 차원 → 측정값 시 생기는 ‘카운트(고유)’ : 중복되지 않게 세는 것
  • 연속형과 불연속형
    1. 연속형
      • 녹색
      • 무한한 범위
    2. 불연속형
      • 파란색
      • 유한한 범위

  • 시각화
    • Highlight Table
    • bar graph
    • pie chart
      • donut chart - 2개의 파이차트 이중축으로 합하는 형태
    • tree map
    • line graph
      • 이중축
  • 날짜 형식 바꾸기 DATEPARSE
    1. 사이드 바 - 계산된 필드 만들기

    2. DATEPARSE(’날짜형식’, ‘바꿀 문자열’)

      ‘바꿀 문자열’ ← [컬럼명]

    • 로캘을 기반으로 해석, 표시

      • 변환이 잘 안 될 경우 - 로캘 변경 파일 - 통합 문서 로캘 - 자세히 - 미국
    • 문자열 → 날짜

      날짜 부분기호예시 문자열예시 형식
      연도y97yy
      2017yyyy
      M9M
      09MM
      SepMMM
      SeptemberMMMM
      d1d
      01dd
      시(1-12)h1h
      시(0-23)H16HH
  • 임시계산(인라인 계산) : 열/행 선반에서 직접 계산하는 방법

대시보드 만들기

  • 대시보드 = 여러 차트를 한 판에 나타내

  • 목적, 사용자, 콘텐츠 고려

  • 기본에 충실

    • 차트 이해를 위해 필요한 정보가 모두 있는지
    • 불필요한 내용 없는지? 과도하게 많은 참고 정보 X
    • 시각적 요소들이 충분히 일반적인가
    • 전주의적 속성 : 보자마자 뇌에서 바로 알아차릴 수 있도록 강조하기 위한 시각화 속성 - 직관적이어야 ~~
  • 필터

  • 하이라이트

  • 인터랙티브 대시보드

    • 필터 상호작용 대시보드 - 동작 - 필터
    • 하이라이트 상호작용 대시보드 - 동작 - 하이라이트
  • 레이아웃
    • 바둑판식
      • 기본 설정
      • 시트끼리 겹치지 않음
      1. 가로 컨테이너
        • 컨텐이너 : 연관있는 시트끼리 묶어서 그룹으로 다루는 단위
      2. 세로 컨테이너
    • 부동
      • 시트 위에 겹치게 놓을 수 있음

관계와 조인

  • 여러 개의 데이터셋을 다룰 때
  • 조인
  • 관계
    • 조인 없이 테이블 간의 관계 설정
    • 단일 테이블에 병합되지 X ( 테이블의 형태 변형 X )
    • 조인 시 발생하는 데이터 중복/필터링 문제 방지

2. Looker Studio

(데이터 스튜디오)

  • 쉽고 빠른 데이터 소스 연결 especially 구글제품일때

  • 편리한 공유, 공동작업

  • 편리한 리포팅

  • 무료

  • 배치가 자유로움

  • 시각화 형태가 준비되어 있음

  • 측정기준과 측정항목

    • 측정기준 (태블로의 차원)
      • 집계되지 않은 데이터
      • 데이터의 카테고리
      • 녹색
    • 측정항목 (태블로의 측정값)
      • 집계되는 데이터
      • 파란색
  • 매개변수

    • 매개변수 이름 : 사용자,편집자가 보는 것
    • 매개변수 ID : 내부적으로 식별하는 용도
    • 사용자가 조절하면서 대시보드를 읽을 수 있다는 점에서 유용
  • 시계열

    • 텍스트 → 날짜 필드 추가 → 계산된 필드 추가 → 날짜 → PARSE_DATE('','') PARSE_DATE('날짜형식', '바꿀 문자열') PARSE_DATETIME('%d/%m/%Y', DateTime)
      날짜 부분형식예시 문자열
      연도%y97
      %Y2017
      %m09
      %bSep
      %BSeptember
      %e1
      %d01
      시(1-12)h1
      시(0-23)H16
    • 드릴다운 단계에 따라 날짜 기준 조절
  • 누적합 : running sum ( 실행중인 sum 함수 )
  • 컨트롤
    • 적용하고 싶은 차트와 그룹화
  • Connector가 같으면 하나의 컨트롤로 컨트롤 가능

0개의 댓글