Original size 1140x1600

Анализ данных о влиянии кофе на здоровье человека

PROTECT STATUS: not protected
The project is taking part in the competition

О проекте

Кофе давно перестал быть просто напитком «чтобы проснуться». В современном городе он стоит наравне с чаем, но при этом вокруг кофе вырос целый культурный слой: количество кофеен растёт, а стаканчик с альтернативным молоком утром и днём стал почти визуальным символом определённого образа жизни — работы из ноутбука, фриланса, гибкого графика, «инстаграмной» повседневности. Кофе здесь работает одновременно как привычка, как ритуал и как социальный маркер.

На этом фоне я поймала себя на простой вещи: в последнее время я стала пить кофе чаще и заметно увеличила количество чашек в день. Вместе с этим появился вопрос, который звучит очень обыденно, но на мой взгляд явлется довольно исследовательским:

Кто пьёт кофе, в каких странах его употребляют «как воду», и самое важное — как регулярное потребление связано со сном и самочувствием человека?

Я хочу понять не «вредно/полезно» в общем виде, а увидеть паттерны: отличается ли эффект в зависимости от возраста, образа жизни, уровня стресса, физической активности.

Для анализа я взяла датасет Global Coffee Health Dataset с Kaggle: это большой набор на 10 000 подробных записей, который охватывает огромное количество аспектов.

Чтобы визуализации складывались в единый нарратив, я заранее определила набор графиков, каждый из которых отвечает на отдельный вопрос и даёт качественное понимание данных:

1. Линейная диаграмма используется, чтобы показать распределение потребления кофе по возрастным группам. Она позволяет увидеть общую картину: где сосредоточено большинство значений, есть ли пики и насколько заметны «хвосты» — то есть группы, в которых чаще встречается очень высокое потребление. 2. Сложенная линейная диаграмма применяется для визуализации связи между количеством кофеина и показателями сна. В таком формате удобно наблюдать, как меняется сон при росте кофеина и есть ли участки, где зависимость становится более выраженной или, наоборот, сглаживается. 3. Круговая диаграмма используется для сравнения стран по долям в выборке или по вкладу в общий объём потребления кофе (в зависимости от выбранной метрики). Она помогает быстро выделить страны с наибольшим «весом» в данных и обозначить фокус для дальнейшего анализа. 4. Столбчатая диаграмма предназначена для сравнения потребления кофе по профессиям. Этот график удобен для ранжирования категорий и наглядного сопоставления групп, чтобы увидеть, какие профессии связаны с более высоким потреблением и как это может сопоставляться со сном или стрессом. 5. Тепловая карта показывает поведенческий прокси, то есть некоторую зависимость количества чашек в день на количество кофеина в чашке.

Это позволит нам выделить типичные режимы потребления (условно: ради вкуса/потому что модно — много чашек при низком кофеине на чашку; ради бодрости — количество чашек при высокой дозировке), которые затем можно сопоставить с показателями сна и стресса.

Помимо этого я выбрала единую цветовую палитру из четырёх основных цветов. Это позволит нам воспринимать графики как единую систему, а также упрощать восприятие информации.

Original size 1600x429

Пошаговый план работы

Я начала с импорта базовых библиотек (pandas, numpy, matplotlib) и загрузила датасет в Google Colab.

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

Original size 1600x499

Дальше я привела названия колонок к удобному формату: убрала пробелы и дефисы, чтобы к полям можно было стабильно обращаться в коде. Затем с помощью кода я проверила наличие ключевых столбцов (возраст, страна, профессия, чашки, кофеин, сон и т. д.) и вывела результат в консоль. Это помогает не «угадывать», какие поля есть в таблице, и сразу увидеть, готов ли датасет к дальнейшим шагам.

Original size 1600x735

После этого я сделала минимальную очистку:

1. числовые поля перевела в numeric, чтобы избежать ситуаций, когда числа считываются как строки; 2. категориальные поля перевела в category, чтобы группировки работали быстрее и стабильнее; 3. удалила дубликаты строк; 4. убрала строки без ключевых значений (возраст, чашки, кофеин, сон, страна, профессия), потому что без них выбранные графики просто не построятся корректно.

На выходе я получила df2 — базовый «чистый» датафрейм, на котором строится весь проект.

Original size 1600x635

На последнем этапи подготовки я создала несколько вспомогательных признаков, которые упрощают анализ:

1. Age_group — возрастные группы для сравнений; 2.Coffee_bin — уровни потребления по чашкам (если понадобится для дополнительных разрезов); 3.Caffeine_per_cup — «кофеин на чашку» как поведенческий прокси (чтобы отличать режимы потребления).

Отдельно я настроила визуальный стиль в соответсвии с тем, что я указала ранее.

Original size 1600x1224

Визуализация данных

0

Этот график отвечает на самый базовый вопрос: как меняется среднее потребление кофе с возрастом. Я сгруппировала возраст по шагу 5 лет и посчитала среднее число чашек в день для каждого интервала. Вместо столбцов я использовала линию с маркерами, чтобы график читался как плавная зависимость, а точки подчёркивали, что кривая построена по реальным агрегированным значениям.

Из графика можно понять, что до, примерно, 65 лет потребление остаётся почти ровным — в районе 2.4–2.55 чашки в день, без выраженного роста или падения. Самое заметное изменение начинается после 70: линия резко уходит вниз (примерно 2.3 к 70, около 2.05 к 75 и ~1.7 к 80). То есть в этом датасете возраст влияет не «постепенно», а скорее проявляется как спад в старших группах.

0

Здесь я перехожу от «кто сколько пьёт» к вопросу как кофеин соотносится со сном. Я разделила значение Caffeine_mg на 4 квантили (Qtr 1–Qtr 4) и посчитала средние часы сна внутри каждой квантильной группы. Дополнительно я выделила возрастные категории (≤24, 25–34, 35–44, 45+), чтобы увидеть, одинаково ли работает связь «кофеин — сон» в разных возрастах.

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

Так во всех возрастных группах видно единое направление: от Qtr 1 к Qtr 4 средняя длительность сна уменьшается. Разница небольшая, но стабильная: примерно с ~6.9–7.0 часов в первом квартиле до ~6.3–6.4 часов в четвёртом. Возрастные группы при этом отличаются слабее, чем квартиль кофеина: внутри каждого квартиля значения близки между собой, а главный сдвиг задаёт именно уровень кофеина.

0

Круговую диаграмму я использовала как обзорный снимок: из каких стран состоит выборка. Я взяла топ-8 стран по числу наблюдений и объединила остальные в категорию Other, чтобы график не превращался в перегруженную легенду. Такой формат помогает сразу увидеть, какие страны задают основной вес данных и на что стоит обращать внимание при интерпретации результатов.

Вывод по графику: распределение похоже на длинный хвост: категория Other занимает ~58.4%, а отдельные страны из топа дают примерно по ~5% каждая (разброс очень небольшой — около 5.1–5.4%). Это значит, что выборка не «держится» на одной стране (кроме агрегированного Other), а разложена довольно равномерно между множеством стран. Для интерпретации это важно: разрез по странам здесь скорее показывает структуру датасета, чем ярко выраженную географическую доминанту.

0

Этот график отвечает на вопрос кто пьёт больше по профессиональному контексту. Я сгруппировала данные по профессиям и посчитала среднее число чашек в день, оставив топ-15 профессий по числу наблюдений (чтобы сравнение было корректным и читаемым). Затем я отсортировала профессии по среднему значению — так график читается как рейтинг.

Различия между профессиями получились минимальными: почти все значения держатся около ~2.5 чашки в день, а разрыв между крайними столбцами визуально небольшой (порядка нескольких десятых). В рамках этого датасета профессия выглядит не как сильный фактор потребления — по крайней мере, если смотреть именно на среднее число чашек.

0

Прямого поля «зачем пьют кофе» в датасете нет, поэтому я сделала поведенческий прокси: X = чашки в день, Y = кофеин на чашку (Caffeine_per_cup). Тепловая карта показывает, где в данных находится основная концентрация наблюдений, то есть какие режимы потребления встречаются чаще. Перед построением я ограничила экстремальные значения по квантилям (1% и 99%), чтобы редкие выбросы не сломали масштаб и не сделали картинку нечитаемой.

Тут можно заметить «сходимость» по мере роста числа чашек. При низком потреблении (примерно до 1 чашки/день) кофеин на чашку распределён широко — встречаются и более слабые, и более крепкие режимы. А при более высоком потреблении (~3–6 чашек/день) значения сжимаются в узкий коридор около ~94–96 мг на чашку. Это похоже на компенсаторную стратегию: когда чашек становится больше, крепость одной чашки чаще «нормализуется» и перестаёт сильно прыгать.

Заключение

В этом проекте я последовательно посмотрела на кофе как на повседневную практику: кто и как часто его пьёт, и что происходит с базовыми показателями вроде сна.

Сначала я проверила, как потребление связано с возрастом. На графике видно, что до примерно 60–65 лет среднее количество чашек в день почти не меняется и держится на одном уровне. Самая заметная точка сдвига появляется позже: после 70 лет потребление начинает резко снижаться, и именно этот возрастной диапазон задаёт общий перелом линии.

Затем я перешла к вопросу, который был для меня центральным: как кофеин соотносится со сном. Когда выборку делят на квантили по уровню кофеина, во всех возрастных группах проявляется одна и та же динамика: от первого квартиля к четвёртому средняя длительность сна уменьшается. Разница не выглядит экстремальной, но она повторяется стабильно, поэтому воспринимается как устойчивый паттерн внутри данных.

Дальше я проверила профессиональный контекст. Здесь ожидалось, что различия могут быть сильнее, но график показывает почти ровное распределение: средние значения по профессиям очень близки. Это стало отдельным результатом — в рамках этого датасета профессия не объясняет потребление так хорошо, как можно было предположить.

Чтобы понимать, как устроена сама выборка, я добавила страновой разрез. Он показывает, что данные распределены по множеству стран и большая часть наблюдений собрана в категории Other, а топ-страны имеют близкие доли. Это задаёт рамку для интерпретации: страновой фактор здесь важен скорее как контекст, чем как источник резких различий.

Наконец, я попыталась приблизиться к вопросу «зачем пьют кофе» через поведение: совместила количество чашек и кофеин на чашку. Тепловая карта показывает, что при большем числе чашек крепость одной чашки чаще стабилизируется в узком диапазоне. В итоге получается цельная картина: потребление кофе в большинстве возрастов довольно стабильно, но в старших группах снижается; уровень кофеина связан с сокращением сна; а режим потребления чаще выглядит как настроенная стратегия, а не просто случайное увеличение дозы.

Использованные инструменты

Kaggle — источник данных для анализа (табличный CSV-файл). (https://www.kaggle.com/datasets/uom190346a/global-coffee-health-dataset?resource=download)

Google Colab — среда, где я запускала код, работала с ноутбуком и сохраняла графики.

Pandas — загрузка CSV (read_csv), очистка данных (пропуски/дубликаты), приведение типов, группировки (groupby), расчёт средних значений и подготовка таблиц для графиков.

NumPy — числовые операции (квантильные ограничения, бины, расчёт 2D-гистограммы для тепловой карты).

Matplotlib — построение и стилизация всех графиков (палитра, фон, шрифты/подписи, сетка).

Chat GPT 5.2 — для корректировки кодов

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