Загрузка данных


from collections import Counter

import pandas as pd


def aggregate_excel_files_by_mode(dataframes):
    """
    Агрегирует несколько фреймов данных по модальным оценкам.
    Если мода не уникальна, используется нейтральное значение (1).
    """
    # Объединяем все данные в один big-dataframe
    combined_dfs = pd.concat(dataframes, axis=0, ignore_index=True)

    # Будем хранить итоговую таблицу
    result_rows = []

    # Проход по каждому столбцу отдельно
    for col in combined_dfs.columns:
        # Беру значения только там, где есть данные
        valid_values = combined_dfs[col].dropna()

        # Подсчет частот встречаемости значений
        value_counts = Counter(valid_values)

        # Нахожу максимальную частоту появления
        max_freq = max(value_counts.values())

        # Проверяю, уникальная ли мода
        unique_modes = [val for val, count in value_counts.items() if count == max_freq]

        # Если мода не единственная, ставим нейтральное значение (1)
        if len(unique_modes) > 1:
            result_rows.append((col, 1))  # Нейтральное значение
        else:
            result_rows.append((col, unique_modes[0]))  # Уникальная мода

    # Формирование итогового DataFrame
    result_df = pd.DataFrame(result_rows, columns=["Column", "Value"])
    result_df.set_index("Column", inplace=True)

    return result_df