

Логотип Покемонов
На просторах Kaggle.com я наткнулась на датасет о покемонах, в котором были представлены абсолютно все представители вселенной с первого по восьмой сезон шоу. В таблице покемоны были рассортированы по своему типу, уровню здоровья, по силе атаки и так далее. Я нашла этот материал очень забавным для анализа, и так родился этот проект.

Цветовая палитра
Я решила далеко не идти и вдохновилась цветами логотипа и главных покемонов. Важно было сохранить задорность первоисточника, но оформить графики сдержанно, чтобы они легко читались.
Облако слов
Для сущей показательности я сделала облако слов, состоящее из всех возможных типов покемонов. Такой график не особо информативный, но динамичный и показывает широкую вариативность.

Облако слов

Фрагмент кода
С помощью types я объединила типы покемонов из двух колонок в один список. Далее я посчитала, сколько раз каждый вид встречается в данных, используя Counter. Types_extended это список, который повторяет каждый тип столько раз, сколько он встречается в данных, а text объединяет всё в одну строку, разделенную пробелами, чтобы передать её в облако слов.
Столбчатая диаграмма
Следующий график интереснее: здесь показан уровень здоровья покемона в зависимости от его типа. Судя по нему, самыми слабыми являются покемоны-насекомые, растительные и электрические.
Столбчатая диаграмма
Фрагмент кода
Для создания этого графика я использовала функцию sns.barplot, заранее вызвав библиотеку seaborn. Она оптимизирует и упрощает создание такого рода визуализаций.
Диаграмма рассеяния
С помощью этого графика была выявлена зависимость атаки от защиты каждого вида покемонов. Очень важная информация для тренеров покемонов.
Диаграмма рассеяния
Фрагмент кода
С помощью zip (df['attack'], df['defense'], df['type1']) я объединяю значения атаки, защиты и типа покемонов в кортежи, далее создаю точечный график через plt.scatter, где x — это значение атаки, y — это значение защиты, color — это цвет точки, соответствующий типу покемона, alpha=0.5 отвечает за прозрачность точек, а label — метка для легенды. В итоге, каждая точка на графике представляет покемона, её положение определяется атакой и защитой, а цвет — типом.
Круговая диаграмма

Во вселенной есть особенные «легендарные» покемоны, которых очень тяжело встретить, не то что поймать и тренировать. Из практически миллиона известных поклонов к «легендарным» относятся лишь 11 процентов.
Фрагмент кода
Используя функцию value_counts () я подсчитываю количество уникальных значений в столбце. В случае этой диаграммы — количество легендарных и нелегендарных покемонов.
Линейный график
По последнему графику можно проследить, как изменялись средние значения атаки/защиты на промежутке восьми поколений. Можно заметить, что только у покемонов второго поколения среднее значение защиты чуть превышало атаку.
Линейный график
Сначала с помощью df.groupby ('generation') я группирую данные по столбцу generation (поколение покемонов), потом, используя [['attack', 'defense']], выбираю столбцы attack (атака) и defense (защита) для анализа. Затем метод .mean () вычисляет средние значения атаки и защиты для каждого поколения.
Датасет и блокнот https://disk.yandex.ru/d/1eXijTY8pOf0VQ
Использование генеративных моделей
Обложку проекта я сгенерировала на платформе Recraft.ai по этому промту:
«A realistic photograph of a human hand holding a real Pokéball, the hand is centered in the composition with the palm facing up, showing the Pokéball to the camera. The background is natural but subtly blurred, with the focus on the hand and Pokéball. The image is captured in high detail, with the hand and Pokéball occupying the majority of the frame.»