2주차 수업을 마쳤다.
2주차에서는 데이터에서 필요한 것을 뽑아내는 다양한 전처리 방법을 배웠다.
지도위에 올리고 다양한 그래프도 그렸다.
#치킨데이터 분석
#상권업종소분류명이 겹치는 것은 없는지 살펴봄
commercial.groupby('상가업소번호')['상권업종소분류명'].count().sort_values(ascending=False)
# 도로명주소라는 컬럼을 3개로 나눔
commercial[['시','구','상세주소']] = commercial['도로명주소'].str.split(' ',n=2,expand=True)
# 서울시 업체로 필터링
seoul_data = commercial[ commercial['시'] == '서울특별시']
seoul_chicken_data = seoul_data[ seoul_data['상권업종소분류명']=='후라이드/양념치킨']
groupdata = seoul_chicken_data.groupby('구')
group_by_category = groupdata['상권업종소분류명']
chicken_count_gu = group_by_category.count()
sorted_chicken_count_gu = chicken_count_gu.sort_values(ascending=False)
sorted_chicken_count_gu
plt.figure(figsize=(10,5))
plt.bar(sorted_chicken_count_gu.index, sorted_chicken_count_gu)
plt.xticks(rotation = 90)
plt.show()
# 폴리움이 사전에 없으면 아래 명령어로 받아야 함
#conda install -c conda-forge folium
import folium
import json
6-2. 서울지도를 받음
seoul_state_geo = './data/seoul_geo.json'
geo_data = json.load(open(seoul_state_geo, encoding = 'utf-8'))
6-3. 지도에 치킨 데이터를 올림
map = folium.Map(location = [37.5502,126.982], zoom_start=11)
folium.Choropleth(geo_data=geo_data,
data=chicken_count_gu,
columns=[chicken_count_gu.index, chicken_count_gu],
fill_color='PuRd',
key_on='properties.name').add_to(map)
map
#2 유동인구 데이터 분석
population = pd.read_csv('./data/population07.csv')
sum_of_population_by_gu = population.groupby('군구')['유동인구수'].sum()
sorted_sum_of_population_by_gu = sum_of_population_by_gu.sort_values(ascending=True)
plt.figure(figsize=(10,5))
plt.bar(sorted_sum_of_population_by_gu.index, sorted_sum_of_population_by_gu)
plt.title('2020년 7월 서울 군구별 유동인구수')
plt.xlabel('군구')
plt.ylabel('유동인구 수(명)')
plt.xticks(rotation = -45)
plt.show()
population_gangnam = population[ population['군구']=='강남구']
population_gangnam_daily = population_gangnam.groupby('일자')['유동인구수'].sum()
plt.figure(figsize=(10,5))
date = []
for day in population_gangnam_daily.index:
date.append(str(day))
plt.plot(date,population_gangnam_daily)
plt.title('2020년 7월 서울 강남구 날짜별 유동인구수')
plt.xlabel('날짜')
plt.ylabel('유동인구수(천만명)')
plt.xticks(rotation = -90)
plt.show()
#3. 치킨집과 유동인구 데이터 같이보기 & 분석하기
new_chicken_count_gu = pd.DataFrame(chicken_count_gu).reset_index()
new_sum_of_population_by_gu = pd.DataFrame(sum_of_population_by_gu).reset_index()
gu_chicken = new_chicken_count_gu.join(new_sum_of_population_by_gu.set_index('군구'),on = "구")
gu_chicken['유동인구수/치킨집수'] = gu_chicken['유동인구수'] / gu_chicken['상권업종소분류명']
gu_chicken.sort_values(by='유동인구수/치킨집수')
plt.figure(figsize=(10,5))
plt.bar(gu_chicken['구'],gu_chicken['유동인구수/치킨집수'])
plt.title('치킨집당유동인구수')
plt.xlabel('구')
plt.ylabel('유동인구수/치킨집수')
plt.xticks(rotation=90)
plt.show()