728x90
글로벌 인구 통계 추세 데이터 실습
글로벌 인구 통계 추세 데이터 (WPP 2022 Demographic Indicators)
https://www.kaggle.com/datasets/abmsayem/wpp2022-demographic-indicators
: 1950년부터 2020년까지 세계적인 인구 통계적 추세 정보를 담고 있음
-> 약 54개 (인구수, 출생률, 출산률, 등)
=> 특정년도 1월의 전체 인구수를 나타내는 "TPopulation1Jan" 만을 사용해보자!
지도 그래프 활용하기
# 기본적인 비어있는 지도 생성!
import folium
m = folium.Map(location=[20, 0], zoom_start=2) # location : 초기 지도의 중심 위치 (위도, 경도)
# zoom_start : 지도의 초기 확대 레벨
<원 활용>
for idx, row in country_data_2020.iterrows():
# 원의 크기는 인구에 비례하도록 설정
radius = row['TPopulation1July'] # 1단위 : 천 명
# 원을 선택 시, 뜨는 정보 표시 (나라 & 인구수)
popup_message = f"{row['Location']}: {row['TPopulation1July']}"
# 원을 지도에 추가
folium.Circle(
# 점의 위치는 위도와 경도값
location=[row['latitude'], row['longitude']],
radius=radius,
color='blue',
fill=True,
fill_color='blue',
popup=popup_message # 팝업으로 정보 표시
).add_to(m)
# 지도 표시
m
<히트맵 활용>
import folium
from folium.plugins import HeatMap
# 기본 지도 생성
m = folium.Map(location=[20, 0], zoom_start=2)
# 히트맵 데이터 준비 (위도, 경도, 인구수를 가중치로 사용)
heat_data = [[row['latitude'], row['longitude'], row['TPopulation1July']] for idx, row in country_data_2020.iterrows()]
# 히트맵 추가
HeatMap(heat_data,
min_opacity=0.5,
radius=30,
blur=25).add_to(m)
m
시간에 따른 인구수 통계 값 확인
파이썬 "IPyWidgets" 활용
-> 사용자 인터랙션의 결과로 특정 값을 반환받을 수 있는 위젯 사용 가능
- 연도를 컨트롤하는 위젯
- 지도를 그리는 위젯
Bar Plot 살펴보기
: 수의 양적 차이를 직관적으로 보여줌
import seaborn as sns
import ipywidgets as widgets
import matplotlib.pyplot as plt
from IPython.display import display, clear_output
year_slider = widgets.IntSlider(
value=2020,
min=1950,
max=2022,
step=1,
description='Year:',
continuous_update=False
)
data_clean = country_data.dropna(subset=['latitude', 'longitude'])
# 전체 데이터셋에서 고유한 나라들 추출
unique_countries = data_clean['Location'].unique()
# 고유한 나라들에 대한 색상 매핑 생성
colors = sns.color_palette("tab20", len(unique_countries))
country_colors = dict(zip(unique_countries, colors))
output = widgets.Output()
def plot_top10_population(year):
with output:
clear_output(wait=True)
data_year = data_clean[data_clean['Time'] == year]
top10_data = data_year.nlargest(10, 'TPopulation1July')
# 상위 10개 국가에 대한 색상 할당
top10_colors = {country: country_colors[country] for country in top10_data['Location']}
# 바 차트 그리기
plt.figure(figsize=(10, 6))
sns.barplot(x='TPopulation1July', y='Location', data=top10_data, hue='Location', legend=False,
palette=[top10_colors[country] for country in top10_data['Location']])
plt.title(f'Top 10 Countries by Population in {year}')
plt.xlabel('Population (in thousands)')
plt.ylabel('Country')
plt.show()
def on_year_change(change):
plot_top10_population(change['new'])
year_slider.observe(on_year_change, names='value')
display(year_slider)
plot_top10_population(2020)
display(output)
-> 년도 위젯에 따른 인구수 상위 10개의 나라를 직관적으로 확인할 수 있음.
728x90
'STUDY > DevCourse' 카테고리의 다른 글
[데브코스][데이터 분석] 애자일 A/B 테스트 (0) | 2024.05.20 |
---|---|
[데브코스][데이터 분석] 추천 시스템과 추천 시스템 알고리즘 (1) | 2024.05.16 |
[데브코스][데이터 분석] 데이터 마이닝 (0) | 2024.05.16 |
[데브코스][데이터 분석] 딥러닝 모델을 활용한 문장 분류 실습 (1) | 2024.05.15 |
[데브코스][데이터 분석] 자연어 처리 & 문장 분류 (0) | 2024.05.15 |