안녕하세요, 귤쌤
입니다. 오늘은 데이터 과학 시리즈를 가지고 왔습니다. 데이터 과학이란 데이터를 통해 현상을 이해하고 의미와 가치를 찾는 학문을 말해요. 데이터 과학을 기반으로 의사 결정에 도움이 되는 분야이기도 하지요. 넘쳐나는 데이터를 활용해 복잡한 문제를 해결하고 명확한 근거를 통해 의사 결정을 해나가야 하는 지금, 이 시대에 필수적인 학문인 것 같아요. 데이터 과학은 곧 21세기의 나침반
이라고 이름 붙여 봅니다!
출처: ChatGPT
2022 교육과정에서 새롭게(?) 등장하는 데이터 과학이라는 교과를 혹시 편제하셨나요? 제가
근무하는 학교는 2015 교육과정의 ‘데이터과학과 머신러닝’이라는 교과를 편성하여 운영하고 있고, 2022 교육과정에서도 2학년 선택 과목으로 ‘데이터과학’ 교과를 편제한 상태입니다.
수업을 준비하다 보면 자주 사용하는 데이터가 있기 마련인데요, 아이리스, 타이타닉, 보스톤 주택 가격 예측 데이터가 정제되어 있어 사용하기 편하죠. 다만, 매번 같은 데이터로 접근하니 아이들뿐 아니라 저 또한 흥미가 떨어집니다. 그래서 공공 데이터를 활용한 수업을 고민하는데요, 생각보다 데이터를 찾고 정제하여 수업에 맞게 준비할 시간이 많지 않죠
오늘 제가 준비한 자료가 도움이 되었으면 좋겠습니다!
오늘 자료의 순서입니다!
문제 정의 > 데이터 수집 > 전처리 > 데이터 분석 > 시각화 > 해석 및 제안
목표 : SDGs 
지난 호에서 시리얼쌤이 소개했던 SDGs를 다시 한번 소환해 보겠습니다! UN에서 발표한 지속가능발전목표(Sustainable Development Goals)는 2030년까지 모든 나라들이 더 나은 세상을 위해 함께 달성해야 할 총 17개의 목표와 169개의 세부 목표를 말합니다.
이 중에서 저는 7번째 목표인 에너지의 친환경적 생산과 소비를 주제로 데이터 분석을 진행해 보겠습니다.
1. 문제 정의 : SDGs 7. Affordable And Clean Energy

에너지의 친환경적 생산과 소비는 기후 위기를 겪고 있는 지구에서 필수적인 과제입니다. 특히, 지속이 가능하려면 경제적으로 저렴하고 지속적으로 수급이 필요한 친환경 에너지 수급이 필요합니다. 친환경 에너지의 대표적인 형태는 자연으로 얻는 재생에너지가 있습니다.
재생에너지란?
자연적으로 다시 공급, 재생되는 에너지를 말합니다. 태양광, 풍력, 수력, 지열, 해양에너지, 바이오에너지 등이 있습니다.
그렇다면 우리나라는 어떻게 재생에너지를 수집하고, 사용하고 있을까요? 궁금증이 생기지 않나요? 그리고 지속적으로 활용하기 위해서는 경제적으로도 부담이 되지 않아야 하고 충분히 지속적으로 생산이 되어야 할 것 같습니다. 지역별 편차는 어떻게 될까요?
지속가능한 발전을 위해 기후 변화 대응과 탄소 중립은 필수 과제!
우리나라의 재생에너지 지역별 보급 편차는 어떨까?
모두를 위한 감당할 수 있는 깨끗한 에너지 달성을 위해 지역별 현황 분석이 필요해!
⇒ 지역별 재생에너지 보급 현황과 추세 분석
그럼 이제 문제를 정의하였으니 데이터 수집으로 넘어가 보겠습니다!
2. 데이터 수집 : 공공데이터 포털

우리나라의 지역별 재생에너지 활용 실태를 알아보기 위한 공공데이터를 수집해 봅시다. 사실, 수업 준비를 하다 보면 아이디어는 좋아도 적당한 데이터를 찾기가 쉽지 않습니다. 그럴 때는 생성형 AI를 활용하여 샘플 데이터를 만드는 것도 방법입니다만, 대신 실제 분석이 아닌 분석 절차를 학습하기 위한 방편이 될 수밖에 없습니다.
공공데이터포털은 우리나라의 공식 전자정부 누리집입니다. 다양한 분야의 공공 데이터를 찾는 데 도움이 됩니다.
공공데이터 포털 > 검색창에 ‘신재생 에너지’ > 파일데이터 유형 선택
이 파일을 사용해 보도록 하겠습니다! 데이터 분석에 용이한 CSV 파일을 다운로드하여 사용해 봅시다.
3. 데이터 전처리

다운로드 받은 파일을 우선 영어 이름으로 재저장한 후, 열어봅시다!
파일을 확인해봅니다.
필터를 설정하면 내용 확인이 편해요!
파일은 광역, 기초, 에너지원, 생산량(toe), 발전량(MWh), 보급 용량 발전 누적(kW), 보급 용량 발전 신규(kW)의 컬럼으로 구성되어 있습니다. 각각의 컬럼에 어떤 정보가 들어가 있는지 확인하기 위해 필터링을 하였습니다. 그리고 내용을 확인하여 정리해 봅시다.
컬럼 구조 확인
•
광역 : 광역시·도
•
기초 : 시·군·구
•
에너지원 : 신·재생에너지 전체 또는 세부 자원
•
생산량(toe) : 석유환산톤 기준 에너지 생산량(ton of oil equivalent)
•
발전량(MWh) : 해당 에너지원으로 1년 동안 생산한 전력량
•
보급용량 발전 누적(kW) : 해당 연도 기준으로 누적된 발전 설비 설치 용량(1MW를 1시간 동안 생산한 양)
•
보급용량 발전 신규(kW) : 해당 연도에 새로 설치된 발전 설비 용량
이 데이터를 활용하여 다양한 내용을 분석해 볼 수 있어요. 하지만 이번에는 가장 간단히 지역별 편차를 보도록 하겠습니다. 지역별로 얼마큼 생산해 내고 있는지와 생산한 에너지를 활용해 만든 전력량인 발전량을 비교해 볼게요!
필요 없는 컬럼은 삭제하는 것이 좋겠습니다. 보급 용량 발전 누적과 보급 용량 발전 신규 컬럼은 삭제하여 전처리하겠습니다.
우선 한글 폰트 사용을 위한 준비를 해보겠습니다. 세션을 다시 시작해야 한글 폰트 확인이 가능합니다.
# Colab 한글 폰트 설치 & matplotlib 한글 설정
# 세션 다시 시작을 꼭 해주세요!
!apt -y update -qq
!apt -y install fonts-nanum
!fc-cache -fv
!rm -rf ~/.cache/matplotlib
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib import font_manager as fm
plt.rcParams['font.family'] = 'NanumGothic'
mpl.rcParams['axes.unicode_minus'] = False
print("탐지된 나눔 폰트:", sorted({f.name for f in fm.fontManager.ttflist if 'Nanum' in f.name})[:5])
# 테스트
plt.figure()
plt.plot([1,2,3],[1,4,9], marker='o')
plt.title('한글 폰트 테스트')
plt.xlabel('연도'); plt.ylabel('값')
plt.grid(True); plt.show()
Python
복사
파일을 구글 코랩에 업로드하고, 전처리를 해보겠습니다.
파일을 업로드합니다.
필요한 라이브러리를 불러온 후 파일을 읽는 코드입니다. 필요한 컬럼만 남기고 컬럼 이름도 단순화해 볼게요.
# 라이브러리를 불러오고, 파일을 읽습니다.
import pandas as pd
df=pd.read_csv('renewables_korea_clean_2023.csv',encoding='cp949')
# 필요한 컬럼만 남기고 이름을 단순화 합니다.
df = df[['광역', '생산량(toe)', '발전량(MWh)']]
df = df.rename(columns={
'생산량(toe)': '생산량_toe',
'발전량(MWh)': '발전량_MWh'
})
Python
복사
생산량과 발전량 컬럼의 값에서 쉼표 제거, 숫자로 변환 작업을 해볼게요.
# 쉼표 제거 후 숫자로 변환합니다.
for col in ['생산량_toe', '발전량_MWh']:
df[col] = df[col].astype(str).str.replace(',', '', regex=False)
df[col] = pd.to_numeric(df[col], errors='coerce')
Python
복사
자, 여기까지 데이터는 준비되었습니다. 그럼, 데이터 분석으로 넘어가 볼까요?
4. 데이터 분석

우리는 광역시·도 별 생산량과 발전량을 보고 싶기 때문에, 기초 시·군·구 자료를 별도로 보지 않고, 광역시·도 별로 합계를 내야 합니다.
# 광역시·도 별 합계를 계산합니다.
# as_index=False로 해야 일반 컬럼이 됩니다.
region_sum = df.groupby('광역', as_index=False).sum()
Python
복사
그럼, 광역시·도 별 생산량과 발전량 합계를 볼 수 있습니다.
출력 결과입니다.
조금 더 나아가서 생산량 대비 발전량 비율을 분석해 본다면, 효율을 확인할 수 있지 않을까 싶어요.
그럼, 광역시·도 별 재생에너지 발전 효율을 분석해 볼까요? 이번에는 display()를 활용하여 표를 예쁘게 그려 봅시다.
# 효율을 계산해서 display 합니다.
# display()는 표를 예쁘게 그려줍니다.
# ascending = False 를 활용해 내림차순 정렬하면 가장 효율이 좋은 지역을 확인하기 편하겠네요!
region_sum['효율_MWh_per_toe'] = region_sum['발전량_MWh'] / region_sum['생산량_toe']
print("광역별 효율(MWh per toe):")
display(region_sum.sort_values('효율_MWh_per_toe', ascending=False).head())
Python
복사
실행 결과 화면입니다.
제주가 가장 효율이 높은 것을 볼 수 있습니다! 
그럼 시각화를 통해 데이터 분석을 이어나가 볼까요?
5. 데이터 시각화

데이터 시각화를 위한 라이브러리인 matplotlib을 활용해 보겠습니다.
import matplotlib.pyplot as plt
# x축에 쓸 위치 번호 (0, 1, 2, ...)
positions = range(len(region_sum))
# 막대 폭
bar_width = 0.4
plt.figure(figsize=(10,6))
# 생산량 막대 (왼쪽으로 살짝 이동)
plt.bar(
[pos - bar_width/2 for pos in positions], # 위치
region_sum['생산량_toe'], # 값
width=bar_width,
label='생산량(toe)',
color='skyblue'
)
# 발전량 막대 (오른쪽으로 살짝 이동)
plt.bar(
[pos + bar_width/2 for pos in positions], # 위치
region_sum['발전량_MWh'], # 값
width=bar_width,
label='발전량(MWh)',
color='salmon'
)
# x축에 광역 이름 붙이기
plt.xticks(positions, region_sum['광역'], rotation=45)
# 그래프 제목, 축 레이블, 범례
plt.ylabel('값')
plt.title('광역별 신재생에너지 생산량 vs 발전량')
plt.legend()
# 레이아웃 정리
plt.tight_layout()
plt.show()
Python
복사
시각화 코드 실행 결과 화면
이번엔 지역별 발전 효율 비교를 위한 그래프도 그려볼까요?
# 내림차순 정렬하여 Top5 추출
top5_efficiency = region_sum.sort_values('효율_MWh_per_toe', ascending=False).head(5)
# 오렌지색 막대그래프를 그려볼게요. x축은 지역, y축은 효율입니다.
plt.figure(figsize=(8,5))
bars = plt.bar(top5_efficiency['광역'], top5_efficiency['효율_MWh_per_toe'], color='orange')
# 막대 위에 값을 표시할게요. 중앙 위에 표시합니다.
for bar in bars:
height = bar.get_height()
plt.text(
bar.get_x() + bar.get_width()/2,
height,
f"{height:.2f}",
ha='center', va='bottom', fontsize=10
)
plt.ylabel('MWh per toe')
plt.title('광역별 발전 효율 Top5')
plt.tight_layout()
plt.show()
Python
복사
시각화 실행 화면입니다.
6. 해석 및 제안

데이터 분석 결과를 정리해 볼까요?
재생 에너지 생산량은 전북, 충남, 전남, 경기, 강원 순으로 높았으며 발전량은 전북, 충남, 전남, 강원, 경북 순으로 높았다. 생산량 대비 발전량을 지표로 한 효율 비교에서는 제주, 전남, 경북, 충남, 광주 순이었다. 또한, 생산량과 발전량이 지역별 편차가 큰 것을 확인할 수 있었다.
이로 인한 정책 제안을 해본다면, 이렇게 정리해 볼 수 있지 않을까요?
효율이 높은 지역은 생산량 규모와 관계가 없었으며 설비 구성, 관리, 기후 조건과 같은 다른 변인을 확인해 볼 필요성이 있다.
효율이 낮은 지역은 설비 노후화, 입지 조건, 에너지원 불균형 등의 변인을 확인하여 효율을 높이는 방향을 연구해야 한다.
그러므로, 효율이 높은 지역의 사례를 다른 지역에 적용하거나, 효율이 낮은 지역을 맞춤형 설비를 지원하는 정책을 제안할 수 있다.
다만, 실제 데이터라도 다양한 변인을 포함하고 있지 않으므로 이를 염두에 두어야 할 것 같습니다. 또한 같은 데이터로도 해석에 따라 다른 결론이 나올 수 있으므로 제 분석 내용이 반드시 맞는다는 보장은 없을 것 같아요. 혹시, 해석이 미흡하더라도 양해 부탁드립니다. 저도 더 공부가 필요한 부분입니다.
[주의 사항]
•
공공데이터 하나만을 가지고 분석한 내용이므로 다양한 변인에 따라 다른 결과가 나올 수 있음을 염두에 두어야 합니다.
•
공공데이터 업데이트 시기를 확인하여야 합니다.
저희 학교는 공사 중인데요, 주차장에 태양광 패널이 설치되어 있습니다. 이 데이터 분석 수업 이후에 실제 학교에서 수집하고 있는 재생에너지 생산량과 발전량을 조사해 보는 작업으로 연결해도 재밌을 것 같다는 생각이 듭니다!
데이터 분석 과정은 항상 시간이 오래 걸리는 것 같아요. 그래도 요새는 외롭지 않게 수업을 설계할 수 있습니다. gpt를 비롯한 생성형 AI가 있으니까요! 수업 설계, 코딩 오류 수정에 큰 도움을 주고 있으니, 적절히 활용하면 좋을 것 같습니다. 우리가 가르쳐야 하는 수업의 본질만 잊지 않는다면 매우 유용한 협력자가 될 것이라 생각합니다.