Original size 1040x1600

Анализ дружелюбности пород собак

PROTECT STATUS: not protected

Описание проекта

Я выбрала датасет про породы собак в формате CSV. В нём есть названия пород (Breed) и текстовое описание их характера в виде списка качеств (Character Traits). Эти данные удобны тем, что их можно обработать в Pandas и превратить текстовые признаки в измеряемые показатели.

Мне было интересно анализировать именно этот датасет, потому что тема «характер пород» близка и полезна людям, а ещё здесь есть задача «перевода» текста в числа: по спискам traits можно посчитать условную дружелюбность/недружелюбность и сравнить породы между собой. Это даёт практическую ценность: видно, какие качества чаще всего встречаются и как распределяются оценки по породам.

Для визуализации я выбрала несколько типов графиков, чтобы показать данные с разных сторон: столбчатые диаграммы для топ-5 самых дружелюбных и недружелюбных пород (наглядное сравнение лидеров), гистограмму для распределения показателя по всем породам (общая картина), boxplot чтобы показать медиану и разброс, и точечную диаграмму (scatter) чтобы проверить, влияет ли количество характерных черт в описании на итоговую оценку.

Этапы работы

Импортирую библиотеки для анализа данных (pandas, numpy) и построения графиков (matplotlib), плюс re  для обработки строковых данных.

С помощью Adobe Color создаю 3  фирменных цвета проекта (палитра), чтобы все графики были в одном стиле.

0
  1. Загружаю CSV в таблицу df, удаляю дубликаты и проверяю размер датасета через df.shape, чтобы убедиться, что данные прочитались корректно.
  2. Создаю функцию to_traits_list (), которая очищает поле Character Traits: приводит к lowercase, делит строку по запятым, убирает пробелы и удаляет пустые значения/\N.
  3. Применяю очистку к столбцу Character Traits и создаю: • traits_list  — список traits для каждой породы • traits_count  — количество traits у породы (длина списка)
  4. Задаю список «friendly» -traits (словарь) и считаю метрики: • friendly_score  — сколько friendly-traits есть у породы • friendly_ratio  — доля friendly-traits среди всех traits (friendly_score  / traits_count) для сравнения пород в одной шкале 0.1
Original size 545x103

создаю таблицу valid для анализа: оставляю только строки, где friendly_ratio посчитан, и фильтрую породы с слишком короткими описаниями (traits_count >= 5), чтобы рейтинг был устойчивее.

0
  1. Формирую таблицу top5  — топ-5 пород с максимальным friendly_ratio (и доп. сортировкой по score/count), чтобы получить список самых «friendly» по описанию датасета.

  2. Формирую таблицу bottom5  — топ-5 пород с минимальным friendly_ratio, чтобы получить список наименее „friendly» по описанию датасета.

  3. Настраиваю единый стиль графиков через plt.rcParams (размер, фон, сетка, шрифты) и создаю функцию style (ax), которая приводит оси/границы/сетку к единому виду

Самые распространённые черты характера пород собак

Собираю все черты (traits) из traits_list, считаю частоты и строю горизонтальную диаграмму Top-12 самых частых черт характера.

Original size 1050x332

График показывает, какие черты чаще всего встречаются в описаниях пород в датасете. Это даёт контекст и «фон» для дальнейшего анализа дружелюбности.

Original size 1189x590

Распределение показателя дружелюбности

Строю гистограмму распределения friendly_ratio по всем породам и добавляю линию среднего значения.

Original size 937x306

График показывает, как распределяется «доля friendly-traits» среди пород (где находится большинство значений и есть ли крайности). Линия среднего помогает увидеть типичное значение метрики.

Original size 1189x590

Топ-5 самых дружелюбных пород собак по данным датасета

Сортирую top5 для красивого порядка и строю barh-график Top-5 самых дружелюбных пород по friendly_ratio, добавляю подписи чисел на столбцы.

Original size 990x336

Получаем итоговый рейтинг лидеров по friendly_ratio. Он визуально объясняет, какие породы имеют максимальную долю friendly-traits в тексте датасета.

Original size 1188x590

Топ-5 наименее дружелюбных пород собак по данным датасета

Считаю отдельную метрику «unfriendly/guard profile» на основе набора traits (например protective/alert/independent/strong/…). Создаю unfriendly_score, unfriendly_ratio, фильтрую данные, выбираю Top-5 по unfriendly_ratio и строю barh-график.

0

Этот график показывает породы, у которых выше доля характерных черт из набора «guard/defensive profile» (по данным из Character Traits). Это объясняющий график: он выделяет Top-5 по выбранной метрике.

Original size 1188x590

Считаем описательную статистику для метрики в valid (беру friendly_ratio, а если его нет — unfriendly_ratio): mean, median, std, квартили Q1/Q3 и IQR.

Original size 1255x349

Итог

Цель проекта была достигнута: по метрике friendly_ratio (доля «friendly» -traits в описании породы) были чётко выделены Top-5 самых дружелюбных и Top-5 наименее дружелюбных пород на основе данных выбранного датасета. Изучающие графики добавили „картину мира“ — стало видно, какие черты характера чаще всего встречаются в описаниях и как в целом распределяется дружелюбность по выборке: значения friendly_ratio не одинаковые, а заметно разнятся между породами. Объясняющие графики превратили это в понятный результат. Конечно, выводы относятся к текстовым описаниям характерных черт внутри набора данных и лучше всего подходят для сравнения пород в рамках этого датасета, а не как „абсолютная истина“ о поведении собак :)

Original size 1179x770

Иллюстрация и обложка проекта созданы с помощью ChatGPT Plus.

Описание применения генеративной модели

ChatGPT Plus — использовался для получения рекомендаций по работе с кодом. Для создания иллюстрации и обложки, а также для помощи в редактировании текстовой части проекта.

Adobe Color — применялся для формирования цветовой палитры.

Анализ дружелюбности пород собак
Project created at 16.01.2026
Loading...
We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more