import pandas as pd
import re

# Cesta k Vodafone datům
cesta_vodafone = r"C:\Škola\BAK\AnalytickaCast\Kamdojizdime\PripavaDat\3.SeskupeniExcel\3.VodafoneData2022Leto.xlsx"

# Načtení dat
vodafone = pd.read_excel(cesta_vodafone)

# Výběr sloupců podle vzorů
celk_poc_os_cols = [col for col in vodafone.columns if col.startswith("CelkPocOs")]
navst_cols = [col for col in vodafone.columns if col.startswith("Navst")]
dojizd_cols = [col for col in vodafone.columns if col.startswith("PracSkolDoj")]
rezid_cols = [col for col in vodafone.columns if col.startswith("Rezid")]

# Rozbalení jednotlivých kategorií
celk_poc_os_long = vodafone.melt(id_vars=["KOD", "NAZEV"], value_vars=celk_poc_os_cols,
                                 var_name="DenCas", value_name="Celkový počet osob")
navst_long = vodafone.melt(id_vars=["KOD", "NAZEV"], value_vars=navst_cols,
                           var_name="DenCas", value_name="Návštěvníci")
dojizd_long = vodafone.melt(id_vars=["KOD", "NAZEV"], value_vars=dojizd_cols,
                            var_name="DenCas", value_name="Dojíždějící")
rezid_long = vodafone.melt(id_vars=["KOD", "NAZEV"], value_vars=rezid_cols,
                           var_name="DenCas", value_name="Rezidenti")

# Spojení všech kategorií do jedné tabulky
merged = celk_poc_os_long.copy()
merged["Návštěvníci"] = navst_long["Návštěvníci"]
merged["Dojíždějící"] = dojizd_long["Dojíždějící"]
merged["Rezidenti"] = rezid_long["Rezidenti"]

# Rozdělení sloupce DenCas na den a hodinu
def rozdel_den_hodinu(den_cas):
    match = re.match(r".*_d(\d+)_(\d+)_h", den_cas)
    if match:
        den = int(match.group(1))
        hodina = int(match.group(2))
        return den, hodina
    else:
        return None, None

merged[["Den", "Hodina"]] = merged["DenCas"].apply(lambda x: pd.Series(rozdel_den_hodinu(x)))

# Převod dne a hodiny na text
map_dny = {1: "pondělí", 2: "úterý", 3: "středa", 4: "čtvrtek", 5: "pátek", 6: "sobota", 7: "neděle"}

merged["Den v týdnu"] = merged["Den"].map(map_dny)
merged["Časový interval"] = merged["Hodina"].apply(lambda h: f"{str(h).zfill(2)}:00 - {str((h+1)%24).zfill(2)}:00")

# Výběr potřebných sloupců
vodafone_final = merged[["KOD", "NAZEV", "Den v týdnu", "Časový interval",
                         "Celkový počet osob", "Rezidenti", "Dojíždějící", "Návštěvníci"]].copy()

# Převod názvu sloupce
vodafone_final.rename(columns={"KOD": "Kod_obec"}, inplace=True)

# Uložení
output_path = r"C:\Škola\BAK\AnalytickaCast\Kamdojizdime\PripavaDat\VodafoneDataLongFormat_All.xlsx"
vodafone_final.to_excel(output_path, index=False)

print("Vodafone data (všechny kategorie) rozbalena do long formátu a uložena jako VodafoneDataLongFormat_All.xlsx")

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