По верхам посмотрел:
0) Entry-point-а в виде main.py в проект просто нет. Как запустить? Я чо, чтоб запустить твой проект, должен все файлики посмотреть?
1) Однотипные константы в Enum-ы собирай (вот эти, например).
2) Вот это жуть. Путь до проекта через pathlib доставай. Хардкодить пути вообще никогда нельзя.
3) Кириллические символы убирай. Всё на латинице. И названия спрайтов тоже.
4) data = [] — не константа, а глобал. Никогда не используй глобалы. (
@advice17 — там хорошо приведены аргументы). Что она делает в константах — непонятно.
5) Именование переменных не очень. Что такое quantity_fac — непонятно без думания и прыгания по коду.
6) Юзай тайпхинты. Передаешь какой-то плохо заименованный df в build_a_graph — ваще непонятно что происходит.
7) В bacanimal: мега-жирный класс. Нехорошо. Функции огромные и непонятно что делающие. Функция — название из глагола+опционального_существительного. Функция длиннее 15 строк — плохая функция (чаще всего). Функция, выполняющая больше 1 примитивной задачи — плохая функция. У тебя же функции — отдельные сущности.
8) В README должен быть гайдлайн по установке. Нет requirements.txt.
9) Не соблюден пеп почти везде.
10) ... кто-нибудь может принять эстафету и продолжить. Для начала хватит =)