These implementations are for learning purposes. They may be less efficient than the implementations in the Python standard library. Use Jupyter Notebook & PyCharm Community Edition.
Anaconda3
installpython
version 3
pandas
version or later
numpy
version 1.15.4 or later
matplotlib
version 3.0.2 or later
seaborn
version 0.9.0 or later
pandas
version 0.23.4 or later
scikit-learn
0.20.2 or later
jupyter
version 1.0.0 or later
statsmodels
version 0.9.0 or later
konlpy
version 0.5.1 or later
JPype1
version 0.7.0 or later
pytagcloud
version 0.3.5 or later
simplejson
version 3.16.0 or later
conda create --name mincloud python=3
conda install pandas jupyter seaborn scikit-learn statsmodels
conda info --envs
Collecting package metadata: done
Solving environment: done
## Package Plan ##
environment location: C:\Users\mincloud\Anaconda3
added / updated specs:
- jupyter
- pandas
- scikit-learn
- seaborn
- statsmodels
The following packages will be downloaded:
package | build
---------------------------|--------------------------------
ca-certificates-2018.03.07 | 0 155 KB
certifi-2018.4.16 | py36_0 143 KB
conda-4.6.14 | py36_0 2.1 MB
openssl-1.0.2o | h8ea7d77_0 5.4 MB
------------------------------------------------------------
Total: 7.8 MB
The following packages will be SUPERSEDED by a higher-priority channel:
ca-certificates anaconda --> pkgs/main
certifi anaconda --> pkgs/main
conda anaconda --> pkgs/main
openssl anaconda --> pkgs/main
> git clone https://github.com/mincloud1501/Python.git
> cd Python/
> conda activate mincloud
> python -m ipykernel install --name mincloud --user
> jupyter notebook --port=8888
run_and_pass = 'Shift + Enter'
run_and_add_cell = 'Alt + Enter'
run_and_stay = 'Ctrl + Enter'
recommendations = 'Tab'
docstrings = 'Shift + Tab'
add_hashtag = 'Ctrl + /'
add_cell = 'b'
delete_cell = 'dd'
Facebook
data App ID
와 Secret Code
확인Naver
data Client ID
와 Client Secret
확인D3.js
Reference for Data Visualizationsdeck.gl
$npm install deck.gl
$conda create -n geo_env
$conda activate geo_env
$conda config --env --add channels conda-forge
$conda config --env --set channel_priority strict
$conda install python=3 geopandas
Pydeck
$pip install pydeck
$jupyter nbextension install --sys-prefix --symlink --overwrite --py pydeck
$jupyter nbextension enable --sys-prefix --py pydeck
pdk.Layer
pdk.Layer
type = "미리 정의된 레이어 타입",
id = "이 레이어의 아이디 (optional)",
data = "pandas.DataFrame 또는 geojson url",
)
pdk.ViewState
pdk.ViewState(
longitude = "중심 경도 (default 0)",
latitude = "중심 위도 (default 0)",
zoom = "줌 레벨 (default 0)",
pitch = (default 0),
bearing = (default 0),
**kwargs,
)
pdk.Deck
pdk.Deck(
layers=[],
views=[{"controller": true, "type": "MapView"}],
map_style='mapbox://styles/mapbox/dark-v9',
mapbox_key=None,
initial_view_state={"bearing": 0, "latitude": 0.0, "longitude": 0.0, "maxZoom": 20, "minZoom": 0, "pitch": 0, "zoom": 1},
width='100%',
height=500,
tooltip=True,
)
import pydeck as pdk
# 2014 locations of car accidents in the UK
UK_ACCIDENTS_DATA = ('https://raw.githubusercontent.com/uber-common/'
'deck.gl-data/master/examples/3d-heatmap/heatmap-data.csv')
# Define a layer to display on a map
layer = pdk.Layer(
'HexagonLayer',
UK_ACCIDENTS_DATA,
get_position='[lng, lat]',
auto_highlight=True,
elevation_scale=50,
pickable=True,
elevation_range=[0, 3000],
extruded=True,
coverage=1)
# Set the viewport location
view_state = pdk.ViewState(
longitude=-1.415,
latitude=52.2323,
zoom=6,
min_zoom=5,
max_zoom=15,
pitch=40.5,
bearing=-27.36)
# Render
r = pdk.Deck(layers=[layer], initial_view_state=view_state)
r.to_html('demo.html')
# Jupyter 환경 밖에서 실행 시
r.to_html('demo.html', notebook_display=False)
shapely.geometry.multipolygon
형태를 읽지 못하므로 항상 geometry에 연속된 포인트들을 갖는 리스트 값이 있어야 한다.def multipolygon_to_coordinates(x):
lon, lat = x[0].exterior.xy
return [[x, y] for x, y in zip(lon, lat)]
df['coordinates'] = df['geometry'].apply(multipolygon_to_coordinates)
del df['geometry']
// Make layer
layer = pdk.Layer(
'PolygonLayer', // 사용할 Layer 타입
df, // 시각화에 쓰일 데이터프레임
get_polygon='coordinates', // geometry 정보를 담고있는 컬럼 이름
get_fill_color='[0, 255*정규화인구, 0]', // 각 데이터 별 rgb 또는 rgba 값 (0~255)
pickable=True, // 지도와 interactive 한 동작 on
auto_highlight=True // 마우스 오버(hover) 시 박스 출력
)
// Set the viewport location
center = [126.986, 37.565]
view_state = pdk.ViewState(
longitude=center[0],
latitude=center[1],
zoom=10
)
// Render
r = pdk.Deck(layers=[layer], initial_view_state=view_state)
r.show()
layer = pdk.Layer(
'HeatmapLayer',
df,
get_position='[lng, lat]'
)
center = [126.986, 37.565]
view_state = pdk.ViewState(
longitude=center[0],
latitude=center[1],
zoom=10
)
r = pdk.Deck(layers=[layer], initial_view_state=view_state)
r.show()
PROJECT_ID
환경 변수에 Project명을 지정해주면 된다.export PROJECT_ID="zipkin-proxy"
> pip install google-api-python-client
python main_test.py
(Running on http://127.0.0.1:5000/)https://console.cloud.google.com/traces/traces
[main.py]
import argparse
import random
import time
from flask import Flask, redirect, url_for
# [START trace_setup_python_configure]
from opencensus.ext.stackdriver import trace_exporter as stackdriver_exporter
import opencensus.trace.tracer
def initialize_tracer(project_id):
exporter = stackdriver_exporter.StackdriverExporter(
project_id=project_id
)
tracer = opencensus.trace.tracer.Tracer(
exporter=exporter,
sampler=opencensus.trace.tracer.samplers.AlwaysOnSampler()
)
return tracer
# [END trace_setup_python_configure]
app = Flask(__name__)
@app.route('/', methods=['GET'])
def root():
return redirect(url_for('index'))
# [START trace_setup_python_quickstart]
@app.route('/index.html', methods=['GET'])
def index():
tracer = app.config['TRACER']
tracer.start_span(name='index')
# Add up to 1 sec delay, weighted toward zero
time.sleep(random.random() ** 2)
result = "Tracing requests"
tracer.end_span()
return result
# [END trace_setup_python_quickstart]
if __name__ == '__main__':
parser = argparse.ArgumentParser(
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter
)
parser.add_argument(
'--project_id', help='Project ID you want to access.', required=True)
args = parser.parse_args()
tracer = initialize_tracer(args.project_id)
app.config['TRACER'] = tracer
app.run()
[main_test.py]
import os
import main
def test_index():
project_id = os.environ['GCLOUD_PROJECT']
main.app.testing = True
main.app.config['TRACER'] = main.initialize_tracer(project_id)
client = main.app.test_client()
resp = client.get('/index.html')
assert resp.status_code == 200
assert 'Tracing requests' in resp.data.decode('utf-8')
def test_redirect():
project_id = os.environ['GCLOUD_PROJECT']
main.app.testing = True
main.app.config['TRACER'] = main.initialize_tracer(project_id)
client = main.app.test_client()
resp = client.get('/')
assert resp.status_code == 302
assert '/index.html' in resp.headers.get('location', '')
[Trace Result]
https://openapi.sk.com/
에 가입 후 Project 생성하여, API(무료) 구매select the API serveces > get your own API key
Preview on Web Server
설치 후 Ctrl+Hhift+L
로 아래 Code 실행 (index.html
)<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>simpleMap</title>
<script src="https://apis.openapi.sk.com/tmap/jsv2?version=1&appkey=발급받은 Appkey"></script>
<script type="text/javascript">
// 페이지가 로딩이 된 후 호출하는 함수입니다.
function initTmap(){
// map 생성
// Tmapv2.Map을 이용하여, 지도가 들어갈 div, 넓이, 높이를 설정합니다.
var map = new Tmapv2.Map("map_div", { // 지도가 생성될 div
width : "100%", // 지도의 넓이
height : "400px" // 지도의 높이
});
}
</script>
</head>
<body onload="initTmap()"><!-- 맵 생성 실행 -->
<div id="map_div"></div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>simpleMap</title>
<script
src="https://apis.openapi.sk.com/tmap/jsv2?version=1&appkey=발급받은 Appkey"></script>
<script type="text/javascript">
var map;
// 페이지가 로딩이 된 후 호출하는 함수입니다.
function initTmap(){
// map 생성
// Tmap.map을 이용하여, 지도가 들어갈 div, 넓이, 높이를 설정합니다.
map = new Tmapv2.Map("map_div", {
center : new Tmapv2.LatLng(37.566481622437934, 126.98502302169841), // 지도 초기 좌표
width : "100%", // map의 width 설정
height : "400px" // map의 height 설정
});
map.setZoom(16);
var lat = 37.566681;
var lng = 126.978453;
var markers1 = [];
for (var i = 0; i < 5; i++) {
for (var j = 0; j < 5; j++) {
var marker = new Tmapv2.Marker({
position: new Tmapv2.LatLng(lat + (j * 0.001), lng + (i * 0.001)),
label: 'cluster',
map: map
});
markers1.push(marker);
}
}
// 마커클러스터 등록
markerCluster = new Tmapv2.extension.MarkerCluster({
markers: markers1, // 마커들이 담긴 배열
map: map // 지도 객체
});
};
</script>
</head>
<body onload="initTmap()"><!-- 맵 생성 실행 -->
<div id="map_div"></div>
</body>
</html>
geocoding.html
)See the Category.