# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

import pandas as pd, json, matplotlib.pyplot as plt
from pdb import set_trace
# %matplotlib inline

# ls *.csv

sc = pd.read_csv('scenario.csv')

df = pd.read_csv('data_by_sphere.csv')

sum_by_sphere = df.loc[df.year == 2012].groupby('sphere', as_index=False).k_t_ne.sum()
sum_by_sphere.columns = ['sphere', 'total_ktne']

df

df = df.merge(sum_by_sphere, on='sphere', how='left')
df.sphere = df.sphere.apply(str.capitalize)
df.sphere = df.sphere.str.replace('Total', 'Всього')

df.sort_values(['total_ktne', 'sphere', 'year', 'is_vde', 'k_t_ne'], ascending=[False, True, True, True, False]
              ).drop('total_ktne', axis=1
              ).to_csv('data_by_sphere.csv', index=False)

measures = {
    'ДОМОГОСПОДАРСТВА': [
        'Термомодернізація житлових будинків',
        'Модернізація систем енергозабезпечення об’єктів ЖКГ',
        'Автоматизовані індивідуальні теплові пункти (ІТП)',
        'Впровадження когенераційних систем для багатоповерхових будинків',
        'Техніка А++, А+++',
        '40-50% населення використовує сонячні панелі на дахах будинків',
        'Опалення та гаряча вода за рахунок біопалива та відходів, централізованого ВДЕ-тепла та використання сонячних колекторів',
    ],
    'ТРАНСПОРТ': [
        'Легкові авто: 90% електромобілі, 10% на біопаливі',
        'Електроавтобуси та електропотяги',
        'Авіаційний, водний, вантажний транспорт на біопаливі',
    ],
    'ПРОМИСЛОВІСТЬ': [
        '88% - енергія з відновлюваних джерел та альтернативних видів палива',
        'Електрифікація промисловості',
        'Заміна енергоємного обладнання на нове та ефективне',
        'Більші інвестиції з боку промислових виробників, зокрема електроенергетичної галузі',
    ],
    'СІЛЬСЬКЕ ГОСПОДАРСТВО': [
        'Використання ВДЕ для виробництва електроенергії та тепла',
        'СГ Транспорт на біопаливі',
        'Вирощування енергетичних культур',
        'Нові технології використання сільськогосподарських машин та механізмів',
    ],
    'СФЕРА ПОСЛУГ': [
        'ВДЕ 88%',
        'Заходи з енергоефективності та енергозаощадження',
        'Термоізоляція приміщень',
        'Використання високоефективних технічних приладів (А++, А+++)',
    ],
    'Всього': [
        'Економічні наслідки:',
        'Скорочення потреб в енергоресурсах на 42%',
        'Економія до 75% енергоресурсів для опалення завдяки повній реконструкції будинків',
        'Економія 30% коштів завдяки енергоефективності та енергозбереженню',
        'Енергоємність ВВП України знизиться у 3  рази',
        'Не потрібно імпортувати газ, вугілля, ядерне паливо',
        'Соціальні наслідки:',
        'Нова енергетична інфраструктура',
        'Нові робочі місця в галузі ВДЕ та енергоефективності',
        'Нові можливості для розвитку на місцях: локальне виробництво енергії, використання місцевих ресурсів',
        'Зменшення кількості працівників у видобувній галузі',
        'Скорочення викидів парникових газів 90 %  від рівня 1990 р.',
        'Зниження негативного впливу від енергетики на здоров’я людей',
    ]
}


def reshape_df(d):
    new = d.pivot('year', 'source', 'k_t_ne').reset_index()
    new['sphere'] = d.sphere.iloc[0]
    return new.reindex(['year', 'sphere', 'Біопаливо та відходи', 'Вугілля', 'Газ', 'Електроенергія',
       'Електроенергія з ВДЕ', 'Нафта та нафтопродукти', 'Сонячна енергія',
       'Теплова енергія', 'Теплова енергія з ВДЕ'], axis=1)


df.groupby(['year', 'sphere'], as_index=False).apply(reshape_df).reset_index(drop=True).fillna(0)


def reshape_df(d):
    new = d.pivot('year', 'sphere', 'k_t_ne').reset_index()
    new['source'] = d.source.iloc[0]
    new['is_vde'] = d.is_vde.iloc[0]
    return new.reindex(['year', 'source', 'is_vde', 'Всього', 'Промисловість', 'Домогосподарства', 'Транспорт',
       'Сфера послуг', 'Сільське господарство'], axis=1)


df.groupby(['year', 'source'], as_index=False).apply(reshape_df
 ).reset_index(drop=True
 ).fillna(0
#  ).to_csv('data_by_source.csv', index=False)

pd.read_csv('data_by_source.csv')

order = df[['source', 'is_vde']].drop_duplicates(
                               ).reset_index(
                               ).sort_values('index', ascending=False
                               ).reset_index(drop=True)

order = dict(map(lambda v: (v[1], {'index': v[0], 'is_vde': bool(v[2])}), order.values))

with open('sources_order.json', 'w') as f:
    json.dump(order, f, allow_nan=False, ensure_ascii=False)

measures = {k.capitalize(): v for k, v in measures.items()}

with open('measures.json', 'w') as f:
    json.dump(measures, f, allow_nan=False, ensure_ascii=False)

# ## new data

# +
df = pd.read_csv('data_from_report.csv', sep='\t')
df.columns = ['source', 'sphere', 'scenario', 'Y2012', 'Y2015', 'Y2020', 'Y2025', 'Y2030',
       'Y2035', 'Y2040', 'Y2045', 'Y2050']
df = pd.wide_to_long(df, stubnames='Y', i=['source', 'sphere', 'scenario'], j='year').reset_index()
df.columns = ['source', 'sphere', 'scenario', 'year', 'ktne']

df = df.loc[df.source != 'Всього'].copy()

# +
totals = df.loc[df.sphere == 'загалом'].copy()
df = df.loc[df.sphere != 'загалом'].copy()

new_total = df.groupby(['source', 'scenario', 'year'], as_index=False).ktne.sum()
new_total['sphere'] = 'загалом'
df = pd.concat([df, new_total], ignore_index=True, sort=False)
# df.to_csv('data_report_longest.csv', index=False)
# -

df = pd.read_csv('data_report_longest.csv')


# +
def reshape_df(d):
    new = d.pivot('year', 'sphere', 'ktne').reset_index()
    new['source'] = d.source.iloc[0]
    new['scenario'] = d.scenario.iloc[0]
    return new

df.groupby(['year', 'source', 'scenario'], as_index=False
          ).apply(reshape_df
          ).reset_index(drop=True
          ).fillna(0
          ).to_csv('data_report_wide.csv', index=False)
# -



# ### parse costs

import re

# +
with open('costs_to_parse.txt') as f:
    costs = f.read()

costs = re.sub('\s{2,}|\s+(?<=\d)|\s+(?=\d)', '\n', costs)

scens = re.split('\s*-{3,}\s*', costs)

snames = ['Консервативний', 'Ліберальний', 'Революційний']

sdfs = [];

for i, s in enumerate(scens):
    sdf = pd.DataFrame(list(map(lambda r: r.strip().split('\n'), re.findall('[^0-9]+[^А-яЄєЇїІіҐґ]+', s))))
    sdf['scenario'] = snames[i]
    sdfs.append(sdf)
    
sdf = pd.concat(sdfs, ignore_index=True, sort=False
       ).replace({'-': 0})

sdf.columns = ['action', 'Y2012', 'Y2015', 'Y2020', 'Y2025', 'Y2030', 'Y2035', 'Y2040', 'Y2045', 'Y2050', 'scenario']

sdf = pd.wide_to_long(sdf, stubnames='Y', i=['action', 'scenario',], j='year').reset_index()

sdf.columns = ['action', 'scenario', 'year', 'm_euro']
# sdf.to_csv('costs.csv', index=False)
# -





StarcoderdataJupyterScriptsDedupFiltered