[스파르타코딩] 파이썬 지표분석 2주차

성원경·2021년 4월 27일
0

2주차 수업을 마쳤다.

2주차에서는 데이터에서 필요한 것을 뽑아내는 다양한 전처리 방법을 배웠다.
지도위에 올리고 다양한 그래프도 그렸다.

#치킨데이터 분석

  1. 상권분석 데이터에서 치킨집 데이터를 추리는 작업
    groupby 명령어를 통해 어떤 컬럼을 키로 삼아서 어떤 값을 어떻게 연산할 것인지 정해
    바로 소팅을 시키는 것 까지 했다.
#상권업종소분류명이 겹치는 것은 없는지 살펴봄
commercial.groupby('상가업소번호')['상권업종소분류명'].count().sort_values(ascending=False)
  1. 주소를 통해 필터링을 함
# 도로명주소라는 컬럼을 3개로 나눔
commercial[['시','구','상세주소']] = commercial['도로명주소'].str.split(' ',n=2,expand=True)
# 서울시 업체로 필터링
seoul_data = commercial[ commercial['시'] == '서울특별시']
  1. 서울데이터에서 다시 치킨집 데이터를 추림
seoul_chicken_data = seoul_data[ seoul_data['상권업종소분류명']=='후라이드/양념치킨']
  1. 추린 데이터를 구별로 정렬하고 이를 다시 내림차순으로 정리함
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
  1. 시각화 - 막대차트로
plt.figure(figsize=(10,5))
plt.bar(sorted_chicken_count_gu.index, sorted_chicken_count_gu)
plt.xticks(rotation = 90)
plt.show()
  1. 지도에 올리기
    6-1 폴리움과 제이슨 올리기
# 폴리움이 사전에 없으면 아래 명령어로 받아야 함
#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 유동인구 데이터 분석

  1. 데이터 읽기
population = pd.read_csv('./data/population07.csv')
  1. 구별 유동인구수 소팅
sum_of_population_by_gu = population.groupby('군구')['유동인구수'].sum()
  1. 오름차순으로 정렬 후 막대그래프로 시각화
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()
  1. 강남구로 한정
population_gangnam = population[ population['군구']=='강남구']
population_gangnam_daily = population_gangnam.groupby('일자')['유동인구수'].sum()
  1. 강남구 시각화
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. 치킨집과 유동인구 데이터 같이보기 & 분석하기

  1. 데이터 프레임 만들기
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()
  1. 구를 기준으로 두 데이터 합치기 - join명령어 사용
gu_chicken = new_chicken_count_gu.join(new_sum_of_population_by_gu.set_index('군구'),on = "구")
  1. 치킨집당 유동인구수로 분석하기
gu_chicken['유동인구수/치킨집수'] = gu_chicken['유동인구수'] / gu_chicken['상권업종소분류명']
gu_chicken.sort_values(by='유동인구수/치킨집수')
  1. 시각화
plt.figure(figsize=(10,5))
plt.bar(gu_chicken['구'],gu_chicken['유동인구수/치킨집수'])
plt.title('치킨집당유동인구수')
plt.xlabel('구')
plt.ylabel('유동인구수/치킨집수')
plt.xticks(rotation=90)
plt.show()
profile
코린이

0개의 댓글