시부야의 공중화장실을 집중해 봤어요.

MYJLab Advent Calendar 2019 24일째 보도입니다.🎄

배경.


나는 의미가 불분명하고 크리스마스 감각이 없고 가벼운 보도를 쓰고 싶다.🙄

실천하다


사용된 데이터 세트


웹 페이지 정보에서 csv 형식의 데이터를 받았습니다.
섭곡에는 모두 82개의 공중화장실이 있는 것 같다.의외로 많다.

차리다

import pandas as pd
import folium
import numpy as np
from geopy.geocoders import Nominatim
from sklearn.cluster import KMeans

데이터 획득


예쁜 데이터라서 예처리는 결손치만 빼면 완성!기차.
df = pd.read_csv('131130_public_toilet.csv', usecols=[4,9,12,13])
# 欠損値があればその行を消去
df_d = df.dropna(how='any')
df_r = df_d.reset_index(drop=True)
df.head()

위도 경도 가져오기


# 渋谷の緯度経度を取得
address = 'Shibuya, Tokyo, Japan'
geolocator = Nominatim(user_agent="foursquare_agent")
location = geolocator.geocode(address)
latitude = location.latitude
longitude = location.longitude
print('緯度:{}, 経度:{}'.format(latitude, longitude))

Foruium을 사용하여 Map에 표시


map_shibuya = folium.Map(location=[latitude, longitude], zoom_start=13)

for lat, lng in zip(df_shibuya['緯度'], df_shibuya['経度']):
    folium.CircleMarker(
        [lat, lng],
        radius=5,
        color='red',
        fill=True,
        fill_opacity=0.7,
        parse_html=False).add_to(map_shibuya) 

map_shibuya

k-means법으로 집합


클러스터 수를 3개로 설정합니다.
# Numpyの行列に変換
cust_array = np.array([df_shibuya['緯度'].tolist(),
                       df_shibuya['経度'].tolist()])
# 行列を転置
cust_array = cust_array.T

kclusters = 3
# K-means実行
pred = KMeans(n_clusters=kclusters).fit_predict(cust_array)
pred

나는 0에서 2까지의 세 개의 집단 번호가 있을 것이라고 생각한다.
데이터 프레임의 열에 추가합니다.
# データフレームにクラスタ番号を追加
df_shibuya['cluster_id'] = pred
df_shibuya.head()

클러스터 결과 시각화


3가지 크리스마스 컬러로 장식.
# クラスタ番号ごとに色を設定
colors_array = ['red','brown','green']

# add markers to the map
for lat, lon, cluster in zip(df_shibuya['緯度'], df_shibuya['経度'], df_shibuya['cluster_id']):
    folium.CircleMarker(
        [lat, lon],
        radius=5,
        popup=cluster,
        color=colors_array[cluster-1],
        fill=True,
        fill_color=colors_array[cluster-1],
        fill_opacity=0.7).add_to(map_shibuya)

map_shibuya

이상은 무의미한 집단 분석입니다!

좋은 웹페이지 즐겨찾기