In [ ]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
In [ ]:
shop = pd.read_csv('/content/drive/MyDrive/KDT/5.데이터 분석/데이터/shop_201806_01.csv')
shop
Out[ ]:
상가업소번호 | 상호명 | 지점명 | 상권업종대분류코드 | 상권업종대분류명 | 상권업종중분류코드 | 상권업종중분류명 | 상권업종소분류코드 | 상권업종소분류명 | 표준산업분류코드 | ... | 건물관리번호 | 건물명 | 도로명주소 | 구우편번호 | 신우편번호 | 동정보 | 층정보 | 호정보 | 경도 | 위도 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 19905471 | 와라와라호프 | NaN | Q | 음식 | Q09 | 유흥주점 | Q09A01 | 호프/맥주 | I56219 | ... | 1168010600106040000014378 | 대치상가 | 서울특별시 강남구 남부순환로 2933 | 135280 | 6280.0 | NaN | 1 | NaN | 127.061026 | 37.493922 |
1 | 19911397 | 커피빈코리아선릉로93길점 | 코리아선릉로93길점 | Q | 음식 | Q12 | 커피점/카페 | Q12A01 | 커피전문점/카페/다방 | I56220 | ... | 1168010100106960042022041 | NaN | 서울특별시 강남구 선릉로93길 6 | 135080 | 6149.0 | NaN | 1 | NaN | 127.047883 | 37.505675 |
2 | 19911801 | 프로포즈 | NaN | Q | 음식 | Q09 | 유흥주점 | Q09A01 | 호프/맥주 | I56219 | ... | 1154510200101620001017748 | NaN | 서울특별시 금천구 가산로 34-6 | 153010 | 8545.0 | NaN | 1 | NaN | 126.899220 | 37.471711 |
3 | 19912201 | 싱싱커피&토스트 | NaN | Q | 음식 | Q07 | 패스트푸드 | Q07A10 | 토스트전문 | I56192 | ... | 2653010400105780000002037 | 산업용품유통상가 | 부산광역시 사상구 괘감로 37 | 617726 | 46977.0 | NaN | 1 | 26 | 128.980455 | 35.159774 |
4 | 19932756 | 가락사우나내스낵 | NaN | F | 생활서비스 | F09 | 대중목욕탕/휴게 | F09A02 | 사우나/증기탕/온천 | S96121 | ... | 1171010500102560005010490 | NaN | 서울특별시 송파구 가락로 71 | 138846 | 5690.0 | NaN | 1 | NaN | 127.104071 | 37.500249 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
499323 | 16141434 | 배스킨라빈스31 | 건대스타시티점 | Q | 음식 | Q07 | 패스트푸드 | Q07A07 | 아이스크림판매 | I56191 | ... | 1121510500102270007022407 | 더샵스타시티 | 서울특별시 광진구 아차산로 262 | 143730 | 5065.0 | NaN | NaN | NaN | 127.072944 | 37.536997 |
499324 | 16093390 | 본도시락 | 본설렁탕 | Q | 음식 | Q01 | 한식 | Q01A09 | 설렁탕집 | I56111 | ... | 1174010900105020000000001 | 강동타워 | 서울특별시 강동구 상일로6길 39 | 134100 | 5288.0 | NaN | NaN | NaN | 127.175331 | 37.549794 |
499325 | 16093078 | 체크페이먼트 | NaN | Q | 음식 | Q12 | 커피점/카페 | Q12A01 | 커피전문점/카페/다방 | I56220 | ... | 1168010600109050000028207 | 성아빌딩 | 서울특별시 강남구 역삼로69길 10 | 135841 | 6196.0 | NaN | NaN | NaN | 127.054001 | 37.502210 |
499326 | 16093122 | 마젠타네일 | NaN | F | 생활서비스 | F01 | 이/미용/건강 | F01A02 | 발/네일케어 | S96119 | ... | 1144010200104630000002585 | 마포현대하이엘 | 서울특별시 마포구 마포대로 173 | 121862 | 4130.0 | NaN | 1 | NaN | 126.954442 | 37.549892 |
499327 | 16093154 | GS25 | 역촌대로점 | D | 소매 | D03 | 종합소매점 | D03A01 | 편의점 | G47122 | ... | 1138010800100090007000001 | 서부빌딩 | 서울특별시 은평구 연서로 92 | 122895 | 3401.0 | NaN | 1 | NaN | 126.915538 | 37.607334 |
499328 rows × 39 columns
In [ ]:
pd.set_option('display.max_columns',40)
In [ ]:
shop.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 499328 entries, 0 to 499327 Data columns (total 39 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 상가업소번호 499328 non-null int64 1 상호명 499327 non-null object 2 지점명 66741 non-null object 3 상권업종대분류코드 499328 non-null object 4 상권업종대분류명 499328 non-null object 5 상권업종중분류코드 499328 non-null object 6 상권업종중분류명 499328 non-null object 7 상권업종소분류코드 499328 non-null object 8 상권업종소분류명 499328 non-null object 9 표준산업분류코드 470597 non-null object 10 표준산업분류명 470597 non-null object 11 시도코드 499328 non-null int64 12 시도명 499328 non-null object 13 시군구코드 499328 non-null int64 14 시군구명 499328 non-null object 15 행정동코드 499328 non-null int64 16 행정동명 499328 non-null object 17 법정동코드 499328 non-null int64 18 법정동명 499328 non-null object 19 지번코드 499328 non-null int64 20 대지구분코드 499328 non-null int64 21 대지구분명 499328 non-null object 22 지번본번지 499328 non-null int64 23 지번부번지 412776 non-null float64 24 지번주소 499328 non-null object 25 도로명코드 499328 non-null int64 26 도로명 499328 non-null object 27 건물본번지 499328 non-null int64 28 건물부번지 64827 non-null float64 29 건물관리번호 499328 non-null object 30 건물명 225178 non-null object 31 도로명주소 499328 non-null object 32 구우편번호 499328 non-null int64 33 신우편번호 499319 non-null float64 34 동정보 43908 non-null object 35 층정보 308195 non-null object 36 호정보 71972 non-null object 37 경도 499328 non-null float64 38 위도 499328 non-null float64 dtypes: float64(5), int64(11), object(23) memory usage: 148.6+ MB
In [ ]:
view_columns = ['상호명', '지점명', '상권업종대분류명', '상권업종중분류명', '상권업종소분류명', '시도명', '시군구명', '도로명', '도로명주소','경도', '위도']
In [ ]:
shop = shop[view_columns]
shop
Out[ ]:
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 상권업종소분류명 | 시도명 | 시군구명 | 도로명 | 도로명주소 | 경도 | 위도 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 와라와라호프 | NaN | 음식 | 유흥주점 | 호프/맥주 | 서울특별시 | 강남구 | 서울특별시 강남구 남부순환로 | 서울특별시 강남구 남부순환로 2933 | 127.061026 | 37.493922 |
1 | 커피빈코리아선릉로93길점 | 코리아선릉로93길점 | 음식 | 커피점/카페 | 커피전문점/카페/다방 | 서울특별시 | 강남구 | 서울특별시 강남구 선릉로93길 | 서울특별시 강남구 선릉로93길 6 | 127.047883 | 37.505675 |
2 | 프로포즈 | NaN | 음식 | 유흥주점 | 호프/맥주 | 서울특별시 | 금천구 | 서울특별시 금천구 가산로 | 서울특별시 금천구 가산로 34-6 | 126.899220 | 37.471711 |
3 | 싱싱커피&토스트 | NaN | 음식 | 패스트푸드 | 토스트전문 | 부산광역시 | 사상구 | 부산광역시 사상구 괘감로 | 부산광역시 사상구 괘감로 37 | 128.980455 | 35.159774 |
4 | 가락사우나내스낵 | NaN | 생활서비스 | 대중목욕탕/휴게 | 사우나/증기탕/온천 | 서울특별시 | 송파구 | 서울특별시 송파구 가락로 | 서울특별시 송파구 가락로 71 | 127.104071 | 37.500249 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
499323 | 배스킨라빈스31 | 건대스타시티점 | 음식 | 패스트푸드 | 아이스크림판매 | 서울특별시 | 광진구 | 서울특별시 광진구 아차산로 | 서울특별시 광진구 아차산로 262 | 127.072944 | 37.536997 |
499324 | 본도시락 | 본설렁탕 | 음식 | 한식 | 설렁탕집 | 서울특별시 | 강동구 | 서울특별시 강동구 상일로6길 | 서울특별시 강동구 상일로6길 39 | 127.175331 | 37.549794 |
499325 | 체크페이먼트 | NaN | 음식 | 커피점/카페 | 커피전문점/카페/다방 | 서울특별시 | 강남구 | 서울특별시 강남구 역삼로69길 | 서울특별시 강남구 역삼로69길 10 | 127.054001 | 37.502210 |
499326 | 마젠타네일 | NaN | 생활서비스 | 이/미용/건강 | 발/네일케어 | 서울특별시 | 마포구 | 서울특별시 마포구 마포대로 | 서울특별시 마포구 마포대로 173 | 126.954442 | 37.549892 |
499327 | GS25 | 역촌대로점 | 소매 | 종합소매점 | 편의점 | 서울특별시 | 은평구 | 서울특별시 은평구 연서로 | 서울특별시 은평구 연서로 92 | 126.915538 | 37.607334 |
499328 rows × 11 columns
In [ ]:
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf
Reading package lists... Done Building dependency tree... Done Reading state information... Done fonts-nanum is already the newest version (20200506-1). 0 upgraded, 0 newly installed, 0 to remove and 45 not upgraded. /usr/share/fonts: caching, new cache contents: 0 fonts, 1 dirs /usr/share/fonts/truetype: caching, new cache contents: 0 fonts, 3 dirs /usr/share/fonts/truetype/humor-sans: caching, new cache contents: 1 fonts, 0 dirs /usr/share/fonts/truetype/liberation: caching, new cache contents: 16 fonts, 0 dirs /usr/share/fonts/truetype/nanum: caching, new cache contents: 12 fonts, 0 dirs /usr/local/share/fonts: caching, new cache contents: 0 fonts, 0 dirs /root/.local/share/fonts: skipping, no such directory /root/.fonts: skipping, no such directory /usr/share/fonts/truetype: skipping, looped directory detected /usr/share/fonts/truetype/humor-sans: skipping, looped directory detected /usr/share/fonts/truetype/liberation: skipping, looped directory detected /usr/share/fonts/truetype/nanum: skipping, looped directory detected /var/cache/fontconfig: cleaning cache directory /root/.cache/fontconfig: not cleaning non-existent cache directory /root/.fontconfig: not cleaning non-existent cache directory fc-cache: succeeded
In [ ]:
plt.rc('font', family='NanumBarunGothic')
In [ ]:
shop.plot.scatter(x='경도', y='위도', grid=True, figsize=(6,8))
Out[ ]:
<Axes: xlabel='경도', ylabel='위도'>
In [ ]:
shop_seoul = shop.loc[shop['도로명주소'].str.startswith('서울')]
shop_seoul
Out[ ]:
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 상권업종소분류명 | 시도명 | 시군구명 | 도로명 | 도로명주소 | 경도 | 위도 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 와라와라호프 | NaN | 음식 | 유흥주점 | 호프/맥주 | 서울특별시 | 강남구 | 서울특별시 강남구 남부순환로 | 서울특별시 강남구 남부순환로 2933 | 127.061026 | 37.493922 |
1 | 커피빈코리아선릉로93길점 | 코리아선릉로93길점 | 음식 | 커피점/카페 | 커피전문점/카페/다방 | 서울특별시 | 강남구 | 서울특별시 강남구 선릉로93길 | 서울특별시 강남구 선릉로93길 6 | 127.047883 | 37.505675 |
2 | 프로포즈 | NaN | 음식 | 유흥주점 | 호프/맥주 | 서울특별시 | 금천구 | 서울특별시 금천구 가산로 | 서울특별시 금천구 가산로 34-6 | 126.899220 | 37.471711 |
4 | 가락사우나내스낵 | NaN | 생활서비스 | 대중목욕탕/휴게 | 사우나/증기탕/온천 | 서울특별시 | 송파구 | 서울특별시 송파구 가락로 | 서울특별시 송파구 가락로 71 | 127.104071 | 37.500249 |
5 | 허술한집 | NaN | 음식 | 분식 | 라면김밥분식 | 서울특별시 | 강서구 | 서울특별시 강서구 공항대로3길 | 서울특별시 강서구 공항대로3길 9 | 126.809957 | 37.562013 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
499323 | 배스킨라빈스31 | 건대스타시티점 | 음식 | 패스트푸드 | 아이스크림판매 | 서울특별시 | 광진구 | 서울특별시 광진구 아차산로 | 서울특별시 광진구 아차산로 262 | 127.072944 | 37.536997 |
499324 | 본도시락 | 본설렁탕 | 음식 | 한식 | 설렁탕집 | 서울특별시 | 강동구 | 서울특별시 강동구 상일로6길 | 서울특별시 강동구 상일로6길 39 | 127.175331 | 37.549794 |
499325 | 체크페이먼트 | NaN | 음식 | 커피점/카페 | 커피전문점/카페/다방 | 서울특별시 | 강남구 | 서울특별시 강남구 역삼로69길 | 서울특별시 강남구 역삼로69길 10 | 127.054001 | 37.502210 |
499326 | 마젠타네일 | NaN | 생활서비스 | 이/미용/건강 | 발/네일케어 | 서울특별시 | 마포구 | 서울특별시 마포구 마포대로 | 서울특별시 마포구 마포대로 173 | 126.954442 | 37.549892 |
499327 | GS25 | 역촌대로점 | 소매 | 종합소매점 | 편의점 | 서울특별시 | 은평구 | 서울특별시 은평구 연서로 | 서울특별시 은평구 연서로 92 | 126.915538 | 37.607334 |
345268 rows × 11 columns
In [ ]:
shop_except_seoul = shop.loc[~shop['도로명주소'].str.startswith('서울')]
shop_except_seoul
Out[ ]:
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 상권업종소분류명 | 시도명 | 시군구명 | 도로명 | 도로명주소 | 경도 | 위도 | |
---|---|---|---|---|---|---|---|---|---|---|---|
3 | 싱싱커피&토스트 | NaN | 음식 | 패스트푸드 | 토스트전문 | 부산광역시 | 사상구 | 부산광역시 사상구 괘감로 | 부산광역시 사상구 괘감로 37 | 128.980455 | 35.159774 |
22 | 경부할인마트 | NaN | 소매 | 종합소매점 | 종합소매 | 부산광역시 | 동구 | 부산광역시 동구 망양로 | 부산광역시 동구 망양로 593 | 129.034599 | 35.123196 |
23 | 마니쩜 | NaN | 음식 | 유흥주점 | 호프/맥주 | 부산광역시 | 부산진구 | 부산광역시 부산진구 대학로 | 부산광역시 부산진구 대학로 64-1 | 129.034302 | 35.150069 |
24 | 경주아구찜 | NaN | 음식 | 일식/수산물 | 아구전문 | 부산광역시 | 수영구 | 부산광역시 수영구 수영로 | 부산광역시 수영구 수영로 381-8 | 129.106330 | 35.141176 |
30 | 동해제일산오징어 | NaN | 음식 | 일식/수산물 | 낙지/오징어 | 부산광역시 | 동래구 | 부산광역시 동래구 아시아드대로220번길 | 부산광역시 동래구 아시아드대로220번길 30 | 129.068324 | 35.202902 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
499305 | 보라헤어 | NaN | 생활서비스 | 이/미용/건강 | 여성미용실 | 부산광역시 | 사상구 | 부산광역시 사상구 백양대로342번길 | 부산광역시 사상구 백양대로342번길 22 | 129.014460 | 35.154509 |
499310 | 호텔엘레펀트 | NaN | 숙박 | 모텔/여관/여인숙 | 모텔/여관/여인숙 | 부산광역시 | 부산진구 | 부산광역시 부산진구 중앙대로691번가길 | 부산광역시 부산진구 중앙대로691번가길 24-12 | 129.056079 | 35.155344 |
499311 | 포항물회 | 7.7 | 음식 | 일식/수산물 | 횟집 | 부산광역시 | 영도구 | 부산광역시 영도구 절영로36번길 | 부산광역시 영도구 절영로36번길 14-1 | 129.038401 | 35.091686 |
499318 | 참누리 | NaN | 생활서비스 | 세탁/가사서비스 | 청소/소독 | 부산광역시 | 해운대구 | 부산광역시 해운대구 좌동순환로99번길 | 부산광역시 해운대구 좌동순환로99번길 22 | 129.166905 | 35.177375 |
499321 | 봉수아피자 | 연산동점 | 음식 | 패스트푸드 | 피자전문 | 부산광역시 | 연제구 | 부산광역시 연제구 연동로 | 부산광역시 연제구 연동로 21 | 129.093382 | 35.187174 |
154060 rows × 11 columns
In [ ]:
shop_seoul.plot.scatter(x='경도', y='위도', grid=True, figsize=(10,8))
Out[ ]:
<Axes: xlabel='경도', ylabel='위도'>
In [ ]:
shop_except_seoul.plot.scatter(x='경도', y='위도', grid=True, figsize=(6,8))
Out[ ]:
<Axes: xlabel='경도', ylabel='위도'>
seaborn¶
- 데이터를 시각화하는 데 사용하는 라이브러리
- Matplotlib을 기반으로 더 쉽고, 통계적으로 유의미한 그래프를 그릴 수 있도록 다양한 기능을 제공
- 데이터 분석 및 데이터 사이언스 프로젝트에서 자주 사용
In [ ]:
import seaborn as sns
In [ ]:
plt.figure(figsize=(14, 10))
sns.scatterplot(data=shop_seoul, x='경도', y='위도', hue='시군구명')
Out[ ]:
<Axes: xlabel='경도', ylabel='위도'>
/usr/local/lib/python3.10/dist-packages/IPython/core/events.py:89: UserWarning: Creating legend with loc="best" can be slow with large amounts of data. func(*args, **kwargs) /usr/local/lib/python3.10/dist-packages/IPython/core/pylabtools.py:151: UserWarning: Creating legend with loc="best" can be slow with large amounts of data. fig.canvas.print_figure(bytes_io, **kw)
In [ ]:
shop_seoul['상권업종대분류명'].value_counts()
Out[ ]:
상권업종대분류명 음식 112894 소매 106490 생활서비스 57266 학문/교육 27717 의료 15299 부동산 13164 관광/여가/오락 9536 숙박 2790 스포츠 112 Name: count, dtype: int64
In [ ]:
shop_seoul_edu = shop_seoul[shop_seoul['상권업종대분류명'] == '학문/교육']
shop_seoul_edu
Out[ ]:
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 상권업종소분류명 | 시도명 | 시군구명 | 도로명 | 도로명주소 | 경도 | 위도 | |
---|---|---|---|---|---|---|---|---|---|---|---|
52 | 안재형영어 | NaN | 학문/교육 | 학원-어학 | 학원-외국어/어학 | 서울특별시 | 양천구 | 서울특별시 양천구 목동서로 | 서울특별시 양천구 목동서로 133-2 | 126.875973 | 37.531592 |
67 | 정아트 | NaN | 학문/교육 | 학원-음악미술무용 | 서예/서화/미술 | 서울특별시 | 강서구 | 서울특별시 강서구 양천로73가길 | 서울특별시 강서구 양천로73가길 21 | 126.873645 | 37.550924 |
86 | GIA보석교육원 | NaN | 학문/교육 | 학원-자격/국가고시 | 학원-보석감정 | 서울특별시 | 강남구 | 서울특별시 강남구 압구정로 | 서울특별시 강남구 압구정로 320 | 127.036437 | 37.528532 |
120 | 경찰태권도 | NaN | 학문/교육 | 학원-예능취미체육 | 태권도장 | 서울특별시 | 성북구 | 서울특별시 성북구 길음로 | 서울특별시 성북구 길음로 20 | 127.023020 | 37.604749 |
142 | 파랑새어린이집 | NaN | 학문/교육 | 유아교육 | 어린이집 | 서울특별시 | 도봉구 | 서울특별시 도봉구 덕릉로 | 서울특별시 도봉구 덕릉로 329 | 127.045486 | 37.644831 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
499268 | 점프셈교실 | 뉴스터디 | 학문/교육 | 학원-보습교습입시 | 학원-입시 | 서울특별시 | 강서구 | 서울특별시 강서구 양천로 | 서울특별시 강서구 양천로 623 | 126.867243 | 37.554476 |
499278 | 점프셈교실 | IPN보떼미용 | 학문/교육 | 학원-창업취업취미 | 학원-네일아트 | 서울특별시 | 강동구 | 서울특별시 강동구 천호대로 | 서울특별시 강동구 천호대로 993 | 127.122785 | 37.539198 |
499288 | 점프셈교실 | 온누리보습 | 학문/교육 | 학원-보습교습입시 | 학원-입시 | 서울특별시 | 관악구 | 서울특별시 관악구 문성로16가길 | 서울특별시 관악구 문성로16가길 43 | 126.914883 | 37.475271 |
499289 | 점프셈교실 | 일신제2관 | 학문/교육 | 학원-보습교습입시 | 학원-입시 | 서울특별시 | 영등포구 | 서울특별시 영등포구 선유로 | 서울특별시 영등포구 선유로 88 | 126.890194 | 37.521725 |
499315 | 점프셈교실 | 키스톤보습 | 학문/교육 | 학원-보습교습입시 | 학원-입시 | 서울특별시 | 관악구 | 서울특별시 관악구 조원로6길 | 서울특별시 관악구 조원로6길 1 | 126.905305 | 37.483139 |
27717 rows × 11 columns
In [ ]:
shop_seoul_edu.shape
Out[ ]:
(27717, 11)
In [ ]:
plt.figure(figsize=(14, 10))
sns.scatterplot(data=shop_seoul_edu, x='경도', y='위도', hue='상권업종중분류명')
Out[ ]:
<Axes: xlabel='경도', ylabel='위도'>
In [ ]:
shop_seoul_edu_computer = shop_seoul_edu[shop_seoul_edu['상권업종중분류명'] == '학원-컴퓨터']
shop_seoul_edu_computer
Out[ ]:
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 상권업종소분류명 | 시도명 | 시군구명 | 도로명 | 도로명주소 | 경도 | 위도 | |
---|---|---|---|---|---|---|---|---|---|---|---|
442 | 아이비씨에듀케이션 | NaN | 학문/교육 | 학원-컴퓨터 | 컴퓨터학원 | 서울특별시 | 은평구 | 서울특별시 은평구 불광로 | 서울특별시 은평구 불광로 51 | 126.930696 | 37.613419 |
2687 | 서원초등학교컴퓨터교실 | NaN | 학문/교육 | 학원-컴퓨터 | 컴퓨터학원 | 서울특별시 | 서초구 | 서울특별시 서초구 고무래로 | 서울특별시 서초구 고무래로 63 | 127.014605 | 37.502429 |
3678 | 이찬진컴퓨터교실 | NaN | 학문/교육 | 학원-컴퓨터 | 컴퓨터학원 | 서울특별시 | 성북구 | 서울특별시 성북구 정릉로38다길 | 서울특별시 성북구 정릉로38다길 29 | 127.017025 | 37.601564 |
3872 | 백상컴퓨터학원 | NaN | 학문/교육 | 학원-컴퓨터 | 컴퓨터학원 | 서울특별시 | 구로구 | 서울특별시 구로구 구로중앙로7길 | 서울특별시 구로구 구로중앙로7길 28 | 126.889592 | 37.491327 |
5517 | 보성컴퓨터학원 | NaN | 학문/교육 | 학원-컴퓨터 | 컴퓨터학원 | 서울특별시 | 성북구 | 서울특별시 성북구 장위로15길 | 서울특별시 성북구 장위로15길 16 | 127.041859 | 37.614905 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
499152 | 점프셈교실 | 피씨정비네트워크 | 학문/교육 | 학원-컴퓨터 | 컴퓨터학원 | 서울특별시 | 마포구 | 서울특별시 마포구 독막로 | 서울특별시 마포구 독막로 33-1 | 126.917321 | 37.548368 |
499153 | 점프셈교실 | 왕컴퓨터 | 학문/교육 | 학원-컴퓨터 | 컴퓨터학원 | 서울특별시 | 은평구 | 서울특별시 은평구 응암로 | 서울특별시 은평구 응암로 204 | 126.917419 | 37.590132 |
499154 | 점프셈교실 | 벽산정보처리 | 학문/교육 | 학원-컴퓨터 | 컴퓨터학원 | 서울특별시 | 노원구 | 서울특별시 노원구 동일로 | 서울특별시 노원구 동일로 1335 | 127.062251 | 37.647993 |
499155 | 점프셈교실 | 신촌아이디컴퓨터 | 학문/교육 | 학원-컴퓨터 | 컴퓨터학원 | 서울특별시 | 서대문구 | 서울특별시 서대문구 신촌로 | 서울특별시 서대문구 신촌로 117 | 126.938941 | 37.556025 |
499156 | 점프셈교실 | 영명컴퓨터 | 학문/교육 | 학원-컴퓨터 | 컴퓨터학원 | 서울특별시 | 마포구 | 서울특별시 마포구 마포대로8길 | 서울특별시 마포구 마포대로8길 9 | 126.953922 | 37.546617 |
215 rows × 11 columns
In [ ]:
shop_seoul_edu_computer.shape
Out[ ]:
(215, 11)
In [ ]:
plt.figure(figsize=(14, 10))
sns.scatterplot(data=shop_seoul_edu_computer, x='경도', y='위도', hue='상권업종소분류명')
Out[ ]:
<Axes: xlabel='경도', ylabel='위도'>
folium¶
- leaflet.js 기반으로 만들어진 지도 위 데이터를 표현해주는 대표적인 파이썬 시각화 라이브러리
In [ ]:
!pip install folium
Requirement already satisfied: folium in /usr/local/lib/python3.10/dist-packages (0.14.0) Requirement already satisfied: branca>=0.6.0 in /usr/local/lib/python3.10/dist-packages (from folium) (0.7.2) Requirement already satisfied: jinja2>=2.9 in /usr/local/lib/python3.10/dist-packages (from folium) (3.1.4) Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from folium) (1.25.2) Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from folium) (2.31.0) Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2>=2.9->folium) (2.1.5) Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->folium) (3.3.2) Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->folium) (3.7) Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->folium) (2.0.7) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->folium) (2024.2.2)
In [ ]:
import folium
In [ ]:
# folium.Map(location=[위도, 경도], zoom_start=배율, ...)
map_folium = folium.Map(location=[37.500043085219545, 127.03557801473566], zoom_start = 17)
map_folium
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook
In [ ]:
# Marker(): location 속성으로 지정한 위치에 마커를 생성
# Popup(): 마커를 클릭했을 때 표시할 문자열을 설정
# add_to(): 작성된 마커를 지도에 추가
map_folium = folium.Map(location=[37.500043085219545, 127.03557801473566], zoom_start=17, )
popup = folium.Popup('코리아IT아카데미', max_width=200)
folium.Marker(location=[37.500043085219545, 127.03557801473566], popup=popup).add_to(map_folium)
map_folium
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook
In [ ]:
# 지도: 37.56652479270633, 126.9779129116262
# 서울특별시청: 37.56652479270633, 126.9779129116262
# 덕수궁: 37.56585320879458, 126.97514572197248
# 서울지방경찰청: 37.57504045678939, 126.97195576938117
# 광화문: 37.57617987638928, 126.97694467807803
# 영풍문고-종로본점: 37.56999947440024, 126.98228391170936
map_folium = folium.Map(location=[37.56652479270633, 126.9779129116262], zoom_start=15, )
popup = folium.Popup('서울특별시청', max_width=200)
folium.Marker(location=[37.56652479270633, 126.9779129116262], popup=popup).add_to(map_folium)
popup = folium.Popup('덕수궁', max_width=200)
folium.Marker(location=[37.56585320879458, 126.97514572197248], popup=popup).add_to(map_folium)
popup = folium.Popup('서울지방경찰청', max_width=200)
folium.Marker(location=[37.57504045678939, 126.97195576938117], popup=popup).add_to(map_folium)
popup = folium.Popup('광화문', max_width=200)
folium.Marker(location=[37.57617987638928, 126.97694467807803], popup=popup).add_to(map_folium)
popup = folium.Popup('영풍문고-종로본점', max_width=200)
folium.Marker(location=[37.56999947440024, 126.98228391170936], popup=popup).add_to(map_folium)
map_folium
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook
In [ ]:
from folium.features import CustomIcon
icon_image = 'police.png'
icon = CustomIcon(icon_image, icon_size=(45,45))
map_folium = folium.Map(location=[37.56652479270633, 126.9779129116262], zoom_start=15)
popup = folium.Popup('서울특별시청', max_width=200)
folium.Marker(location=[37.56652479270633, 126.9779129116262], popup=popup,
icon=folium.Icon(icon='star', color='red')).add_to(map_folium)
popup = folium.Popup('덕수궁', max_width=200)
folium.Marker(location=[37.56585320879458, 126.97514572197248], popup=popup,
icon=folium.Icon(icon='ok', color='pink')).add_to(map_folium)
popup = folium.Popup('서울지방경찰청', max_width=200)
folium.Marker(location=[37.57504045678939, 126.97195576938117], popup=popup,
icon=icon).add_to(map_folium)
popup = folium.Popup('광화문', max_width=200)
folium.Marker(location=[37.57617987638928, 126.97694467807803], popup=popup).add_to(map_folium)
# CircleMarker(): 원의 범위를 마커로 설정
popup = folium.Popup('내땅', max_width=200)
folium.CircleMarker(location=[37.56999947440024, 126.98228391170936], popup=popup,
radius=30, color='red', fill_color='#EC4074').add_to(map_folium)
map_folium
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook
문제¶
- shop_seoul_edu_computer 데이터프레임에 있는 모든 데이터를 지도에 표기
- 단, 일반 마커로 표기하며 클릭하면 "상호명-주소"형태의 팝업을 보여줌
In [ ]:
data = shop_seoul_edu_computer
edu_map = folium.Map(location=[data['위도'].mean(), data['경도'].mean()], zoom_start=12)
for i in data.index:
edu_name = data.loc[i, '상호명'] + ' - ' + data.loc[i, '도로명주소']
popup = folium.Popup(edu_name, max_width=500)
folium.Marker(location=[data.loc[i, '위도'], data.loc[i, '경도']],
popup=popup).add_to(edu_map)
edu_map
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook
문제¶
- 상권업종중분류명이 '커피점/카페'인 데이터중 '구군'이 '강남구'인 데이터만 지도에 표기
- 단, 일반 마커로 표기하며 클릭하면 "상호명-주소"형태의 팝업을 보여줌
In [ ]:
shop_seoul_coffee = shop_seoul[shop_seoul['상권업종중분류명'] == '커피점/카페']
shop_seoul_coffee.shape
Out[ ]:
(16349, 11)
In [ ]:
data = shop_seoul_coffee[shop_seoul_coffee['시군구명'] == '강남구']
coffee_map = folium.Map(location=[data['위도'].mean(), data['경도'].mean()], zoom_start=12)
for i in data.index:
coffee_name = data.loc[i, '상호명'] + '-' + data.loc[i, '도로명주소']
popup = folium.Popup(coffee_name, max_width=500)
folium.Marker(location=[data.loc[i, '위도'], data.loc[i, '경도']],
popup=popup).add_to(coffee_map)
coffee_map
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook
In [ ]:
'코딩 > 데이터 분석' 카테고리의 다른 글
서울시 따릉이 API 활용 (0) | 2024.06.07 |
---|---|
전국 도시공원 데이터 (0) | 2024.06.07 |
가상 온라인 쇼핑몰 데이터 (1) | 2024.06.07 |
Matplotlib (1) | 2024.06.07 |
판다스(Pandas) (1) | 2024.06.07 |