import pandas as pd

# Cesty ke vstupním datům
file_katuze = "C:/Škola/BAK/DATA/PROCESSED/Cr_Katuze_VSECHNY_OBDOBI.xlsx"
file_obce = "C:/Škola/BAK/DATA/PROCESSED/CR_Obce_VSECHNY_OBDOBI.xlsx"

# Zahrnutá období
obdobi_list = {
    "20220723": "CR_obce_20220723_20220819_Merge",
    "20221010": "CR_obce_20221010_20221106_Merge",
}

obdobi_list_katuze = {
    "20220723": "CR_katuze_20220723_20220819_Mer",
    "20221010": "CR_katuze_20221010_20221106_Mer",
}

# Kategorie osob a prefixy
categories = {
    "Rezid": "Rezid_d",
    "Dojizd": "PracSkolDoj_d",
    "Navstiv": "Navst_d",
}

# Pracovní dny a víkend
workdays = [f"d{i}_" for i in range(1, 6)]
weekend = ["d6_", "d7_"]

# Funkce pro zpracování

def process_data(file_path, obdobi_dict):
    xls = pd.ExcelFile(file_path)
    all_results = []

    for obdobi, sheet in obdobi_dict.items():
        df = xls.parse(sheet)
        result = df[["KOD", "NAZEV"]].copy()

        for category, prefix in categories.items():
            wd_cols = [col for col in df.columns if col.startswith(prefix) and any(day in col for day in workdays)]
            we_cols = [col for col in df.columns if col.startswith(prefix) and any(day in col for day in weekend)]

            result[f"{category}_wd_{obdobi}"] = df[wd_cols].mean(axis=1).fillna(0).round(2)
            result[f"{category}_we_{obdobi}"] = df[we_cols].mean(axis=1).fillna(0).round(2)

        # Celkový počet osob
        result[f"Total_wd_{obdobi}"] = result[[f"{cat}_wd_{obdobi}" for cat in categories]].sum(axis=1)
        result[f"Total_we_{obdobi}"] = result[[f"{cat}_we_{obdobi}" for cat in categories]].sum(axis=1)

        # Relativní hodnoty
        for category in categories:
            result[f"{category}_wd_rel_{obdobi}"] = (result[f"{category}_wd_{obdobi}"] / result[f"Total_wd_{obdobi}"]).fillna(0).round(3)
            result[f"{category}_we_rel_{obdobi}"] = (result[f"{category}_we_{obdobi}"] / result[f"Total_we_{obdobi}"]).fillna(0).round(3)

        all_results.append(result)

    return all_results

# Zpracování
obce_data = process_data(file_obce, obdobi_list)
katuze_data = process_data(file_katuze, obdobi_list_katuze)

# Uložení výsledků
obce_output_files = [
    f"C:/Škola/BAK/DATA/PROCESSED/Typologie_Obce_{key}.xlsx" for key in obdobi_list.keys()
]
katuze_output_files = [
    f"C:/Škola/BAK/DATA/PROCESSED/Typologie_Katuze_{key}.xlsx" for key in obdobi_list_katuze.keys()
]

for df, path in zip(obce_data, obce_output_files):
    df.to_excel(path, index=False, engine="openpyxl")

for df, path in zip(katuze_data, katuze_output_files):
    df.to_excel(path, index=False, engine="openpyxl")

print("Zpracování dokončeno. Výsledky uloženy pro léto a podzim 2022.")

#skript byl optimalizován pomocí ChatGPT 4.0
