
Введение
В рамках данного проекта был проведён анализ датасета, содержащего описательные и количественные характеристики различных видов цветковых растений. Данные включают информацию о высоте растений, продолжительности их жизни, среднем количестве лепестков, климатических условиях произрастания, а также сферах практического применения (декоративное, парфюмерное и медицинское).
Цель проекта — выявить визуальные и количественные различия между цветами, произрастающими в разных климатических зонах, а также проанализировать взаимосвязи между их морфологическими характеристиками.
Источник данных
В качестве источника данных был использован CSV-датасет flowers.csv, содержащий информацию о 72 видах цветов. Датасет включает как категориальные признаки (название, климат, цвет, регион происхождения), так и числовые характеристики, представленные в виде диапазонов значений.
Подготовка и обработка данных
На этапе подготовки данных была проведена предварительная проверка структуры таблицы и типов данных. Числовые характеристики, представленные в виде диапазонов (например, высота растения или количество лепестков), были преобразованы в усреднённые значения. Это позволило сохранить интерпретационную точность и использовать данные для визуального анализа.
Значения, не поддающиеся количественной интерпретации (например, обозначенные как Variable), были обработаны как пропущенные данные и исключены из соответствующих визуализаций.
Также была выполнена нормализация категориального признака climate, так как в датасете присутствовали вариации в наименованиях климатических зон.
Визуальный стиль
Для визуализации был выбран светлый ботанический стиль, ассоциирующийся с научными иллюстрациями и природными атласами. Визуальный стиль включает приглушённую природную цветовую палитру, аккуратную типографику и единые параметры оформления графиков. Все стилистические решения реализованы программно, без постобработки изображений.
Анализ и визуализация данных
- Средняя высота цветов по климату
На первом графике показана средняя высота растений в зависимости от климатических условий. Результаты демонстрируют, что наиболее высокие растения характерны для пустынных и тропических регионов, тогда как виды, произрастающие в холодных климатах, имеют значительно меньшую среднюю высоту.
Это может быть связано с адаптацией растений к условиям окружающей среды и доступности ресурсов.
- Связь между высотой и продолжительностью жизни
Scatter-график позволяет оценить взаимосвязь между средней высотой растения и его продолжительностью жизни. На графике не наблюдается строгой линейной зависимости, однако можно отметить тенденцию, при которой более долговечные растения чаще имеют средние или небольшие размеры.
- Распределение количества лепестков по видам
Boxplot демонстрирует распределение среднего количества лепестков для разных видов цветов. Некоторые виды характеризуются узким диапазоном значений, в то время как у других наблюдается высокая вариативность, что указывает на разнообразие морфологических форм внутри одного вида.
- Использование цветов в различных сферах
Отдельный график посвящён анализу практического применения цветов. Большинство представленных видов используются в декоративных целях, тогда как меньшая часть применяется в парфюмерии и медицине. Это подчёркивает доминирующую роль декоративной функции в использовании цветковых растений.
- Распределение количества лепестков
Гистограмма позволяет оценить общую структуру распределения среднего количества лепестков. Основная масса видов сосредоточена в диапазоне от малого до среднего количества лепестков, в то время как экстремальные значения встречаются значительно реже.
Итоговые графики
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import numpy as np
Общие настройки визуального стиля
plt.rcParams.update ({ figure.figsize (10, 6), figure.facecolor #F1F6F1, axes.facecolor #F1F6F1, axes.titlesize 20, axes.labelsize 13, xtick.labelsize 11, ytick.labelsize 11, axes.grid True, grid.alpha 0.2, font.family Playfair Display, axes.edgecolor #4F6F52, axes.linewidth 1.2 })
sns.set_style (whitegrid)
Основная цветовая палитра проекта
BOTANICAL_PALETTE = [
4F6F52,
зелёныйC75B7A,
приглушённый розовыйE9C46A,
тёплый жёлтый8FAE8E
оливковый ]sns.set_palette (BOTANICAL_PALETTE)
Загрузка данных
df = pd.read_csv (flowers.csv)
Фолбэк-шрифт на случай, если Playfair не установлен
plt.rcParams[font.family] = [DejaVu Serif]
Преобразование диапазонов в числовые значения
def range_to_mean (value) if isinstance (value, str) value = value.strip ()
# Нечисловые значения считаем пропущенными
if value.lower () == variable
return np.nan
# Диапазон вида 20-50
if — in value
a, b = value.split (-)
return (float (a) \+ float (b)) 2
# Одиночное число
try
return float (value)
except
return np.nan
return np.nan
Приводим основные характеристики к числовому виду
df[height_mean] = df[height (cm)].apply (range_to_mean) df[longevity_mean] = df[longevity (years)].apply (range_to_mean) df[petals_mean] = df[average number of petals].apply (range_to_mean)
Приведение климатических категорий к единому виду
df[climate_clean] = ( df[climate] .str.lower () .str.strip () .str.replace (,) )
df[climate_clean] = df[climate_clean].replace ({ cold, temperate cold, temperatetotropical temperate to tropical, tropicaltotemperate tropical to temperate })
Средняя высота цветов по климату
avg_height_by_climate = df.groupby (climate_clean)[height_mean].mean ()
plt.figure () avg_height_by_climate.plot ( kind=bar, color=BOTANICAL_PALETTE[0] ) plt.xlabel (Climate) plt.ylabel (Average Height (cm)) plt.title (Average Flower Height by Climate) plt.tight_layout () plt.show ()
Связь высоты и продолжительности жизни
plt.figure () plt.scatter ( df[height_mean], df[longevity_mean], color=BOTANICAL_PALETTE[1], alpha=0.7, edgecolors=white, linewidths=0.5 ) plt.xlabel (Average Height (cm)) plt.ylabel (Longevity (years)) plt.title (Relationship Between Flower Height and Longevity) plt.tight_layout () plt.show ()
Количество лепестков у разных видов
plt.figure (figsize=(12, 6)) sns.boxplot ( x=name, y=petals_mean, data=df, linewidth=1, fliersize=3 ) plt.xticks (rotation=45, ha=right) plt.xlabel (Flower Type) plt.ylabel (Average Number of Petals) plt.title (Distribution of Petal Count by Flower Type) plt.tight_layout () plt.show ()
Использование цветов в разных сферах
usage = df[[cut flowers, perfumes, medicine]].sum ()
plt.figure () usage.plot ( kind=bar, color=BOTANICAL_PALETTE[3] ) plt.xlabel (Usage Type) plt.ylabel (Number of Flower Species) plt.title (Flower Usage in Different Industries) plt.tight_layout () plt.show ()
Распределение количества лепестков
plt.figure () plt.hist ( df[petals_mean].dropna (), bins=20, color=BOTANICAL_PALETTE[2], edgecolor=white ) plt.xlabel (Average Number of Petals) plt.ylabel (Number of Flower Species) plt.title (Distribution of Average Petal Count) plt.tight_layout () plt.show ()
Используемые методы
В ходе проекта были применены следующие методы анализа данных:
описательная статистика
группировка данных (groupby)
визуальное сравнение распределений
scatter-анализ
обработка пропущенных и интервальных значений
Для анализа и визуализации использовались библиотеки Pandas, Matplotlib и Seaborn.
Заключение
В результате анализа были выявлены характерные различия между цветковыми растениями, произрастающими в разных климатических условиях. Визуализация данных позволила наглядно представить морфологические особенности растений и их практическое применение.
Проект демонстрирует, как даже относительно небольшой датасет может быть использован для получения осмысленных выводов при грамотной подготовке данных и визуальном анализе.
Использование ИИ
В рамках проекта применялась генеративная модель ChatGPT (OpenAI) для помощи в структурировании проекта, формулировке аналитических выводов и оптимизации визуального оформления графиков. ИИ использовался как вспомогательный инструмент и не заменял самостоятельный анализ данных.



