-
인구 통계 분석 - 위키피디아 크롤링 및 데이터 분석 01빅데이터/Data-Analysis 2022. 3. 4. 16:37
유투버 'todaycode오늘코드'님 강의 참조
- 위키피디아의 인구관련 페이지를 크롤링하고 그 데이터를 가지고 분석을 할 예정
01 크롤링
- 직접 크롤링을 돌려도 되나 판다스를 이용해서 더욱 더 편리하게 가능 하다.
import pandas as pd url ='https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EC%9D%B8%EA%B5%AC' pd.read_html(url)
html중 테이블 형태의 소스들만 들고 오게 된다. 위키피디아에서 검사를 해보면 대부분이 테이블 형태로 되어 있다 # 테이블 화 table = pd.read_html(url) len(table) # 리스트형태인 테이블을 인덱싱으로 각각 불러와진다 table[4]
강의랑 현재 위키피디아가 약간 다르다. 직접 테이블을 찾아야 한다. df = table[4] df.shape (97, 9) df.head()
02 시각화 및 분석
- 몇개의 컬럼들을 시각화 해보자
▶ 추계인구
# 시각화 import seaborn as sns import matplotlib.pyplot as plt from IPython.display import set_matplotlib_formats set_matplotlib_formats('retina') # MAC = 'AppleGothic' plt.figure(figsize=(15,4)) plt.xticks(rotation=90) sns.set(font='Malgun Gothic') sns.pointplot(data=df, x='연도 (년)', y='추계인구(명)')
plt.figure(figsize=(15,4)) plt.xticks(rotation=60) sns.lineplot(data=df, x='연도 (년)', y='추계인구(명)')
- 인구수는 끊임없이 증가한것을 볼 수 있다
▶ 출생자 수
plt.figure(figsize=(15,4)) plt.xticks(rotation=60) sns.pointplot(data=df, x='연도 (년)', y='출생자수(명)')
전쟁년도 이후 확 증가 했지만 계속해서 출생자수가 줄어들고 있다 *1e6 은 10의 6승이라는 말 -> (10 ** 6) * 0.4 를하면 얼마나 뜻하는지 알 수 있음
▶ 사망자 수
plt.figure(figsize=(15,4)) plt.xticks(rotation=60) sns.lineplot(data=df, x='연도 (년)', y='사망자수(명)')
전쟁시에 많은 사망자가 있다가 확 줄어들지만 계속해서 증가하고있다 즉 인구증가에 맞춰 인구 감소도 함께 진행 되는 것 03 위키피디아 그래프 만들기
위키피디아에서 제공하는 그래프와 비슷하게 만들어 보자 plt.figure(figsize=(15,8)) plt.xticks(rotation=60) sns.pointplot(data=df, x='연도 (년)', y='출생자수(명)') sns.pointplot(data=df, x='연도 (년)', y='사망자수(명)', color='orange') plt.ylabel('인구수(명)')
▶ 판다스로 그래프 그리기
# 판다스로 그래프 그리기 # 1. 원하는 컬럼만 추출 df_pop = df[['연도 (년)', '출생자수(명)', '사망자수(명)']] # 2. 그래프 축을 위한 인덱스 수정 df_pop = df_pop.set_index('연도 (년)') # 3. 시각화 df_pop.plot(figsize=(15,4)) # SEABORN도 슬라이싱 가능 plt.figure(figsize=(15,8)) plt.xticks(rotation=60) sns.pointplot(data=df[-50:], x='연도 (년)', y='출생자수(명)') sns.pointplot(data=df[-50:], x='연도 (년)', y='사망자수(명)', color='orange') plt.ylabel('인구수(명)')
출생수가 정말 많이 감소한것을 볼 수 있다 ▶ 최근 50년 인구수만 시각화
# 최근 50년만 시각화 df_pop[-50:].plot()
50년 전부터 급격히 줄어드는것을 볼 수 있다 ▶ 추계 인구수
# 추계 인구수 plt.figure(figsize=(15,4)) plt.xticks(rotation=60) sns.barplot(data=df, x='연도 (년)', y='추계인구(명)', palette='Blues')
'빅데이터 > Data-Analysis' 카테고리의 다른 글
인구 통계 분석 - 위키피디아 크롤링 및 데이터 분석 02 (0) 2022.03.05 실전 예제 - 시계열 분석 13 (0) 2022.03.03 실전 예제 - 시계열 분석 13 (0) 2022.03.03 실전 예제 - 시계열 분석 12 (0) 2022.03.03 실전 예제 - 온-오프라인 비지니스 분석 11 (0) 2022.03.02