

Введение
В рамках данного проекта был проведён анализ датасета, содержащего описательные и количественные характеристики различных видов цветковых растений. Данные включают информацию о высоте растений, продолжительности их жизни, среднем количестве лепестков, климатических условиях произрастания, а также сферах практического применения (декоративное, парфюмерное и медицинское).
Цель проекта — выявить визуальные и количественные различия между цветами, произрастающими в разных климатических зонах, а также проанализировать взаимосвязи между их морфологическими характеристиками.
Источник данных
В качестве источника данных был использован CSV-датасет flowers.csv, содержащий информацию о 72 видах цветов. Датасет включает как категориальные признаки (название, климат, цвет, регион происхождения), так и числовые характеристики, представленные в виде диапазонов значений.
Подготовка и обработка данных
На этапе подготовки данных была проведена предварительная проверка структуры таблицы и типов данных. Числовые характеристики, представленные в виде диапазонов (например, высота растения или количество лепестков), были преобразованы в усреднённые значения. Это позволило сохранить интерпретационную точность и использовать данные для визуального анализа.
Значения, не поддающиеся количественной интерпретации (например, обозначенные как Variable), были обработаны как пропущенные данные и исключены из соответствующих визуализаций.
Также была выполнена нормализация категориального признака climate, так как в датасете присутствовали вариации в наименованиях климатических зон.
Визуальный стиль
Для визуализации был выбран светлый ботанический стиль, ассоциирующийся с научными иллюстрациями и природными атласами. Визуальный стиль включает приглушённую природную цветовую палитру, аккуратную типографику и единые параметры оформления графиков. Все стилистические решения реализованы программно, без постобработки изображений.
Анализ и визуализация данных
1. Средняя высота цветов по климату
На первом графике показана средняя высота растений в зависимости от климатических условий. Результаты демонстрируют, что наиболее высокие растения характерны для пустынных и тропических регионов, тогда как виды, произрастающие в холодных климатах, имеют значительно меньшую среднюю высоту.
Это может быть связано с адаптацией растений к условиям окружающей среды и доступности ресурсов.
2. Связь между высотой и продолжительностью жизни
Scatter-график позволяет оценить взаимосвязь между средней высотой растения и его продолжительностью жизни. На графике не наблюдается строгой линейной зависимости, однако можно отметить тенденцию, при которой более долговечные растения чаще имеют средние или небольшие размеры.
3. Распределение количества лепестков по видам
Boxplot демонстрирует распределение среднего количества лепестков для разных видов цветов. Некоторые виды характеризуются узким диапазоном значений, в то время как у других наблюдается высокая вариативность, что указывает на разнообразие морфологических форм внутри одного вида.
4. Использование цветов в различных сферах
Отдельный график посвящён анализу практического применения цветов. Большинство представленных видов используются в декоративных целях, тогда как меньшая часть применяется в парфюмерии и медицине. Это подчёркивает доминирующую роль декоративной функции в использовании цветковых растений.
5. Распределение количества лепестков
Гистограмма позволяет оценить общую структуру распределения среднего количества лепестков. Основная масса видов сосредоточена в диапазоне от малого до среднего количества лепестков, в то время как экстремальные значения встречаются значительно реже.
Итоговые графики
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 = [
sns.set_palette (BOTANICAL_PALETTE)
df = pd.read_csv (flowers.csv)
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) для помощи в структурировании проекта, формулировке аналитических выводов и оптимизации визуального оформления графиков. ИИ использовался как вспомогательный инструмент и не заменял самостоятельный анализ данных.