오늘 배운 것🤓
시각화 툴
- 대시보드 혹은 BI(Businuess Intelligence) 툴이라고도 부른다.
- 데이터 기반 의사결정을 가능하게 한다.
- 현업 종사자들이 데이터 분석을 가능하도록 한다
-> Citizen Data Analyst
시각화 툴 종류
- Excel / 구글 스프레드 시트
어쩌면 전세계적으로 가장 많이 쓰는 시각화 툴이 아닐까?
- Python/R
대시보드보다는 EDA에 가깝다.
- Google Looker
구글에서 인수한 BI 툴
자체 언어인 LookML이 있으며 데이터 모델을 만드는 것으로 시작했다.
이미 만들어진 대시보드를 self-service하기 쉽다.
즉, 한 사람이 대시보드를 잘 만들어놓으면 다른 사람들이 수정하기 좋다.
처음 배울 때는 어려울 수 있지만 적용 및 수정하기 좋다.
- Tableau
가장 유명하고 보편적인 BI 툴
오랫동안 군림한 만큼 다양한 제품군을 보유하고 있다.
일부는 사용이 무료이다.(단, 모두 공개한다는 조건)
제대로 배우는데 시간이 오래걸리고 이미 만들어진 대시보드를 수정하기 쉽지 않다.
- MS Power BI
- Apache Superset
이번 수업에서 쓰는 BI 툴
enterprise 수준의 보안과 권한 제어 기능을 제공한다.
Python으로 개발(Flask, React JS로 구성)
SQL Alchemy를 사용하여 백엔드 DB 연동한다.
Druid.io와 연동하여 실시간 데이터를 시각화할 수 있다.
API, 플러그인 아키텍쳐 제공으로 확장성이 좋다.
- Mode Analytics
BI 툴과 Python 중간 그 어딘가
기술적인 인력에게 적합한 대시보드(Python, R, SQL)
EDA 툴에 가깝다.
- ReDash
Superset과 유사하며 자체적인 SQL 에디터를 보유하고 있다.
사용자 권한 관련 기능은 약간 부족하다.
- Google Studio
- AWS Quicksight
=> 보편적으로 Looker와 Tableau를 많이 사용한다.
Tableau가 비교적 Looker보다 가격이 싸고, public 버전을 사용하여 무료로 공부도 할 수 있기 때문에 강세를 띄운다.
다만, 데이터 품질이 점점 더 중요해지고 데이터 전문인력이 아닌 일반 직원들도 분석할 수 있도록 하는 Looker의 사용량이 점점 늘어나는 추세이다.
오늘 진행한 것🤓
데이터 전처리
- '서울 생활이동 인구' 데이터 전처리 진행
- 기간 : 2023년 1월 ~ 9월
- 출발, 도착지는 서울에만 해당
- 연령대는 '서울 시민생활' 데이터와 맞추기 위해 20대~60대까지만
- '시민생활' 데이터와 시군구 코드가 일치하지 않아서 최신 법정동 코드를 적용
- 요일, 월, 남녀 등 데이터 타입 및 값 변환
snowflake에 데이터 삽입
- snowflake는 외부 파일을 사용해 데이터를 넣을 경우 50MB이하인 데이터를 사용해야 하지만, 전체 데이터는 1GB이고 월별로 나눠도 250MB를 넘기 때문에 python을 이용하여 데이터를 삽입했다.
- 우선 cmd에서
snowflake connector
모듈을 설치
나는 pandas의 dataframe의 데이터를 넣을 것이기 때문에 정확하게 " "와 [ ]을 모두 써야한다. 지우면 안돼!
$ pip install "snowflake-connector-python[pandas]"
- 데이터를 넣을 테이블을 먼저 snowflake에 schema를 만들어둬야 한다.
CREATE TABLE
을 사용하여 테이블 형태를 만들어 둔다.
- python 파일로 와서 연결한다.
import snowflake.connector as snow
from snowflake.connector.pandas_tools import write_pandas
conn = snow.connect(
user="id",
password="pw",
account="account 탭에 가서 복사",
warehouse="warehouse 탭에 가서 복사",
database="내가 지정한 db 이름",
schema="내가 지정한 schema 이름")
- data의 column명과 snowflake 테이블의 column명을 동일하게 사용해야 한다. 또한 snowflake에서는 대소문자를 구분하고, 테이블 이름과 column명을 모두 대문자로 사용하므로 대문자로 모두 통일하자.
import pandas as pd
data = pd.DataFrame(~~~)
write_pandas(conn, data, "테이블 이름(대문자로)")
느낀 점😊
대소문자 구분한다는 사실을 알지 못해서 여기서 어이없이 시간을 보냈다. 테이블 이름, 컬럼 이름 모두 대문자로 통일! 아주 중요한 사실을 알았다!!!