На прошлой неделе мы рассмотрели основы пакета matplotlib и то, что мы можем с ним сделать, теперь мы увидим, как использовать его с pandas и numpy, чтобы использовать его эффективно.
Кадры данных Pandas
Фреймы данных Pandas — это наиболее распространенная структура данных, которую мы будем использовать, и мы, очевидно, можем построить их с помощью matplolib. Когда мы представили панд, мы использовали образец о бейсболистах всего с десятью строками, потому что я удалил их все, чтобы упростить обучение. Теперь мы можем использовать полную, которую вы можете найти здесь
Но у нас есть проблема: имена столбцов плохо отформатированы. Мы можем решить эту проблему за несколько шагов: сначала мы видим имена столбцов с помощью функции keys, а затем переименовываем их с помощью функции rename:
Построение кадра данных
Мы можем быстро построить наш фрейм данных с помощью функции plot. Это не рекомендуемый способ, но для быстрых графиков работает отлично:
Таким образом, мы можем получить краткий обзор наших данных, другим примером является функция hist:
Объектно-ориентированный метод
Теперь мы знаем, как быстро увидеть нужные нам данные, но в большинстве случаев нам понадобятся хорошо структурированные и настроенные графики, и для этого эффективнее использовать объектно-ориентированный метод или метод OO. Давайте посмотрим на пример:
Теперь, когда у нас есть наш график, давайте уделим немного времени, чтобы понять, что здесь происходит: мы создаем рисунок и топор и даем им size, затем мы вызываем функцию plot в нашем фрейме данных и в функцию, которую мы объявляем
- тип сюжета, который мы хотим (разброс)
- ось x (возраст каждого игрока)
- ось Y (вес наших игроков)
- цвет графика, диапазон каждого элемента на основе третьего значения (их высота в дюймах)
- топор, который мы замышляем. В данном случае была только одна ось, но если бы их было больше, мы могли бы ввести ax = ax[0, 0] или ax = имя_оси.
Но мы все еще не полностью используем объектно-ориентированный метод. Для этого мы должны использовать функцию subplots с использованием всего, что от нее происходит:
figure, axis = plt.subplots(figsize=(10, 7)) #creating the plot, same as before first_plot = axis.scatter(x = bb_players['Age'], y = bb_players['Weight (lbs)'], c = bb_players['Height (inches)'])
# adding information axis.set(title="correlations between baseball players weight and age", xlabel="players age", ylabel="players weight") # adding the legend axis.legend(*first_plot.legend_elements(), title = 'Weight in lbs'); # the "*" query all the elements in first_plot
Здесь мы просто создаем фигуру и настраиваем ее сюжет.
Результатом будет:
здесь есть некоторая опечатка, наиболее очевидной является легенда, относящаяся к весу, а не к росту
Теперь должно быть ясно, как сделать рисунок с помощью метода OO, но с большим количеством графиков. Примером кода может быть:
# creating a figure with more than 1 subplots figure, (first_plot, second_plot) = plt.subplots(nrows = 2, ncols = 1, figsize = (12, 20))
scatter_plot = first_plot.scatter(x = bb_players['Age'], y = bb_players['Weight (lbs)'], c = bb_players['Height (inches)']) first_plot.set(title="correlations between baseball players weight and age", xlabel="age of players", ylabel="weight of players") first_plot.legend(*scatter_plot.legend_elements(), title = 'Height in inches');
# putting a line on the average data first_plot.axhline(y = bb_players['Weight (lbs)'].mean(), color = 'r', linestyle = '-')
# second plot second_plot.hist(x = bb_players['Age'], bins = 20) second_plot.set(title = "Numbers of players with a certain age", xlabel="age of players", ylabel="number of players");
Как видно из кода, мы установили строки и столбцы рисунка и установили интервалы гистограммы. Бункеры — это просто единица измерения, проходящая через ось x. Гистограмма с семью бинами будет похожа на:
axhline — это очень простая функция, описанная здесь. В этом случае мы устанавливаем среднее значение столбцов веса как y.
Теперь, когда код должен быть понятен, мы можем увидеть результат:
Настройка и сохранение сюжета
Существуют различные способы настроить наш график в matplotlib с помощью общих стилей, которые мы можем изменить, если захотим. Основная команда:
plt.style.available
Использование стиля matplotlib важно для придания смысла нашему графику, вот разница между стилем по умолчанию и тем, который вы можете выбрать:
Но, несмотря на то, что теперь он немного отличается, он все еще может сбивать с толку. Matplotlib предлагает нам функцию cmap, среди прочего, для изменения деталей стиля:
Полный справочник доступен на официальной странице документации
Теперь последним шагом будет создание изображения вашей фигуры с помощью функции savefig, которую мы видели в последнем посте, и все будет готово, чтобы показать наши данные другим.
Последние мысли
Сегодня мы увидели последнюю часть пакета matplotlib python. Не то чтобы мы достаточно хорошо знали pandas, numpy и matplotlib, мы можем увидеть, как работает scikit, и начать работать над какой-либо моделью.
Если у вас есть какие-либо сомнения, не стесняйтесь оставлять комментарии.