Я выбрал для визуализации данные о популяции пингвинов на трех маленьких островах в Антарктике, который я нашел на сайте 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 ()

Затем я сделал диаграмму рассеяния, показывающую корреляцию между весом пингвина и длиной его крыла. Это пример изучающего формата визуализации данных.
Код:
plt.scatter (df['body_mass_g'], df['flipper_length_mm'], color=['purple']) plt.title ('Корреляция веса и длины крыла') plt.xlabel ('Вес, г') plt.ylabel ('Длина крыла, мм')

Далее я сделал круговую диаграмму, показывающую распределение видов пингвинов по трем островам в процентах. Я не сразу понял как поменять цвета в этом виде диаграмм, но нашел ответ на сайте для программистов 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)
И последняя диаграмма что я сделал — 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 ('вид и пол')



