
Описание
База данных с рейтингами кофе является подходящей основой для проекта по анализу данных, так как содержит разнообразные числовые и категориальные переменные, позволяющие строить модели и делать выводы о зависимости между характеристиками кофе. Данные не являются временными рядами, включают как минимум один категориальный признак (например, страна происхождения или уровень обжарки), а также позволяют выделить целевую переменную, такую как общий балл (total_score), и предикторы — цену, вкусовые параметры и другие характеристики.
Тема является актуальной, поскольку индустрия specialty кофе активно развивается, а производители и потребители всё чаще ориентируются на данные о вкусе, происхождении и методах обработки. Анализ таких данных позволяет выявить предпочтения, тренды и ценовые закономерности, что важно как для бизнеса, так и для более осознанного потребления.
Этапы работы:
1. Выбор данных 2. Загрузка файла CSV со статистикой в среду программирования 3. Изучение и работа с данными 4. Визуализация статистики с помощью различных типов графиков
Ход работы
Импорт трёх ключевых библиотек для анализа и визуализации данных: pandas для работы с табличными данными, matplotlib.pyplot для построения графиков и seaborn для создания статистических и более сложных визуализаций поверх matplotlib, что подготавливает среду для эффективного анализа и наглядного представления данных

Фильтрация и сортировка
Фильтрация с одним условием.
Из таблицы data выбираются только строки, где значение в столбце 'price_per_ounce' больше 100, результат сохраняется в переменную filtered_single.
Сортировка отфильтрованного DataFrame по столбцу 'price_per_ounce' в порядке убывания, результат сохраняется в переменную sorted_single
Визуализация: фигура размером 10×6 дюймов, строится горизонтальная столбчатая диаграмма с помощью seaborn, отображающая топ-10 сортов кофе из отсортированного DataFrame по цене за унцию, где ось Y — названия кофе, ось X — цена, используется цветовая палитра 'mako'.
Фильтрация по нескольким условиям
Фильтрация DataFrame с использованием нескольких условий: выбираются строки, где значение 'total_score' больше 90, 'roast_level' равно 'Medium' и 'price_per_ounce' меньше 70.
Сортировка отфильтрованного DataFrame по столбцу 'price_per_ounce' в порядке возрастания с помощью метода sort_values (), результат сохраняется в переменную sorted_multi, что упорядочивает данные по цене за унцию от самой низкой к высокой.
Создаётся фигура размером 10×6 дюймов, строится точечная диаграмма (scatter plot) с помощью seaborn на данных sorted_multi, где по оси X откладывается цена за унцию, по оси Y — общий балл кофе.
Новые признаки
Создаётся новый столбец 'score_category' в DataFrame data на основе значений столбца 'total_score', применяя анонимную функцию (lambda) к каждому значению. Если 'total_score' больше 95, то присваивается 'Excellent', в противном случае — 'Good'. Этот метод позволяет эффективно категоризировать данные.
И создаётся фигура размером 6×4 дюйма, строится вертикальная столбчатая диаграмма на основе подсчёта уникальных значений в столбце 'score_category' DataFrame data с помощью метода value_counts () и функции plot (kind='bar') из pandas
Определяется функция price_category, которая принимает строку (row) из DataFrame, извлекает значение цены за унцию ('price_per_ounce') и возвращает категорию в зависимости от этого значения: если цена отсутствует (NaN) — возвращает 'Unknown', если меньше 5 — 'Low', если от 5 до 50 включительно — 'Medium', иначе — 'High'. Эта функция предназначена для классификации данных по ценовым категориям.
И применение функции price_category ко всем строкам DataFrame data с помощью метода apply и параметра axis=1, который указывает, что функция применяется по строкам. В результате создаётся новый столбец 'price_category', где для каждой строки вычисляется категория цены на основе значения в столбце 'price_per_ounce'.
Визуализация
Сводные таблицы
Создаётся сводная таблица (pivot table) из DataFrame data, где строки индексируются по странам происхождения кофе ('origin_country'), а для каждой страны вычисляется среднее значение цены за унцию ('price_per_ounce') с помощью функции агрегации mean. Результат сохраняется в переменную pivot1 в виде нового DataFrame, который показывает среднюю цену за унцию кофе по каждой стране. Это упрощает анализ цен по странам происхождения.
Сортировка сводной таблицы pivot1 по среднему значению цены за унцию в порядке убывания и сброс индекса для удобства дальнейшей работы и визуализация.
Создаётся сводная таблица (pivot table) из DataFrame data с использованием двух столбцов в качестве индекса: 'origin_country' и 'roast_level'. Для каждой комбинации этих двух параметров вычисляется среднее значение общего балла ('total_score') с помощью функции агрегации mean. Результат сохраняется в переменную pivot2 в виде DataFrame с многоуровневым индексом, что позволяет анализировать средние оценки кофе по странам происхождения и уровню обжарки одновременно.
Подсчитывается количество записей в DataFrame data для каждой комбинации страны происхождения ('origin_country') и уровня обжарки ('roast_level') с помощью groupby и size (), результат преобразуется в DataFrame с колонками 'origin_country', 'roast_level' и 'count' через reset_index ().
Затем выбираются только те комбинации, у которых количество записей не меньше трёх, и создаётся новый DataFrame filtered_data, объединяющий исходные данные с этими частыми комбинациями по столбцам 'origin_country' и 'roast_level' с помощью merge. На основе filtered_data формируется сводная таблица, где строки — страны происхождения, столбцы — уровни обжарки, а значения — средние общие баллы ('total_score') для каждой пары. Это позволяет анализировать средние оценки кофе по часто встречающимся сочетаниям страны и обжарки, исключая редкие комбинации.
Визуализация
Создаётся сводная таблица из DataFrame data, где строки индексируются по странам происхождения кофе ('origin_country'), а для каждого индекса вычисляются средние значения двух столбцов: общего балла ('total_score') и цены за унцию ('price_per_ounce') с помощью функции агрегации mean. Затем результат сбрасывается в обычный DataFrame с помощью reset_index (). После этого таблица сортируется по среднему общему баллу в порядке убывания, и выводятся первые 10 строк — топ-10 стран с наивысшими средними оценками кофе. Это позволяет одновременно сравнить качество и цену кофе по странам происхождения, выделяя лучшие из них по оценке.
Вывод
В ходе работы с данными о кофе были освоены ключевые этапы анализа и визуализации с помощью библиотек pandas, matplotlib и seaborn. Сначала данные фильтровались по различным условиям (например, по цене или оценке), затем сортировались для упорядочивания информации. Для наглядного представления использовались разные типы графиков: горизонтальные и вертикальные столбчатые диаграммы, точечные графики, что помогало выявлять закономерности и сравнивать параметры кофе по разным категориям.
Были применены методы создания новых столбцов с категоризацией данных через функции и lambda-выражения, что расширило возможности анализа. Сводные таблицы (pivot tables) позволили агрегировать данные по странам происхождения и уровням обжарки, выявляя средние значения цены и оценок, а также строить более сложные аналитические представления, включая фильтрацию по частоте встречаемости комбинаций.
В итоге, освоение фильтрации, сортировки, категоризации, построения сводных таблиц и визуализации данных обеспечивает комплексный подход к анализу, позволяя эффективно обрабатывать и интерпретировать большие наборы данных, выявлять важные тенденции и принимать обоснованные решения на основе полученных результатов.