ВВОДНАЯ ЧАСТЬ

Исходный размер 3543x1772

Картина Александра Макса Кестера.

СТАТИСТИКА ДАННЫХ

Для данного исследования была взята следующая статистика — Wings of Wisdom: Deep Dive into Waterfowl Species.

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

Исходный размер 3543x1772

Картина Александра Макса Кестера.

ЦЕННОСТЬ

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

ВИДЫ ИСПОЛЬЗУЕМЫХ ДИАГРАММ

В своём проекте я буду использовать такие виды диаграмм как: - Линейные диаграммы - Гистограммы - Столбчатые диаграммы - Круговые диаграммы - Тепловые карты - Диаграммы рассеяния

МОИ ЭТАПЫ РАБОТЫ

Исходный размер 3543x1772

Картина Александра Макса Кестера.

ОБРАБОТКА ДАННЫХ

Чтобы получить структурированные данные таблицы и с их помощью создавать диаграммы я использую библиотеку Pandas на языке Python. Скачав и использовав программу Anaconda в среде Spider я вывела данные таблицы и создала несколько диаграмм, которые будут описаны ниже.

import pandas as pd

data = { 'id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'name': ['American Black Duck', 'American Coot', 'American Wigeon', 'Barnacle Goose', 'Barrow's Goldeneye', 'Black Scoter', 'Black-bellied Whistling-Duck', 'Blue-winged Teal', 'Brant', 'Bufflehead'], 'type': ['Dabbling Duck', 'Other', 'Dabbling Duck', 'Goose', 'Diving Duck', 'Diving Duck', 'Other', 'Dabbling Duck', 'Goose', 'Diving Duck'], 'latin_name': ['Anas rubripes', 'Fulica americana', 'Mareca americana', 'Branta leucopsis', 'Bucephala islandica', 'Melanitta americana', 'Dendrocygna autumnalis', 'Spatula discors', 'Branta bernicla', 'Bucephala albeola'], 'm_avg_length_inches': [22, 16.2, 20, 27.0, 19.2, 19.7, 19.4, 16, 25, 15], 'f_avg_length_inches': [21, 16.2, 19, 23.5, 17, 18.5, 19, 14, 23, 13], 'm_avg_weight_lbs': [2.7, 1.5, 1.8, 4.03, 2.13, 2.5, 1.8, 1, 3.4, 1.1], 'f_avg_weight_lbs': [2.4, 1.2, 1.6, 3.57, 1.31, 2.2, 1.85, 0.8, 3.1, 0.7], 'life_span_year': ['10-15', '2-3', '5-10', '10-20', '10-15', '10-15', '10-15', '3-5', '5-10', '3-5'], 'egg_avg': [9, 6, 9, 4, 6, 8, 13, 10, 5, 9] }

df = pd.DataFrame(data)

print(df)

id name type latin_name
0 1 American Black Duck Dabbling Duck Anas rubripes
1 2 American Coot Other Fulica americana
2 3 American Wigeon Dabbling Duck Mareca americana
3 4 Barnacle Goose Goose Branta leucopsis
4 5 Barrow's Goldeneye Diving Duck Bucephala islandica
5 6 Black Scoter Diving Duck Melanitta americana
6 7 Black-bellied Whistling-Duck Other Dendrocygna autumnalis
7 8 Blue-winged Teal Dabbling Duck Spatula discors
8 9 Brant Goose Branta bernicla
9 10 Bufflehead Diving Duck Bucephala albeola

m_avg_length_inches f_avg_length_inches m_avg_weight_lbs
0 22.0 21.0 2.70
1 16.2 16.2 1.50
2 20.0 19.0 1.80
3 27.0 23.5 4.03
4 19.2 17.0 2.13
5 19.7 18.5 2.50
6 19.4 19.0 1.80
7 16.0 14.0 1.00
8 25.0 23.0 3.40
9 15.0 13.0 1.10

f_avg_weight_lbs life_span_year egg_avg
0 2.40 10-15 9
1 1.20 2-3 6
2 1.60 5-10 9
3 3.57 10-20 4
4 1.31 10-15 6
5 2.20 10-15 8
6 1.85 10-15 13
7 0.80 3-5 10
8 3.10 5-10 5
9 0.70 3-5 9

ОБРАБОТКА ДАННЫХ В ДИАГРАММАХ

Я работал в приложении «Google Colab», так как в среде Spyder у меня не получилось создать диаграмму.

Все итоговые диаграммы прикреплены в самом конце проекта. Написанный код и база данных, ведущая на гугл диск, будут также прикреплены в самом конце проекта.

ДИАГРАММА № 1

С помощью гистограммы я продемонстрирую следующее:

Средний вес и длина птиц: Ось X: Вид птицы. Ось Y: Средний вес (в фунтах) или длина (в дюймах).

Гистограмма покажет распределение среднего веса и длины различных видов водоплавающих птиц.

Продолжительность жизни: Ось X: Вид птицы. Ось Y: Продолжительность жизни (в годах).

Гистограмма покажет распределение продолжительности жизни различных видов водоплавающих птиц.

import matplotlib.pyplot as plt import pandas as pd

data = { 'id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'name': ['American Black Duck', 'American Coot', 'American Wigeon', 'Barnacle Goose', 'Barrow's Goldeneye', 'Black Scoter', 'Black-bellied Whistling-Duck', 'Blue-winged Teal', 'Brant', 'Bufflehead'], 'type': ['Dabbling Duck', 'Other', 'Dabbling Duck', 'Goose', 'Diving Duck', 'Diving Duck', 'Other', 'Dabbling Duck', 'Goose', 'Diving Duck'], 'latin_name': ['Anas rubripes', 'Fulica americana', 'Mareca americana', 'Branta leucopsis', 'Bucephala islandica', 'Melanitta americana', 'Dendrocygna autumnalis', 'Spatula discors', 'Branta bernicla', 'Bucephala albeola'], 'm_avg_length_inches': [22, 16.2, 20, 27.0, 19.2, 19.7, 19.4, 16, 25, 15], 'f_avg_length_inches': [21, 16.2, 19, 23.5, 17, 18.5, 19, 14, 23, 13], 'm_avg_weight_lbs': [2.7, 1.5, 1.8, 4.03, 2.13, 2.5, 1.8, 1, 3.4, 1.1], 'f_avg_weight_lbs': [2.4, 1.2, 1.6, 3.57, 1.31, 2.2, 1.85, 0.8, 3.1, 0.7], 'life_span_year': ['10-15', '2-3', '5-10', '10-20', '10-15', '10-15', '10-15', '3-5', '5-10', '3-5'], 'egg_avg': [9, 6, 9, 4, 6, 8, 13, 10, 5, 9] }

df = pd.DataFrame(data)

plt.figure(figsize=(10, 6)) plt.bar(df['name'], df['m_avg_weight_lbs'], color='skyblue') plt.xlabel('Вид птицы') plt.ylabel('Средний вес (фунты)') plt.title('Средний вес водоплавающих птиц') plt.xticks(rotation=90) plt.tight_layout() plt.show()

plt.figure(figsize=(10, 6)) plt.bar(df['name'], df['m_avg_length_inches'], color='lightgreen') plt.xlabel('Вид птицы') plt.ylabel('Средняя длина (дюймы)') plt.title('Средняя длина водоплавающих птиц') plt.xticks(rotation=90) plt.tight_layout() plt.show()

plt.figure(figsize=(10, 6)) plt.bar(df['name'], df['life_span_year'].astype(str).str.split('-').str[0].astype(int), color='lightcoral') plt.xlabel('Вид птицы') plt.ylabel('Продолжительность жизни (годы)') plt.title('Продолжительность жизни водоплавающих птиц') plt.xticks(rotation=90) plt.tight_layout() plt.show()

Здесь используется библиотека pandas для работы с таблицами данных.

Далее создается словарь data, который содержит столбцы и их значения.

Позже создаю DataFrame df из словаря data.

И как итог — вывожу таблицу на экран с помощью функции print (df).

ДИАГРАММА № 2

С помощью круговой диаграммы я продемонстрирую следующее

Типы водоплавающих птиц: Секторы: Процентное соотношение различных типов водоплавающих птиц (например, утки, гуси, лебеди).

Круговая диаграмма покажет распределение видов водоплавающих птиц по типам.

Статус охраны: Секторы: Процентное соотношение видов с различными статусами охраны (например, Least Concern, Vulnerable, Endangered).

Круговая диаграмма покажет распределение видов водоплавающих птиц по статусам охраны.

import matplotlib.pyplot as plt import pandas as pd

data = { 'id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'name': ['American Black Duck', 'American Coot', 'American Wigeon', 'Barnacle Goose', 'Barrow's Goldeneye', 'Black Scoter', 'Black-bellied Whistling-Duck', 'Blue-winged Teal', 'Brant', 'Bufflehead'], 'type': ['Dabbling Duck', 'Other', 'Dabbling Duck', 'Goose', 'Diving Duck', 'Diving Duck', 'Other', 'Dabbling Duck', 'Goose', 'Diving Duck'], 'latin_name': ['Anas rubripes', 'Fulica americana', 'Mareca americana', 'Branta leucopsis', 'Bucephala islandica', 'Melanitta americana', 'Dendrocygna autumnalis', 'Spatula discors', 'Branta bernicla', 'Bucephala albeola'], 'm_avg_length_inches': [22, 16.2, 20, 27.0, 19.2, 19.7, 19.4, 16, 25, 15], 'f_avg_length_inches': [21, 16.2, 19, 23.5, 17, 18.5, 19, 14, 23, 13], 'm_avg_weight_lbs': [2.7, 1.5, 1.8, 4.03, 2.13, 2.5, 1.8, 1, 3.4, 1.1], 'f_avg_weight_lbs': [2.4, 1.2, 1.6, 3.57, 1.31, 2.2, 1.85, 0.8, 3.1, 0.7], 'life_span_year': ['10-15', '2-3', '5-10', '10-20', '10-15', '10-15', '10-15', '3-5', '5-10', '3-5'], 'egg_avg': [9, 6, 9, 4, 6, 8, 13, 10, 5, 9] }

df = pd.DataFrame(data)

type_counts = df['type'].value_counts()

df['conservation_status'] = ['Least Concern', 'Vulnerable', 'Endangered', ...]

conservation_status_counts = df['conservation_status'].value_counts()

conservation_status_counts = pd.Series({'Least Concern': 5, 'Vulnerable': 3, 'Endangered': 2})

plt.figure(figsize=(8, 8)) plt.pie(type_counts, labels=type_counts.index, autopct='%1.1f%%', startangle=140) plt.title('Распределение типов водоплавающих птиц') plt.show()

plt.figure(figsize=(8, 8)) plt.pie(conservation_status_counts, labels=conservation_status_counts.index, autopct='%1.1f%%', startangle=140) plt.title('Распределение видов водоплавающих птиц по статусам охраны') plt.show()

Здесь используется matplotlib для создания графиков и pandas для работы с данными.

Создается словарь data, который содержит столбцы и их значения.

Из словаря data создаем DataFrame df.

Используется метод value_counts () для подсчета количества каждого типа водоплавающих птиц.

Я создаю пример данных для статусов охраны (в реальном коде это столбец в DataFrame).

С помощью функции plt.pie () создается круговая диаграмма.

Так же создается вторая круговая диаграмма для статусов охраны.

ДИАГРАММА № 3

С помощью линейной диаграммы я продемонстрирую следующее:

Изменение численности популяции: Ось X: Время (годы). Ось Y: Численность популяции.

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

import matplotlib.pyplot as plt import pandas as pd

data = { 'id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'name': ['American Black Duck', 'American Coot', 'American Wigeon', 'Barnacle Goose', 'Barrow's Goldeneye', 'Black Scoter', 'Black-bellied Whistling-Duck', 'Blue-winged Teal', 'Brant', 'Bufflehead'], 'type': ['Dabbling Duck', 'Other', 'Dabbling Duck', 'Goose', 'Diving Duck', 'Diving Duck', 'Other', 'Dabbling Duck', 'Goose', 'Diving Duck'], 'latin_name': ['Anas rubripes', 'Fulica americana', 'Mareca americana', 'Branta leucopsis', 'Bucephala islandica', 'Melanitta americana', 'Dendrocygna autumnalis', 'Spatula discors', 'Branta bernicla', 'Bucephala albeola'], 'm_avg_length_inches': [22, 16.2, 20, 27.0, 19.2, 19.7, 19.4, 16, 25, 15], 'f_avg_length_inches': [21, 16.2, 19, 23.5, 17, 18.5, 19, 14, 23, 13], 'm_avg_weight_lbs': [2.7, 1.5, 1.8, 4.03, 2.13, 2.5, 1.8, 1, 3.4, 1.1], 'f_avg_weight_lbs': [2.4, 1.2, 1.6, 3.57, 1.31, 2.2, 1.85, 0.8, 3.1, 0.7], 'life_span_year': ['10-15', '2-3', '5-10', '10-20', '10-15', '10-15', '10-15', '3-5', '5-10', '3-5'], 'egg_avg': [9, 6, 9, 4, 6, 8, 13, 10, 5, 9] }

df = pd.DataFrame(data)

years = [2010, 2015, 2020, 2025] population_data = { 'American Black Duck': [1000, 1200, 1300, 1400], 'American Coot': [800, 900, 1000, 1100], 'American Wigeon': [1500, 1600, 1700, 1800], # Добавьте данные для других видов водоплавающих птиц }

population_df = pd.DataFrame(population_data, index=years)

plt.figure(figsize=(10, 6)) for species in population_df.columns: plt.plot(population_df.index, population_df[species], label=species)

plt.xlabel('Год') plt.ylabel('Численность популяции') plt.title('Динамика изменения численности популяции водоплавающих птиц') plt.legend() plt.grid(True) plt.show()

Используется matplotlib для создания графиков и pandas для работы с данными.

Создается словарь data, который содержит столбцы и их значения.

Создается DataFrame df из словаря data.

Далее создается пример данных для изменения численности популяции за несколько лет.

Создается DataFrame population_df из данных о численности популяции.

И после я создаю линейную диаграмму с помощью функции plt.plot () для каждого вида водоплавающих птиц.

ДИАГРАММА № 4

Мы используем файлы cookies для улучшения работы сайта НИУ ВШЭ и большего удобства его использования. Более подробную...
Показать больше