Original size 1860x2625

Визуализация данных о пингвинах

PROTECT STATUS: not protected

Я выбрал для визуализации данные о популяции пингвинов на трех маленьких островах в Антарктике, который я нашел на сайте kaggle.com. Датасет включает в себя информацию о виде, поле, острове обитания, размерах клюва и крыла 324-х разных пингвинов. Я выбрал этот датасет потому что с детства люблю пингвинов и мне было интересно сделать что-то связанное с ними. В ходе визуализации я использовал гистограммы, круговые диаграммы, диаграммы рассеяния и boxplot.

Сначала я решил сделать гистограмму, показывающую среднюю длины и высоту клюва в зависимости от вида и пола пингвина.

Код:

df = df[df['sex'] ≠ '.'] grouped = df.groupby (['species', 'sex'])[['culmen_depth_mm', 'culmen_length_mm']].mean () grouped

grouped.plot.bar (figsize=(12, 6), color=['green', 'pink']) plt.title ('Средние размеры клюва') plt.xlabel ('Вид, пол') plt.ylabel ('Размер (мм)') plt.xticks (rotation=0) plt.legend ()

Original size 2130x1114

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

Код:

plt.scatter (df['body_mass_g'], df['flipper_length_mm'], color=['purple']) plt.title ('Корреляция веса и длины крыла') plt.xlabel ('Вес, г') plt.ylabel ('Длина крыла, мм')

Original size 1316x916

Далее я сделал круговую диаграмму, показывающую распределение видов пингвинов по трем островам в процентах. Я не сразу понял как поменять цвета в этом виде диаграмм, но нашел ответ на сайте для программистов stackoverflow.com.

Код: cross_tab = pd.crosstab (df['island'], df['species'], normalize='index') * 100 fig, axes = plt.subplots (1, 3, figsize=(15, 5))

for i, island in enumerate (cross_tab.index): sizes_filtered = cross_tab.loc[island][cross_tab.loc[island] > 0]

colors_all = ['silver', 'khaki', 'plum']
colors_filtered = [colors_all[j] for j, is_non_zero in enumerate (cross_tab.loc[island] > 0) if is_non_zero]

axes[i].pie (sizes_filtered, labels=sizes_filtered.index, autopct='%1.1f%%',
            colors=colors_filtered, startangle=90)
axes[i].set_title (f’Остров: {island}\nВсего: {df[df[«island»] == island].shape[0]} пингвинов')

plt.suptitle ('Распределение видов пингвинов по островам (%)', fontsize=16, y=1.05)

Original size 2392x1048

И последняя диаграмма что я сделал — boxplot, показывающий медиану и распределение длины крыла пингвина по виду и полу.

Код:

fig, ax = plt.subplots (figsize=(12, 7))

df.boxplot (column='flipper_length_mm', by=['species', 'sex'], ax=ax, patch_artist=True, boxprops=dict (facecolor='gainsboro', alpha=0.7, lw=1.5), medianprops=dict (color='plum', lw=2), whiskerprops=dict (color='black', lw=1.5) ) plt.suptitle ('') ax.set_title ('Медиана и распределение длины крыла по виду и полу')

ax.set_ylabel ('длина, мм') ax.set_xlabel ('вид и пол')

Original size 2214x1248
Визуализация данных о пингвинах
Project created at 11.02.2026
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