You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Data-Science-For-Beginners/translations/ru/3-Data-Visualization/09-visualization-quantities
leestott e2b90108bb
🌐 Update translations via Co-op Translator
4 weeks ago
..
README.md 🌐 Update translations via Co-op Translator 4 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 4 weeks ago

README.md

Визуализация количеств

Скетчноут от (@sketchthedocs)
Визуализация количеств - Скетчноут от @nitya

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

Тест перед лекцией

Наблюдаем размах крыльев с помощью Matplotlib

Отличной библиотекой для создания как простых, так и сложных графиков и диаграмм является Matplotlib. В общем случае процесс построения графиков с использованием этих библиотек включает в себя выбор частей вашего датафрейма, которые вы хотите использовать, выполнение необходимых преобразований данных, назначение значений для осей x и y, выбор типа графика и его отображение. Matplotlib предлагает множество видов визуализаций, но в этом уроке мы сосредоточимся на тех, которые наиболее подходят для визуализации количеств: линейные графики, точечные диаграммы и столбчатые диаграммы.

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

  • Для анализа трендов во времени: линейный график
  • Для сравнения значений: столбчатая, колонная, круговая диаграмма, точечная диаграмма
  • Для отображения частей целого: круговая диаграмма
  • Для отображения распределения данных: точечная диаграмма, столбчатая диаграмма
  • Для отображения трендов: линейный график, колонная диаграмма
  • Для отображения взаимосвязей между значениями: линейный график, точечная диаграмма, пузырьковая диаграмма

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

Отличные "шпаргалки" по Matplotlib доступны здесь.

Построение линейного графика значений размаха крыльев птиц

Откройте файл notebook.ipynb в корневой папке этого урока и добавьте ячейку.

Примечание: данные хранятся в корне этого репозитория в папке /data.

import pandas as pd
import matplotlib.pyplot as plt
birds = pd.read_csv('../../data/birds.csv')
birds.head()

Эти данные содержат смесь текста и чисел:

Название Научное название Категория Отряд Семейство Род Статус сохранности Мин. длина Макс. длина Мин. масса тела Макс. масса тела Мин. размах крыльев Макс. размах крыльев
0 Чернобрюхий свистун Dendrocygna autumnalis Утки/Гуси/Водоплавающие Anseriformes Anatidae Dendrocygna LC 47 56 652 1020 76 94
1 Рыжий свистун Dendrocygna bicolor Утки/Гуси/Водоплавающие Anseriformes Anatidae Dendrocygna LC 45 53 712 1050 85 93
2 Белый гусь Anser caerulescens Утки/Гуси/Водоплавающие Anseriformes Anatidae Anser LC 64 79 2050 4050 135 165
3 Гусь Росса Anser rossii Утки/Гуси/Водоплавающие Anseriformes Anatidae Anser LC 57.3 64 1066 1567 113 116
4 Большой белолобый гусь Anser albifrons Утки/Гуси/Водоплавающие Anseriformes Anatidae Anser LC 64 81 1930 3310 130 165

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

wingspan = birds['MaxWingspan'] 
wingspan.plot()

Макс. размах крыльев

Что вы замечаете сразу? Кажется, есть как минимум один выброс — это впечатляющий размах крыльев! Размах крыльев в 2300 сантиметров равен 23 метрам — неужели в Миннесоте летают птеродактили? Давайте разберемся.

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

Добавьте подписи к оси x, чтобы показать, о каких птицах идет речь:

plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.xticks(rotation=45)
x = birds['Name'] 
y = birds['MaxWingspan']

plt.plot(x, y)

plt.show()

Размах крыльев с подписями

Даже с поворотом подписей на 45 градусов их слишком много, чтобы прочитать. Попробуем другой подход: подпишем только выбросы и разместим подписи внутри графика. Вы можете использовать точечную диаграмму, чтобы освободить место для подписей:

plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)

for i in range(len(birds)):
    x = birds['Name'][i]
    y = birds['MaxWingspan'][i]
    plt.plot(x, y, 'bo')
    if birds['MaxWingspan'][i] > 500:
        plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12)
    
plt.show()

Что здесь происходит? Вы использовали tick_params, чтобы скрыть нижние подписи, а затем создали цикл по вашему набору данных о птицах. Построив график с маленькими круглыми синими точками, используя bo, вы проверили, есть ли у какой-либо птицы максимальный размах крыльев больше 500, и отобразили их подпись рядом с точкой, если это так. Вы немного сместили подписи по оси y (y * (1 - 0.05)) и использовали название птицы в качестве подписи.

Что вы обнаружили?

Выбросы

Фильтрация данных

И Белоголовый орлан, и Степной сокол, хотя, вероятно, очень крупные птицы, скорее всего, имеют ошибку в данных, с добавленным лишним 0 в их максимальном размахе крыльев. Вряд ли вы встретите Белоголового орлана с размахом крыльев 25 метров, но если это произойдет, пожалуйста, сообщите нам! Давайте создадим новый датафрейм без этих двух выбросов:

plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
    x = birds['Name'][i]
    y = birds['MaxWingspan'][i]
    if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']:
        plt.plot(x, y, 'bo')
plt.show()

Исключив выбросы, ваши данные стали более согласованными и понятными.

Точечная диаграмма размахов крыльев

Теперь, когда у нас есть более чистый набор данных, по крайней мере в отношении размаха крыльев, давайте узнаем больше об этих птицах.

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

Сколько категорий птиц существует и каково их количество?
Сколько птиц вымерло, находится под угрозой исчезновения, редких или обычных?
Сколько существует различных родов и отрядов в терминологии Линнея?

Изучаем столбчатые диаграммы

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

В файле блокнота создайте базовую столбчатую диаграмму.

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

Если вы хотите создать столбчатую диаграмму, вы можете выбрать данные, на которых хотите сосредоточиться. Столбчатые диаграммы можно создавать из необработанных данных:

birds.plot(x='Category',
        kind='bar',
        stacked=True,
        title='Birds of Minnesota')

Все данные в виде столбчатой диаграммы

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

Отфильтруйте данные, чтобы включить только категорию птиц.

Обратите внимание, что вы используете Pandas для управления данными, а затем позволяете Matplotlib строить диаграмму.

Поскольку категорий много, вы можете отобразить эту диаграмму вертикально и настроить ее высоту, чтобы учесть все данные:

category_count = birds.value_counts(birds['Category'].values, sort=True)
plt.rcParams['figure.figsize'] = [6, 12]
category_count.plot.barh()

Категории и длина

Эта столбчатая диаграмма дает хорошее представление о количестве птиц в каждой категории. С первого взгляда видно, что наибольшее количество птиц в этом регионе относится к категории Утки/Гуси/Водоплавающие. Миннесота — это "земля 10,000 озер", так что это неудивительно!

Попробуйте подсчитать что-нибудь еще в этом наборе данных. Вас что-нибудь удивило?

Сравнение данных

Вы можете попробовать разные сравнения сгруппированных данных, создавая новые оси. Попробуйте сравнить MaxLength птицы в зависимости от ее категории:

maxlength = birds['MaxLength']
plt.barh(y=birds['Category'], width=maxlength)
plt.rcParams['figure.figsize'] = [6, 12]
plt.show()

Сравнение данных

Здесь ничего удивительного: колибри имеют наименьшую максимальную длину по сравнению с пеликанами или гусями. Хорошо, когда данные логичны!

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

minLength = birds['MinLength']
maxLength = birds['MaxLength']
category = birds['Category']

plt.barh(category, maxLength)
plt.barh(category, minLength)

plt.show()

На этом графике вы можете увидеть диапазон минимальной и максимальной длины для каждой категории птиц. Можно с уверенностью сказать, что, исходя из этих данных, чем больше птица, тем шире диапазон ее длины. Удивительно!

Наложенные значения

🚀 Задание

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

Тест после лекции

Обзор и самостоятельное изучение

Этот первый урок дал вам информацию о том, как использовать Matplotlib для визуализации количеств. Проведите исследование других способов работы с наборами данных для визуализации. Plotly — это инструмент, который мы не будем рассматривать в этих уроках, поэтому изучите, что он может предложить.

Задание

Линии, точки и столбцы


Отказ от ответственности:
Этот документ был переведен с использованием сервиса автоматического перевода Co-op Translator. Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.