상권데이터 분석 및 bar그래프/map으로 만들어보기
전국상권데이터에서 서울특별시에 있는 치킨가게 수를 구별로 내림차순 정렬하여 바데이터로 표시하고, 지도에도 표시해보기
1. 데이터 불러오기 및 확인
import pandas as pd
commercial = pd.read_csv('./data/commercial.csv')
commercial.tail(5) #5개만 추출해서 열 및 데이터 내용 확인
2. 가게 수를 세기 위한 데이터 고르기
commercial.groupby('상가업소번호')['상권업종소분류명'].count().sort_values(ascending=False)
#중복된 데이터가 없는지 확인하기 위해, 상가업소별 상권업종소분류명을 소환하여 1개씩만 있는지 확인하기.
만약 1로 표시된다면 중복이 없는 것이고, 그렇다면 '상가업소번호'를 카운트해서 가게 수를 세면 됨.
3. 치킨 가게만 뽑아낼 수 있도록 분류명 찾기
category_range = set(commercial['상권업종소분류명'])
#상권업종소분류명에서 치킨과 관련된 분류명 찾기
4. 서울특별시의 각 구별로 정리해야하므로 도로명 주소 다듬고, 서울특별시만 추출
commercial[['시','구','상세주소']] = commercial['도로명주소'].str.split(' ',n=2, expand=True)
#도로명주소를 스페이스 기준으로 2번만 쪼개서 시, 구, 상세주소라는 새로운 콜럼에 각각 추가하기
seoul_data = commercial[ commercial['시'] == '서울특별시' ] #서울특별시만 추출
seoul_data.tail(5)
5. 서울특별시만 추출된게 맞는지 확인작업 거치기
city_type = set(seoul_data['시'])
city_type, len(city_type)
6. 서울특별시 데이터에서 치킨가게만 추출하고 확인작업
seoul_chicken_data = seoul_data[seoul_data['상권업종소분류명'] == '후라이드/양념치킨']
#3번에서 찾아낸 분류명을 사용하여 추출
set(seoul_chicken_data['상권업종소분류명']) #확인작업
7. 구별로 서울특별시에 있는 치킨가게 수 정렬하기
chicken_count_gu = seoul_chicken_data.groupby('구')['상권업종소분류명'].count().sort_values(ascending=False)
chicken_count_gu
8. 바데이터 뽑아보기
import matplotlib.pyplot as plt
plt.rcParams['font.family']="Malgun Gothic"
plt.figure(figsize = (10,5))
plt.bar(chicken_count_gu.index, chicken_count_gu)
plt.title('구에 따른 치킨가게 수의 합계 (서울특별시 한정)')
plt.xticks(rotation=50)
plt.show()
9. 지도 위에 그려보기
conda install -c conda-forge folium #folium 설치 (없는 경우만)
import folium
import json
seoul_state_geo = './data/seoul_geo.json'
geo_data = json.load(open(seoul_state_geo, encoding='utf-8'))
geo_data #지도 데이터 확인
map = folium.Map(location=[37.5502,126.982], zoom_start=11) #맵 불러오기
folium.Choropleth(geo_data=geo_data,
data=chicken_count_gu,
colums=[chicken_count_gu.index, chicken_count_gu],
fill_color='PuRd',
key_on='properties.name').add_to(map)
map
#앞에서 추출한 치킨데이터와 지도 데이터를 구이름으로 연결시킨 후 맵 불러오기
솔직히 좀 어려운 부분도 있었지만, 복습 열심히해서 내꺼 만들어야지!!!
#스파르타코딩클럽