Barış Sanlı
barissanli2@gmail.com
27 Kasım 2022
Eurostat üzerindeki nrg_bal_c veritabanında Türkiye dahil AB ülkelerinin enerji dengeleri bulunmaktadır. Bu veritabana erişim kolay, kullanımı biraz zordur. Bu yazıda, sıra ile Eurostat veritabanından ulusal denge tabloları indirilerek, filtrelenecek ve sonra da Türkiye için konut, ticarethane, ulaşım ve tarım sektörleri için uzun vadeli enerji tüketimleri çıkarılacaktır.
2008 sonrası ve 2015 sonrası olmak üzere, verinin daha detaylandırıldığı ve geçişlerin daha düzgün göründüğü bir istatistik altyapısına geçildiği düşünülmektedir. Örneğin kömür verisinin daha detaylı alındığı ve muhtemelen EPDK raporlarındaki sınıflandırma ile güçlendirilmiş bir veri serüveni gözükmektedir.
Ayrıca belirli düzenleyici değişiklikler, örneğin düşük kükürtlü motorine geçiş de verilerde ayrı bir değişime yol açmaktadır.
# ile kodun açıklamaları da yazılmıştır.
# veritabanını indirmeden önce mevcut dizinde olup olmadığına bakacağız, bu kütüphane onun için
from os import path
# bu kısımı kullanmıyoruz ama resim kaydetmek için bıraktım
#Image export using the "kaleido" engine requires the kaleido package,
#which can be installed using pip:
# $ pip install -U kaleido
# resim dosyalarını kaydetmek için
%pylab inline
%pylab is deprecated, use %matplotlib inline and import the required libraries. Populating the interactive namespace from numpy and matplotlib
# etkileşimli grafikler için plotly kütüphaneleri
import plotly.express as px
import plotly.io as io
import plotly
# bu satırın amacı, Jupyter'den export ettiğimizde etkileşimli html'ler elde etmek
plotly.offline.init_notebook_mode()
# veriler eurostat kütüphanesinden yok ise
# !pip install eurostat
import eurostat
import pandas as pd
# indireceğimiz kitaplık nrg_bal_c, fakat bunu nrg_bal_c-2022 olarak saklayacağız
# veri tabanı çok büyük 328 megabyte, indirmek uzun sürüyor.
# daha önce indirdiysek, indirilenden oku, indirilmediyse indir
if path.exists("nrg_bal_c-2022"):
df=pd.read_pickle("nrg_bal_c-2022")
else:
df=eurostat.get_data_df('nrg_bal_c')
df.to_pickle("nrg_bal_c-2022")
# eurostat kodları biraz çok karışık, onlardan kullanacaklarımızı Türkçe'ye çevirelim
# ULAŞTIRMA kodu ingilizce Transport Equipment yani Otomotiv ve Ulaştırma Makineleri
sektor_kod= ['FC_OTH_AF_E', 'FC_OTH_CP_E', 'FC_OTH_HH_E',
'FC_TRA_E', 'FC_TRA_RAIL_E', 'FC_TRA_ROAD_E']
sektor_isim=["Tarım","Ticari", "Konut","Ulaşım","Demiryolu","Karayolu"]
# Yakıt kodları ve ne anlama geldiği, eurostat yakıt kodlarının karşılıkları ve Türkçeleri
yakit_kod= [
"C0000X0350-0370", #solid fossil fuels
"G3000", #natural gas
"O4000XBIO", #oil
"E7000", # electricity
"RA000", # renewable
"TOTAL"
]
yakit_isim= ["Kömür","Gaz","Petrol","Elektrik","Yenilenebilir", "Toplam"]
# kodları isimlerle değiştir ki okuduğumuzu anlayalım
df["nrg_bal"].replace(sektor_kod,sektor_isim , inplace=True)
df["siec"].replace(yakit_kod,yakit_isim , inplace=True)
# veride sadece bu sektör ve yakıtları bırak, diğerlerini sil
df1=df[df['nrg_bal'].isin(sektor_isim)]
df2=df1[df1['siec'].isin(yakit_isim)]
# tüm grafikleri yapan fonksiyon bu
def sektor_grafik(sektor="Toplam", tip="percent" ):
# önce ihtiyacımız olan Sektörü, bin ton eşdeğer (KTOE) ve Türkiye için filtrele, olmayan veri satırlarını sil
dft=df2[((df2.nrg_bal==sektor) & (df2.unit=="KTOE") & (df2['geo\\time']=='TR'))].dropna()
# veriyi takla attır: Transpose
dftTx=dft.T
# başlıkların isimlerini yakıt isimlerine çevir
dftTx.columns= dft.siec
# kullanmadığımız satır/sütunları sil
dftTx.drop(['geo\\time','unit','siec','nrg_bal'],inplace=True)
# 2020'den 1990'yerine, 1990'dan 2020'ye sırala
dftTx=dftTx.reindex(index=dft.T.index[::-1])[:-4]
# yılları tamsayıya, sütunları noktalı sayılara dönüştür
dftTx=dftTx.astype(float)/1000.0
dftTx.index=dftTx.index.astype(str).astype(int)
# tüm sütun 0 ise sil
# dftTx=dftTx.loc[:, (dftTx != 0).any(axis=0)]
# eğer grafik türü "percent" ise y ekseni başlığını %'ye değiştir'
if tip=="percent":
title_t="Yüzde(%) Pay"
title_b=sektor+" Sektörünün Enerji Tüketiminin Kaynaklara Göre Dağılımı "
else:
title_t="Milyon Ton Eşdeper Petrol (MTEP)"
title_b=sektor+" Sektörünün Enerji Tüketimi"
if sektor=="NihaiTüketim":
title_b="Türkiye Nihai Enerji Tüketimi"
if sektor=="Toplam":
title_b="Toplam Sanayi Sektörü Enerji Tüketimi"
#yığımlı alan grafiği
fig = px.area(dftTx,
x=dftTx.index,
y=dftTx.columns[:-1],
groupnorm=tip)
# başlığı ortala, lejantın adını değiştir
fig.update_layout(
legend_title="Kaynaklar",
legend={'traceorder':'reversed'},
title = {'xanchor': 'center',
'x':0.5,
'text': title_b})
fig.update_xaxes(title_text = 'Yıl')
fig.update_yaxes(title_text = title_t)
# Grafikleri kaydetmek için
# fig.write_image("images/"+sektor+"-"+tip+".png")
# fig.update_yaxes(tickformat=".2s") # will format to 2 sigfigs
fig.show()
# Karanlık temayı seç, diğer temalar io.templates 'de'
io.templates.default = 'plotly_dark'
#tüm sektörler için önce yığım sonra pay grafiklerini çiz
for i in sektor_isim:
sektor_grafik(i,tip="")
sektor_grafik(i,tip="percent")