Plotly를 활용해 대륙별 평균 기대수명의 변화를 선그래프로 시각화
데이터는 유명한 gapminder 데이터셋을 사용했다.
groupby를 사용해 연도별·대륙별 평균 기대수명을 구한다.
df_grouped = df.groupby(["year", "continent"])["lifeExp"].mean().reset_index()
groupby(["year", "continent"]): 연도와 대륙을 기준으로 그룹화["lifeExp"].mean(): 기대수명의 평균을 계산reset_index(): 그룹화 후 생긴 멀티 인덱스를 다시 일반 열로 변환import plotly.express as px
fig = px.line(
df_grouped,
x="year",
y="lifeExp",
color="continent",
markers=True,
title="대륙별 평균 기대수명 변화",
template="ggplot2"
)
px.line()으로 선 그래프 생성color="continent" 옵션으로 대륙별 구분markers=True로 각 지점에 점 표시template="ggplot2"로 보기 좋은 테마 적용fig.update_layout(
xaxis=dict(
title="연도",
showgrid=True, # 주요 눈금에 격자 표시
minor_showgrid=True, # 보조 눈금
gridcolor="lightgray",
showline=True,
linecolor="black",
ticks="outside"
),
yaxis=dict(
title="평균 기대수명",
showgrid=True,
minor_showgrid=True,
gridcolor="lightgray",
showline=True,
linecolor="black",
ticks="outside"
)
)

대륙별 평균 기대수명 선그래프는
전 세계적으로 기대수명이 향상되고 있으나,
지역별 격차는 여전히 존재하며
특히 아프리카의 기대수명은 상대적으로 낮은 수준임을 보여준다.
이러한 정보는 국제 보건정책, 개발지원 전략 등에 중요한 기준이 된다.
버블의 크기는 인구(Population), 색상은 대륙(Continent)을 나타냅니다.
| 컬럼명 | 의미 |
|---|---|
gdpPercap | 1인당 GDP |
lifeExp | 기대수명 |
pop | 인구 |
continent | 대륙 |
year | 연도 |
df = px.data.gapminder()
df_2007 = df[df["year"] == 2007]
2007년 데이터만 필터링
fig = px.scatter(
df_2007,
x="gdpPercap",
y="lifeExp",
size="pop", # 버블 크기: 인구 수
color="continent", # 색상: 대륙
hover_name="country", # 마우스 오버시 국가 이름 표시
size_max=60,
log_x=True, # x축: 로그 스케일
title="2007년 국가별 1인당 GDP vs 기대수명 (버블 크기=인구)",
template="plotly_white"
)
fig.update_layout(
xaxis_title="1인당 GDP (log scale)",
yaxis_title="기대수명",
legend_title="대륙"
)
size="pop": 인구가 많은 국가일수록 더 큰 버블color="continent": 대륙별로 색상 구분log_x=True: GDP의 스케일이 커서 로그 스케일로 가독성 향상hover_name="country": 마우스를 갖다대면 국가 이름 표시
❓경제력과 기대수명은 어떤 관계일까?
전반적으로 양의 상관관계가 있다. 1인당 GDP가 높은 국가일수록 기대수명이 높다.
예: 노르웨이, 일본, 스위스 등은 GDP도 높고 기대수명도 높음
반대로 GDP가 낮은 아프리카 일부 국가는 기대수명이 50세 내외로 짧음
→ 의료 수준, 교육, 복지 인프라가 경제력과 함께 개선되기 때문입니다.