analysis module

analysis.group_by_category(df: DataFrame, transaction_type: str) Series[исходный код]

Группирует данные по категориям и вычисляет суммарный объем средств.

Функция фильтрует входной DataFrame по указанному типу транзакций (доход или расход) и суммирует значения в столбце „amount“ для каждой уникальной категории.

Параметры:
  • df (pd.DataFrame) – Таблица данных, содержащая столбцы „transaction_type“, „category“ и „amount“.

  • transaction_type (str) – Тип операции для фильтрации (например, „expense“ или „income“).

Результат:

Объект Series, где индексами являются названия категорий, а значениями — общие суммы по каждой категории.

Тип результата:

pd.Series

Пример

>>> # Получение суммы расходов по категориям
>>> expenses_by_cat = group_by_category(df, 'expense')
>>> print(expenses_by_cat['Еда'])
5000.0
analysis.plot_income_expence_over_time(df: DataFrame)[исходный код]

Визуализирует динамику доходов и расходов во времени.

Функция группирует транзакции по датам и типам, вычисляет ежедневные суммы и строит линейный график. Позволяет наглядно сравнить притоки и оттоки денежных средств на временной шкале.

Параметры:

df (pd.DataFrame) – Таблица данных. Должна содержать колонки „date“, „transaction_type“ и „amount“. Колонка „date“ должна иметь тип datetime64.

Примечание

  • Если в определенную дату отсутствует один из типов операций (например, только расходы), функция подставит 0 для корректного отображения графика.

  • Для корректной работы функции рекомендуется предварительно обработать DataFrame функцией transactions_to_df().

Результат:

Функция отображает интерактивное окно с графиком через plt.show().

Тип результата:

None

Исключение:

KeyError – Если в DataFrame отсутствуют необходимые колонки.

analysis.plot_pie_by_category(df: DataFrame, transaction_type: str)[исходный код]

Строит круговую диаграмму распределения финансов по категориям.

Функция агрегирует данные для выбранного типа операций (доходы или расходы) и визуализирует процентное соотношение каждой категории в общем объеме. Если данные для указанного типа отсутствуют, график не строится.

Параметры:
  • df (pd.DataFrame) – Таблица данных, содержащая как минимум колонки „transaction_type“, „category“ и „amount“.

  • transaction_type (str) – Тип операций для отображения: „expense“ (расходы) или „income“ (доходы).

Примечание

  • Функция использует метод plt.show() для отображения графика, что может блокировать выполнение кода в зависимости от настроек бэкенда Matplotlib.

  • Для корректного отображения меток категорий на русском языке убедитесь, что в Matplotlib настроены шрифты с поддержкой кириллицы.

Результат:

Функция отображает интерактивное окно с графиком через plt.show().

Тип результата:

None

analysis.transactions_to_df(transactions: list) DataFrame[исходный код]

Преобразует список объектов транзакций в объект pandas DataFrame.

Функция собирает данные из объектов транзакций и выполняет постобработку: преобразует строковые даты в объекты datetime64, что позволяет в дальнейшем проводить временной анализ (группировку по месяцам, расчет трендов и т.д.).

Параметры:

transactions (list[Transaction]) – Список экземпляров класса Transaction.

Результат:

Таблица данных с колонками, соответствующими полям транзакции. Если список пуст, возвращается пустой DataFrame. Колонки результата: „amount“, „category“, „date“, „description“, „transaction_type“.

Тип результата:

pd.DataFrame

Примечание

Столбец „date“ автоматически конвертируется в формат pandas.Timestamp только в том случае, если DataFrame не пуст.

Пример

>>> transactions = [Transaction(100.0, "Еда", "2026-01-06")]
>>> df = transactions_to_df(transactions)
>>> print(df['date'].dtype)
datetime64[ns]