2021-01-31
Author: 98hyun
Published: 2021-01-31
개발환경
현재 컴퓨터 사양. 프로세서 인텔 코어 i3-7100U CPU 2.40GHz. RAM 8GB. 분석은 가능. 모델 돌리기 힘들다. 컴퓨터 깨끗하게 + docker 공부로 환경만들기.
docker
정확히 무슨뜻인지는 모르지만, -i로 shell에서 소통할수있게 해주고, -t는 무슨뜻인지 잘 모르겠다. -p는 jupyter 포트, name은 원하는 컨테이너 이름. conti.. 는 image name, /bin/bash로 shell을 실행하게 해주는것같다.
# 이미지로 miniconda 컨테이너 만들기.
docker run -i -t -p 8888:8888 --name {name} continuumio/miniconda3 /bin/bash
# conda 명령어로 한 후, jupyter 연동.
# --no-browser는 없어도 되는데 --allow-root 는 필요.
jupyter notebook --ip 0.0.0.0 --no-browser --allow-root
miniconda
필요한 라이브러리. 느낌대로.
# 웬만하면 파이썬 3.7.
conda create -n eda -c conda-forge python=3.7
conda activate eda
# 채널은 conda-forge 에서만. 제일 믿음직스러운.
conda install -c conda-forge numpy pandas matplotlib seaborn requests bs4 selenium notebook
VS Code
git과 연동도 되고 편리한 extensions이많은 VS Code. 보통 크롤링과 github 관리로 많이 사용.
구글 코랩
위와 스펙에서 돌아가기 힘든 딥러닝에 많이 사용.
위도 경도 다루는 방법.
- api 선택.
google, kakao 등 여러 api 중 선택하면 된다. 여기서는 google과 kakao 만 다룰 것이다.
네이버는 포함 안했다. 네이버로 하고 싶다면 naver map api in python 로 검색하면 된다.
- api 발급.
kakao : https://developers.kakao.com/
google : https://cloud.google.com/
- 방법
주소를 위.경도로 변환.
# kakao
# library
import requests
# config
rest_api_key = '********************************'
header = {'Authorization': 'KakaoAK ' + rest_api_key}
# ----------------------- update -------------------------
# 요청 주소
# address 보다 keyword가 더 광범위하게 캐치한다.
url = f'https://dapi.kakao.com/v2/local/search/keyword.json?query={address}'
# 결과값
res = requests.get(url, headers=header)
res.raise_for_status()
# ----------------------- update -------------------------
match=res.json()['documents'][0]
print(float(match['y']),float(match['x'])) # 위도, 경도
# google
# library
import googlemaps
# config
gmaps=googlemaps.Client(key='***************************************')
# 위.경도
address="알고 싶은곳."
# 결과값
g=gmaps.geocode(address,language='ko')
# 위.경도
lat=g[0]['geometry']['location']['lat']
lng=g[0]['geometry']['location']['lng']
위.경도를 주소로 변환.
# kakao
# library
import requests
# config
rest_api_key = '********************************'
header = {'Authorization': 'KakaoAK ' + rest_api_key}
# 위.경도 longitude(long) 롱이니까 경도라고 외우면 쉽다.
x=127.1268 # 단국대 lon 구글 스크래핑.
y=37.3216 # 단국대 lat
# 요청 주소
url = f'https://dapi.kakao.com/v2/local/geo/coord2regioncode.json?x={x}&y={y}'
# 결과값
res = requests.get(url, headers=header)
res.raise_for_status()
print(res.json()['documents'][0]['address_name'])
# 경기도 용인시 수지구 죽전동
# res 는 결과값으로 dictionary 형태로 주어져서 res를 print 해서 원하는것을 파싱하면 된다.
# google
# library
import googlemaps
# config
gmaps=googlemaps.Client(key='***************************************')
# 위.경도
x=127.1268 # 단국대 lon 구글 스크래핑.
y=37.3216 # 단국대 lat
# 결과값
g=gmaps.reverse_geocode((j.lat, j.lon),language='ko')
geo_str=g[0]['formatted_address']
시각화와 tableau
전주의적 속성
방향, 길이, 너비, 크기, 형태, 곡률, 표시 추가, 둘러싸기, 색상, 색조, 위치, 공간적 그룹핑
데이터의 유형
범주형 데이터 : 분류
순서형 데이터 : 범주형 데이터의 한 분류. 대신 순서가 있다. 숫자와 관련되어 있을 수 있지만, 그 간격이 일정하지 않다.
정량적 데이터 : 수치 데이터. 이산과 연속이 있다. 시간은 순서형, 정량적 모두에 속한다.
색의 사용
순차적 : 낮음에서 높음을 표현.
발산형 : 중리접인 중간점이 있는 순차적인 2가지 색상.
범주형 : 개별비교를 위한 색상 대비
강조 : 강조하기 위한 색. (파란색,녹색)
경고 : 경고하기 위한 색. (빨간색)
그래프의 특징
스파크라인 : 셀 안에 그래프를 그려 효과적으로 보여준다. 공간 절약.
불릿그래프 : 목표와 진행상황.
지터그래프 : 구성요소와 원,산포도 그래프. 여러개 중 돋보이게 할 때 지터그래프.
점 그래프 : 비교.
막대그래프 : 기본.
heatmap : 모양과 색깔로 표시하면 효과적. KPI에 자주 쓰일것 같다. 위 아래 아이콘으로.
지도->픽셀 : 작은 도시 혹은 큰 도시를 같은 크기로 바꾸고 색을 입혀 보기 쉽게 한다.
달력 : 날짜 별 히트맵.
tableau 팁
빈 문자열 지우기 : 계산된 필드 만들기 -> char(32)
도구 설명안의 시트 : 도구설명 -> 시트. 설정은 하고싶은 필터를 같이 도구설명에 쓰기.
대시보드에서 필터사용 : 원하고자하는 것을 누르고 깔때기 필터누르면 편하다. 혹은 대쉬보드 동작.
도넛 차트 : sum(0) avg(0) 뭔가 축 나눌때 유용.
크로스 탭 : 상 더블클릭의 시작은 행이다. 행에 차원을 더블클릭하고, 측정값을 더블클릭하면 측정값은 열로 간다. 그래서 크로스 탭은 모든 행과 열은 차원이고 안에 측정값으로 레이블을 넣는다.
드롭다운 : 필터의 드롭다운이 이쁘다. 그리고 관련된 값만 하는게 여러가지 안나오고 이쁘다.
특정차원 : 전체 max에서가 아니라 각각의 category에서 백분율로 보고 싶다면 특정차원에서만 보면 된다.
round bar : avg(0) 과 측정값으로 만든다. 후에 측정값을 경로에 두면 두 이중축을 잇는 선이 생기고 크기를 조정한다. 참고
이중축과 결합축 : 드래그로 구분 가능하다. 오른쪽으로가면 이중축, 왼쪽으로 가면 결합축.
초반에 숫자 형식 및 기본 집계 방식을 바꾸는 방법 : 데이터 패널에서 기본속성을 만진다.
날짜 필터 : 참고
계산된 필드와 매개변수의 차이점 : 계산된 필드는 static 매개변수는 dynamic 또,혼자쓰이지 못한다.
중첩정렬 : 앞의것도 신경쓰는 정렬. 예로 인천의 중구와 서울의 중구가 다르게 측정되야 하므로 nested sort를 사용해서 측정한다.
딱 맵만 나오게 : 이중축 활용. 맵 계층의 불투명도 활용.
전 대비 증가 : 퀵 테이블 계산에서 비율차이를 누른다. 혹은 점선 및 선으로 표시.
레이블 바꾸기 - 그룹 만들기 : 그룹만들기로 하나하나 이름을 바꿔준다.
색깔 통일 : 범례에 가서 단계별 2단계로 하고, 최소 최대 색을 같은 색으로하면 된다.
모양 아이콘 : 사이트 에서 png 다운로드.
left : 문자열 잘라내기. left(문자열,숫자)
연속->불연속 : 숫자를 구간으로. 계산된 필드 -> if else then 문
rank 함수를 사용하는것으로도 순위를 표현가능 -> rank(필드)
datepart : datepart('부분',날짜)=int(매개변수)로 매개변수값이 datepart와 같은지를 확인.
필터를 넣었을 때 참 거짓으로 구분 가능. # 부분에는 'year','month' 등이 있다.
크기와 색깔 abs : 측정값의 차이로 색깔을. abs함수로 차이의 절댓값으로 크기를 알수 있다.
날짜 차이 : 날짜의 차이는 datediff로 구한다. 그런데 측정값으로 되니 차원을 바꿔준다.
조건 if : if else를 iif 로 하면 편하다.
원래 값이 나오게. : lookup(attr(column),0) 이다.