Eurostat'taki Türkiye Enerji Denge Tabloları ile Konut, Ulaştırma, Ticari ve Tarım Enerji Tüketimlerinin 1990-2020 Analizi¶

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.

In [1]:
# veritabanını indirmeden önce mevcut dizinde olup olmadığına bakacağız, bu kütüphane onun için
from os import path
In [2]:
# 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
In [3]:
%pylab inline
%pylab is deprecated, use %matplotlib inline and import the required libraries.
Populating the interactive namespace from numpy and matplotlib
In [4]:
# etkileşimli grafikler için plotly kütüphaneleri
import plotly.express as px
import plotly.io as io
import plotly
In [5]:
# bu satırın amacı, Jupyter'den export ettiğimizde etkileşimli html'ler elde etmek
plotly.offline.init_notebook_mode()
In [6]:
# veriler eurostat kütüphanesinden yok ise 
# !pip install eurostat
import eurostat
import pandas as pd
In [7]:
# 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")
In [8]:
# 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"]
In [9]:
# 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"]
In [10]:
# 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)
In [11]:
# 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)]
In [12]:
# 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()
In [13]:
# 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")
In [ ]: