13일차 python streamlit 고급

차지예·2025년 5월 30일

생성AI

목록 보기
13/56
post-thumbnail

1인 지역총소득

데이터 자료 : kosis

kosis에서 받은 자료는 기존에 라이브러리에서 불러온 자료들과 정리해야할 내용들이 많다.

나는 엑셀로 불러와서 자료를 최대한 다듬은 다음에
csv파일로 변환하는게 분석, 시각화 하는것이 편하다고 생각한다.

streamlit 상의 데이터 시각화

%%writefile GRDP.py

import streamlit as st
import pandas as pd
import plotly.graph_objects as go

FONT_FAMILY = "AppleGothic"

st.set_page_config(page_title="GRDP 비교: 전국 vs 서울특별시", layout="wide")
st.title("GRDP 비교: 전국 vs 서울특별시")

df = pd.read_csv("/content/drive/MyDrive/Colab Notebooks/딥다이브/GRDP.csv")

year_columns = df.columns[1:]
df[year_columns] = df[year_columns].apply(pd.to_numeric, errors='coerce')

target_df = df[df["시도별"].isin(["전국", "서울특별시"])].set_index("시도별")

fig = go.Figure()

for region in ["전국", "서울특별시"]:
    fig.add_trace(go.Scatter(
        x=year_columns,
        y=target_df.loc[region],
        mode='lines+markers',
        name=region,
        line=dict(width=3)
    ))

fig.update_layout(
    title="전국 vs 서울특별시 GRDP 비교",
    xaxis_title="연도",
    yaxis_title="GRDP (억 원)",
    legend_title="지역",
    hovermode="x unified",
    template="plotly_white",
    font=dict(family=FONT_FAMILY, size=14)
)

st.plotly_chart(fig, use_container_width=True)


원하는 지역 데이터 비교

import plotly.graph_objects as go

def plot_grdp_comparison(region1: str, region2: str):
    fig = go.Figure()

    fig.add_trace(go.Scatter(
        x=df.columns,
        y=df.loc[region1],
        mode='lines+markers',
        name=region1,
        hovertemplate='연도: %{x}<br>GRDP: %{y}천원<extra></extra>'
    ))

    fig.add_trace(go.Scatter(
        x=df.columns,
        y=df.loc[region2],
        mode='lines+markers',
        name=region2,
        hovertemplate='연도: %{x}<br>GRDP: %{y}천원<extra></extra>'
    ))

    fig.update_layout(
        title=f"{region1} vs {region2} GRDP 비교 (2000~2023)",
        xaxis_title='연도',
        yaxis_title='GRDP (단위: 천원)',
        template='plotly_white',
        legend_title='지역',
        hovermode='x unified',
        height=600
    )

    fig.show()

user_input = input("비교할 두 시도명을 쉼표(,)로 구분해 입력하세요 (예: 서울특별시, 전북특별자치도): ")
region1, region2 = map(str.strip, user_input.split(','))  # 공백 제거 포함

plot_grdp_comparison(region1, region2)

user_input 으로 받은 도시를
region1, region2 = map(str.strip, user_input.split(','))
map,split으로 각각 region1, region2으로 입력

결과적으로

울산광역시는 서울특별시보다 GRDP가 높고
울산광역시가 GRDP가 높은 이유가 있다.

  • 중공업 중심의 산업도시 :현대자동차, 현대중공업, 석유화학 등 대기업이 많아 부가가치 창출 큼.
  • 수출 중심 도시 : 자동차, 선박, 석유화학제품 등 수출이 활발. 울산항 중심 물류 허브.

더 많은 데이터를 얻을려면

kosis에서 전국의 많은 데이터를 받을수 있고
kaggle은 세계적을 데이터를 받을수 있다.

그외에도 찾아보면 데이터를 얻을수 있는 곳은 많다.


구체적은 코드는 깃허브

0개의 댓글