import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Načtení datového souboru
file_path = r"C:\Škola\BAK\DATA\PROCESSED\CR_Obce_VSECHNY_OBDOBI.xlsx"

# Načtení příslušných listů obsahujících data pro léto 2022 a podzim 2022
summer_data = pd.read_excel(file_path, sheet_name="CR_obce_20220723_20220819_Merge")
autumn_data = pd.read_excel(file_path, sheet_name="CR_obce_20221010_20221106_Merge")

# Výběr dat pouze pro obec Šumperk
sumperk_summer = summer_data[summer_data["NAZEV"] == "Šumperk"]
sumperk_autumn = autumn_data[autumn_data["NAZEV"] == "Šumperk"]

# Příprava tabulky pro výpočet relativních změn (v %)
diff_data = pd.DataFrame(index=range(24), columns=[str(i) for i in range(1, 8)])

# Výpočet procentuálních rozdílů mezi létem a podzimem
for day in range(1, 8):  # 1 = pondělí, ..., 7 = neděle
    for hour in range(24):  # 0-23 hodin
        summer_col = f"Rezid_d{day}_{hour}_h"
        autumn_col = f"Rezid_d{day}_{hour}_h"

        if summer_col in sumperk_summer.columns and autumn_col in sumperk_autumn.columns:
            summer_val = sumperk_summer[summer_col].values[0]
            autumn_val = sumperk_autumn[autumn_col].values[0]

            if summer_val > 0:
                # Výpočet relativní změny v procentech
                diff_data.at[hour, str(day)] = ((autumn_val - summer_val) / summer_val) * 100
            else:
                diff_data.at[hour, str(day)] = None  # Pokud není žádná hodnota v létě

# Vytvoření heatmapy pro vizualizaci relativních změn
fig, ax = plt.subplots(figsize=(10, 8))

heatmap = sns.heatmap(
    diff_data.astype(float),
    annot=True,
    fmt=".1f",
    cmap="coolwarm",
    center=0,  # Střední hodnota barevné škály je 0 %
    cbar_kws={"label": "Procentuální změna rezidentů"},
    annot_kws={"size": 11},
    ax=ax
)

# Nastavení názvů grafu a os
ax.set_title(
    "RELATIVNÍ ZMĚNY REZIDENTŮ V ŠUMPERKU (PODZIM OPROTI LÉTU)\n"
    "Léto: 23.07.2022–19.08.2022, Podzim: 10.10.2022–06.11.2022",
    fontsize=16,
    weight="bold"
)
ax.set_xlabel("Den v týdnu", fontsize=14)
ax.set_ylabel("Hodina", fontsize=14)

# Zvýšení velikosti popisků legendy (barevné škály)
cbar = ax.collections[0].colorbar
cbar.ax.tick_params(labelsize=14)
cbar.set_label("Procentuální změna rezidentů", fontsize=14)

# Úprava rozložení grafu
plt.tight_layout()

# Zobrazení grafu
plt.show()

# Skript byl optimalizován pomocí nástroje ChatGPT 4.0
