개발환경
주피터, python
목적
광주광역시 올리브영 입점 추천 프로그램을 만들던 중 seaborn과 matplotlib로 화장품 매장들을 시각화 해보기 위함
자료 출처
공공데이터포탈 - 소상공인시장진흥공단_상가(상권)정보
이 자료 중 소상공인시장진흥공단_상가(상권)정보_광주_202306.csv 를 사용하였다.
https://www.data.go.kr/dataset/15012005/fileData.do
자료 import
import pandas as pd
import seaborn as sns
import matplotlib as plt
df = pd.read_csv('소상공인시장진흥공단_상가(상권)정보_광주_202306.csv', low_memory=False)
# DtypeWarning: Columns (2) have mixed types. Specify dtype option on import or set low_memory=False.
# low_memory=False 를 뒤에 써서 결측치 무시
DtypeWarning: Columns (2) have mixed types. Specify dtype option on import or set low_memory=False.
이 오류가 나왔는데 csv import 뒤에 row_memory=False 를 뒤에 써서 해결했다.
광주 데이터는 행은 70510개, 열은 39개이다.
컬럼 확인하기
열과 비어있는 값인지, 타입을 확인할 수 있다.
각 열마다 결측치가 몇개나 있는지 확인
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.family'] = 'Malgun Gothic'
plt.figure(figsize=(16,6))
sns.heatmap(df.isnull(), cbar=False) # 결측치 확인
plt.xticks(rotation=45, fontsize=12)
plt.show()
결측치를 시각화해 확인할 수 있다.
상점 분포도를 확인해 본다.
plt.figure(figsize = (14, 10))
ax = sns.scatterplot(data = df_colums_notnan,
x='경도',
y='위도',
hue='시군구명')
plt.setp(ax.get_legend().get_texts(), fontsize='10')
plt.show()
각 구별 분포도를 확인해 본다. 역시 광주는 수완, 충장로 등 인구밀집지역에 상가가 몰려 있다.
화장품 매장만 확인하기
plt.figure(figsize = (14, 10))
condition = df['상권업종소분류명'] == '화장품 소매업'
df_cosmetic = df[condition]
df_cosmetic
ax = sns.scatterplot(data = df_cosmetic,
x='경도',
y='위도',
hue='시군구명')
plt.setp(ax.get_legend().get_texts(), fontsize='10')
plt.show()
상권업종소분류명이 "화장품 소매업"인 자료들만 받아 시각화해 보자.
동구쪽에 몰려있는 느낌
이를 지도에 넣어본 것(이건 사진위에 붙였다. 지도 위에 하고 싶으면 폴리움 모듈을 공부해야함)
plt.figure(figsize=(16, 12))
sns.scatterplot(data=df[:20000], x='경도', y='위도', hue='상권업종대분류명')
plt.title('광주광역시 상권업종 대분류 분포', fontsize=14)
추가로 궁금해서 만들어본 업종 분포 산점도
역시 음식점 분포가 많다.
오늘 계속 공부해서 추가해볼 예정..
참고 링크
데이터스토리 소상공인 매출 및 상권정보
참고 블로그
https://bizzengine.tistory.com/336
'개발공부 > Python' 카테고리의 다른 글
[Python] 구글 코랩(colab) seaborn, matplotlib 한글 깨짐 현상 해결방법 (0) | 2023.08.20 |
---|---|
[Python] 100명의 죄수 문제 matplotlib 그래프로 시각화하기 (0) | 2023.08.18 |
[Python] requirements.txt 생성하고 패키지 관리하기 (0) | 2023.07.28 |
[Python] 함수 실행 시간 측정하기 - time() 사용한 여러가지 방법 (0) | 2023.06.27 |
[Python] *args 와 **kwargs(function definition) 정리 (0) | 2023.06.27 |