import pandas as pd
import numpy as np

# Cesta k souboru
file_obce = r"C:\\Škola\\BAK\\DATA\\PROCESSED\\CR_Obce_VSECHNY_OBDOBI.xlsx"

# Správné názvy listů v Excelu
list_leto = "CR_obce_20220723_20220819_Merge"
list_podzim = "CR_obce_20221010_20221106_Merge"

# Načtení dat
xls = pd.ExcelFile(file_obce)
df_leto = pd.read_excel(xls, sheet_name=list_leto)
df_podzim = pd.read_excel(xls, sheet_name=list_podzim)

# Definování časových intervalů
nocni_interval = list(range(22, 24)) + list(range(0, 6))  # 22:00-05:00
denni_interval = list(range(6, 22))  # 06:00-21:00

# Seznam vybraných obcí
typicke_obce = {
    "Dolní Morava": "Dolní Morava",
    "Jeseník": "Jeseník",
    "Hranice": "Hranice",
    "Lutín": "Lutín",
    "Velký Týnec": "Velký Týnec",
    "Křelov-Břuchotín": "Křelov-Břuchotín"
}


# Výpočet rozdílu mezi aktivní částí dne a nocí pro každou obec a kategorii
def priprav_data_pro_tabulku(df_leto, df_podzim, obec):
    data_leto = df_leto[df_leto["NAZEV"] == obec].iloc[0]
    data_podzim = df_podzim[df_podzim["NAZEV"] == obec].iloc[0]

    def vypocet_podil(data, interval, celkovy_pocet, kat):
        return [
            sum([data[f"{kat}_d{den}_{hod}_h"] for hod in interval]) / celkovy_pocet[den - 1] * 100 if celkovy_pocet[
                                                                                                           den - 1] > 0 else 0
            for den in range(1, 8)
        ]

    celkovy_pocet = [[
        sum([data_leto[f"CelkPocOs_d{den}_{hod}_h"] for hod in denni_interval]) for den in range(1, 8)
    ], [
        sum([data_leto[f"CelkPocOs_d{den}_{hod}_h"] for hod in nocni_interval]) for den in range(1, 8)
    ], [
        sum([data_podzim[f"CelkPocOs_d{den}_{hod}_h"] for hod in denni_interval]) for den in range(1, 8)
    ], [
        sum([data_podzim[f"CelkPocOs_d{den}_{hod}_h"] for hod in nocni_interval]) for den in range(1, 8)
    ]]

    # Výpočet pro každou kategorii (rezidenti, dojíždějící, návštěvníci) a rozdíl den – noc
    data = {kat: [
        np.mean(vypocet_podil(data_leto, denni_interval, celkovy_pocet[0], kat)) - np.mean(vypocet_podil(data_leto, nocni_interval, celkovy_pocet[1], kat)),  # Léto - Den - Noc
        np.mean(vypocet_podil(data_podzim, denni_interval, celkovy_pocet[2], kat)) - np.mean(vypocet_podil(data_podzim, nocni_interval, celkovy_pocet[3], kat))  # Podzim - Den - Noc
    ] for kat in ["Rezid", "PracSkolDoj", "Navst"]}

    return data


# Vytvoření tabulky pro všechny obce a uložení do Excelu
tabulka_data = []

for nazev, obec in typicke_obce.items():
    data = priprav_data_pro_tabulku(df_leto, df_podzim, obec)
    for kat, hodnoty in data.items():
        tabulka_data.append([nazev, kat] + hodnoty)  # Přidání rozdílu den - noc pro každou kategorii

# Vytvoření DataFrame pro tabulku
columns = ["Obec", "Kategorie", "Léto (den - noc)", "Podzim (den - noc)"]
df_tabulka = pd.DataFrame(tabulka_data, columns=columns)

# Uložení tabulky do Excelu
output_file = r"C:\Users\vojtt\OneDrive\Plocha\Vystupy\Tabulka_rozdilu_den_noc.xlsx"
df_tabulka.to_excel(output_file, index=False)

print(f"Tabulka byla úspěšně uložena do souboru: {output_file}")

# skript byl optimalizován pomocí ChatGPT 4.0
