공공데이터 API로 분석하는 지속가능 발전과 대한민국의 미래

지난 20년의 데이터를 읽고, 앞으로 10년의 추세선을 그리며, 대한민국의 미래를 위한 정책을 개발하는 데이터 분석 프로젝트

공공데이터 APISDGs대한민국 미래

숫자로 읽는
대한민국의 지속가능한 내일

온실가스, 에너지, 인구, 지역, 산업 데이터를 분석하면 대한민국이 어떤 미래로 가고 있는지 예측할 수 있습니다. 데이터는 정책의 출발점입니다.

탐구 질문

Q1. 지난 20년 동안 지속가능성 지표는 어떻게 변했는가?

Q2. 현재 추세가 10년 더 이어지면 대한민국의 미래는 어떤 모습인가?

Q3. 정부·학교·지역사회는 어떤 정책을 개발해야 하는가?

20년과거 추세 분석
10년미래 예측
6대정책 개발

1. 프로젝트 주제

구분내용
대주제지속가능 발전과 대한민국의 미래
권장 지표온실가스 배출량, 재생에너지 비중, 전력 사용량, 인구구조, 미세먼지, 지역 일자리
분석 범위지난 20년 자료 + 앞으로 10년 추세선
분석 도구공공데이터 API, pandas, matplotlib, scikit-learn 선형회귀
결과물추세선 그래프, 인사이트, 정책 개발안, 공공데이터 활용 포스터

2. 활용 가능한 공공데이터 예시

아래 코드는 수업용 범용 템플릿입니다. 실제 API의 URL, 파라미터명, XML 태그명은 공공데이터포털 활용가이드에 맞추어 수정해야 합니다. 인증키가 없거나 API 호출이 실패하면 샘플 데이터로 그래프와 정책 개발 과정을 실습합니다.

3. 분석 절차

① API 인증키 입력
② 공공데이터 호출
③ 20년 자료 정리
④ 10년 추세선 예측
⑤ 정책 개발

4. 파이썬 전체 코드

# ============================================================
# 공공데이터 API 인증키 활용 프로젝트
# 주제: 지속가능 발전과 대한민국의 미래
# 분석: 지난 20년 + 앞으로 10년 추세선, 인사이트, 정책 개발
# ============================================================

import requests
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from xml.etree import ElementTree as ET
from sklearn.linear_model import LinearRegression

SERVICE_KEY = "여기에_공공데이터_API_인증키를_입력하세요"
API_URL = "https://apis.data.go.kr/B551177/AirportGreenGas/getGreenGasInfo"

def fetch_public_data():
    params = {"serviceKey": SERVICE_KEY, "pageNo": 1, "numOfRows": 100, "type": "xml"}
    try:
        response = requests.get(API_URL, params=params, timeout=10)
        response.raise_for_status()
        root = ET.fromstring(response.content)
        rows = []
        for item in root.iter("item"):
            year = item.findtext("year") or item.findtext("stdYear") or item.findtext("baseYear") or item.findtext("yr")
            value = item.findtext("emission") or item.findtext("ghgEmis") or item.findtext("totEmis") or item.findtext("value")
            if year and value:
                rows.append({"year": int(year), "value": float(str(value).replace(",", ""))})
        df = pd.DataFrame(rows)
        if df.empty:
            return make_sample_data()
        return df
    except Exception as e:
        print("API 호출 또는 XML 파싱 실패:", e)
        print("수업용 샘플 데이터를 사용합니다.")
        return make_sample_data()

def make_sample_data():
    years = np.arange(2006, 2026)
    # 값이 높을수록 지속가능성 위험이 크다고 가정한 수업용 예시 지표
    values = [62,64,66,69,71,73,75,76,78,79,81,82,80,79,77,75,73,71,69,67]
    return pd.DataFrame({"year": years, "value": values})

df = fetch_public_data()
df = df.dropna().sort_values("year")
current_year = df["year"].max()
df_20 = df[df["year"] >= current_year - 19].copy()

X = df_20[["year"]]
y = df_20["value"]
model = LinearRegression()
model.fit(X, y)

future_years = np.arange(df_20["year"].min(), current_year + 11)
future_X = pd.DataFrame({"year": future_years})
predicted = model.predict(future_X)

first_value = df_20.iloc[0]["value"]
last_value = df_20.iloc[-1]["value"]
future_value = predicted[-1]
past_change_rate = (last_value - first_value) / first_value * 100
future_change_rate = (future_value - last_value) / last_value * 100

print("[핵심 인사이트]")
print(f"지난 20년 변화율: {past_change_rate:.2f}%")
print(f"현재 값: {last_value:.2f}")
print(f"10년 후 예측값: {future_value:.2f}")
print(f"현재 대비 10년 후 예측 변화율: {future_change_rate:.2f}%")

if future_change_rate > 0:
    print("판단: 현재 추세가 이어지면 지속가능성 위험이 커질 수 있습니다.")
else:
    print("판단: 현재 추세가 이어지면 지속가능성 위험이 완화될 가능성이 있습니다.")

plt.rcParams["font.family"] = "Malgun Gothic"
plt.rcParams["axes.unicode_minus"] = False
plt.figure(figsize=(12, 7))
plt.plot(df_20["year"], df_20["value"], marker="o", linewidth=2, label="실제 지표")
plt.plot(future_years, predicted, linestyle="--", linewidth=2, label="추세선 및 10년 예측")
plt.axvline(current_year, linestyle=":", label="현재 기준 연도")
plt.title("지속가능 발전과 대한민국의 미래: 20년 추세와 10년 전망")
plt.xlabel("연도")
plt.ylabel("지속가능 미래지표")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.savefig("korea_sustainable_future_trend.png", dpi=200)
plt.show()

policies = [
    "탄소중립 전환 가속 정책",
    "미래세대 인구·교육 정책",
    "지역균형 지속가능 도시 정책",
    "데이터 공개형 정책 평가",
    "학교 참여형 지속가능 프로젝트",
    "녹색산업 일자리 육성 정책"
]
print("\n[정책 개발안]")
for i, policy in enumerate(policies, start=1):
    print(f"{i}. {policy}")

5. 도출할 수 있는 인사이트

  1. 미래는 현재 추세의 연장선이다. 20년 추세가 개선되지 않으면 10년 뒤 위험이 커질 수 있습니다.
  2. 지속가능 발전은 환경만의 문제가 아니다. 에너지, 인구, 지역, 산업 정책이 함께 연결되어야 합니다.
  3. 정책은 데이터로 검증되어야 한다. 매년 지표를 공개하고 정책 효과를 수치로 확인해야 합니다.
  4. 학교 교육도 미래 정책의 일부이다. 학생이 공공데이터를 분석하면 지역 문제 해결 역량이 커집니다.

6. 대한민국의 미래를 위한 정책 개발안

정책 1. 탄소중립 전환 가속

공공건물 에너지 효율 개선, 재생에너지 설비 확대, 산업 공정 저탄소화를 동시에 추진합니다.

정책 2. 미래세대 인구·교육 정책

저출생·고령화에 대응하여 돌봄, 교육, 청년 일자리, 지역 정주 여건을 함께 개선합니다.

정책 3. 지역균형 지속가능 도시

지역별 친환경 산업, 대중교통, 생활 SOC를 확충하여 수도권 집중을 완화합니다.

정책 4. 공공데이터 기반 정책 평가

온실가스, 에너지, 인구, 일자리 지표를 대시보드로 공개하고 정책 효과를 매년 평가합니다.

정책 5. 학교 참여형 지속가능 프로젝트

학생들이 공공데이터 API를 활용해 지역 문제를 분석하고 포스터·정책 제안서를 제작하도록 지원합니다.

정책 6. 녹색산업 일자리 육성

재생에너지, 전기차, 스마트그리드, 탄소포집, 기후테크 분야의 미래 일자리를 확대합니다.

7. 수업 활동 문항

  1. 지속가능 발전을 판단할 수 있는 공공데이터 지표 3가지를 쓰시오.
  2. 지난 20년 추세와 앞으로 10년 예측을 비교해야 하는 이유를 설명하시오.
  3. 선형회귀 추세선의 장점과 한계를 각각 쓰시오.
  4. 대한민국의 미래를 위해 가장 시급한 정책 1가지를 고르고 근거를 제시하시오.
  5. 공공데이터 API를 활용하면 시민 참여 정책 개발에 어떤 장점이 있는지 쓰시오.