일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Project
- visualizing
- data
- 다나와
- Method
- python
- 애자일
- Crawling
- instance
- Scrum
- AWS
- javascript
- 자바스크립트
- matplotlib
- angular
- pandas
- 크롤링
- ECS
- tensorflow
- data analyze
- algorithm
- analyzing
- adaptive life cycle
- opencv
- TypeScript
- Agile
- keras
- DANAWA
- 프로젝트
- webcrawling
Archives
- Today
- Total
LiJell's 성장기
__12.data.analyzing_Starbucks_data_preprocessing (스타벅스 2편) 본문
Bigdata/Web Crawling
__12.data.analyzing_Starbucks_data_preprocessing (스타벅스 2편)
All_is_LiJell 2022. 1. 20. 22:45반응형
- 스타벅스 크롤링 1편: https://lime-jelly.tistory.com/51
- 스타벅스 시각화 3편: https://lime-jelly.tistory.com/53
12. Starbucks data preprocessing (스타벅스 데이터 전처리)
서울 열린데이터 광장 OPEN API 서비스 종료에 따라 직접 다운로드 하기
- 자료 다운 상세설명 보기 : http://bit.ly/pwd_seouldata_guide
- '서울시 주민등록인구 (구별) 통계' 데이터: https://data.seoul.go.kr/dataList/104/S/2/datasetView.do
- '서울시 사업체현황 (산업대분류별/동별) 통계' 데이터: https://data.seoul.go.kr/dataList/419/S/2/datasetView.do
12.1. 서울열린데이터광장 공공데이터 수집 및 정리
import requests
import pandas as pd
12.1.1 서울시 구별 주민등록인구통계 데이터 가져오기
sgg_pop_df = pd.read_csv('./files/report.txt', sep='\t', header=2)
columns = {
'기간': 'GIGAN',
'자치구': 'JACHIGU',
'계': 'GYE_1',
'계.1': 'GYE_2',
'계.2': 'GYE_3',
'남자': 'NAMJA_1',
'남자.1': 'NAMJA_2',
'남자.2': 'NAMJA_3',
'여자': 'YEOJA_1',
'여자.1': 'YEOJA_2',
'여자.2': 'YEOJA_3',
'세대': 'SEDAE',
'세대당인구': 'SEDAEDANGINGU',
'65세이상고령자': 'N_65SEISANGGORYEONGJA'
}
sgg_pop_df.rename(columns = columns, inplace = True) # inplace안해주면 다시 넣어야함
sgg_pop_df.info()
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 26 entries, 0 to 25
Data columns (total 14 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 GIGAN 26 non-null object
1 JACHIGU 26 non-null object
2 SEDAE 26 non-null object
3 GYE_1 26 non-null object
4 NAMJA_1 26 non-null object
5 YEOJA_1 26 non-null object
6 GYE_2 26 non-null object
7 NAMJA_2 26 non-null object
8 YEOJA_2 26 non-null object
9 GYE_3 26 non-null object
10 NAMJA_3 26 non-null object
11 YEOJA_3 26 non-null object
12 SEDAEDANGINGU 26 non-null float64
13 N_65SEISANGGORYEONGJA 26 non-null object
dtypes: float64(1), object(13)
memory usage: 3.0+ KB
'''
12.1.1.1. 필요없는 데이터 제거
condition = sgg_pop_df['JACHIGU'] != '합계'
sgg_pop_df_selected = sgg_pop_df[condition]
sgg_pop_df_selected.head()
12.1.1.2 분석에 필요한 칼럼 선택
sgg_pop_df_final = sgg_pop_df_select[['JACHIGU', 'GYE_1']]
sgg_pop_df_final.columns = ['시군구명','주민등록인구'] # columns의 개수가 같아야 함
sgg_pop_df_final.head()
'''
시군구명 주민등록인구
1 종로구 159,842
2 중구 135,321
3 용산구 244,953
4 성동구 302,695
5 광진구 361,923
'''
# 저장
sgg_pop_df_final.to_excel('./files/sgg_pop.xlsx', index = False)
12.1.2. 서울시 동별 사업체현황 통계 데이터 가져와서 가공하기
- 위와 같은 방법으로 데이터를 가져와 가공 저장
a_df = pd.read_csv('./files/report2.txt', header = 2, sep = '\t')
a_df
condition1 = a_df['동'] == '소계'
a1_df = a_df[condition1]
a1_df[['자치구','계','사업체수']]
a11_df = a1_df[['자치구','계','사업체수']]
a11_df.columns = ['시군구명', '종사자수','사업체수']
sgg_biz_df_final = a11_df
sgg_biz_df_final.reset_index(drop = True , inplace = True)
sgg_biz_df_final
sgg_biz_df_final.to_excel('./files/sgg_biz.xlsx', index = False)
12.2. 서울시 스타벅스 매장 목록, 인구, 사업체 데이터에 시군구명, 시군구코드 추가
12.2.1. 가공 및 저장
import pandas as pd
seoul_starbucks = pd.read_excel('./files/seoul_starbucks_list.xlsx', header=0)
seoul_starbucks.head()
sgg_names = []
for address in seoul_starbucks['주소']:
sgg = address.split()[1]
sgg_names.append(sgg)
seoul_starbucks['시군구명'] = sgg_names
seoul_starbucks.head()
'''
매장명 위도 경도 매장타입 주소 전화번호 시군구명
0 역삼아레나빌딩 37.501087 127.043069 general 서울특별시 강남구 언주로 425 (역삼동) 1522-3232 강남구
1 논현역사거리 37.510178 127.022223 general 서울특별시 강남구 강남대로 538 (논현동) 1522-3232 강남구
2 신사역성일빌딩 37.514132 127.020563 general 서울특별시 강남구 강남대로 584 (논현동) 1522-3232 강남구
3 국기원사거리 37.499517 127.031495 general 서울특별시 강남구 테헤란로 125 (역삼동) 1522-3232 강남구
4 대치재경빌딩R 37.494668 127.062583 reserve 서울특별시 강남구 남부순환로 2947 (대치동) 1522-3232 강남구
'''
seoul_starbucks.to_excel('./files/seoul_starbucks_list.xlsx', index=False)
12.3. 분석 데이터 만들기
- 시군구 목록, 스타벅스 매장 목록 데이터 불러오기
seoul_sgg = pd.read_excel('./files/seoul_sgg_list.xlsx')
seoul_starbucks = pd.read_excel('./files/seoul_starbucks_list.xlsx')
- 시군구별 스타벅스 매장 수 세기
starbucks_sgg_count = seoul_starbucks.pivot_table(
index = '시군구명',
values='매장명',
aggfunc='count'
)
# reindex
starbucks_sgg_count = starbucks_sgg_count.reset_index(drop = False).rename(columns = {'매장명':'스타벅스_매장수'})
12.4. 데이터 병합
seoul_sgg_pop = pd.read_excel('./files/sgg_pop.xlsx')
seoul_sgg_pop.head()
'''
시군구명 주민등록인구
0 종로구 159,842
1 중구 135,321
2 용산구 244,953
3 성동구 302,695
4 광진구 361,923
'''
seoul_sgg= pd.read_excel('./files/seoul_sgg_list.xlsx')
seoul_sgg.head()
'''
시군구코드 시군구명 위도 경도
0 11320 도봉구 37.665861 127.031767
1 11380 은평구 37.617612 126.922700
2 11230 동대문구 37.583801 127.050700
3 11590 동작구 37.496504 126.944307
4 11545 금천구 37.460097 126.900155
'''
- 병합하기
seoul_sgg = pd.merge(seoul_sgg, seoul_sgg_pop, how = 'left', on ='시군구명')
seoul_sgg.head()
'''
시군구코드 시군구명 위도 경도 주민등록인구
0 11320 도봉구 37.665861 127.031767 329,300
1 11380 은평구 37.617612 126.922700 485,842
2 11230 동대문구 37.583801 127.050700 358,679
3 11590 동작구 37.496504 126.944307 404,617
4 11545 금천구 37.460097 126.900155 249,641
'''
seoul_sgg_biz = pd.read_excel('./files/sgg_biz.xlsx')
seoul_sgg = pd.merge(seoul_sgg, seoul_sgg_biz, how = 'left', on = '시군구명')
seoul_sgg.head()
'''
시군구코드 시군구명 위도 경도 주민등록인구 종사자수 사업체수
0 11320 도봉구 37.665861 127.031767 329,300 74,314 18,894
1 11380 은평구 37.617612 126.922700 485,842 90,049 24,873
2 11230 동대문구 37.583801 127.050700 358,679 140,748 31,878
3 11590 동작구 37.496504 126.944307 404,617 112,564 19,916
4 11545 금천구 37.460097 126.900155 249,641 234,012 32,472
'''
- 저장
seoul_sgg.to_excel('./files/seoul_sgg.xlsx', index = False)
반응형
'Bigdata > Web Crawling' 카테고리의 다른 글
__14.data.analyzing_Danawa_Crawling (다나와 1편) (0) | 2022.01.21 |
---|---|
__13.data.analyzing_Starbucks_data_visualizing (스타벅스 3편) (0) | 2022.01.20 |
__11.data_analyzing_Starbucks_crawling (스타벅스 1편) (0) | 2022.01.19 |
__10.data.analyzing_map_instagram(인스타그램 3편) (2) | 2022.01.18 |
__09.data_analyzing_visualizing_instagram (인스타그램 2편) (0) | 2022.01.17 |
Comments