Автор оригинала: Team Python Pool.
Matplotlib Heatmap: Упрощенная Визуализация Данных
Вы хотите представлять и понимать сложные данные? Лучше всего это сделать с помощью тепловых карт. Тепловая карта-это метод визуализации данных, который представляет данные с использованием различных цветов в двух измерениях. В Python мы можем создать тепловую карту, используя matplotlib и библиотеку seaborn. Хотя нет прямого метода, с помощью которого мы можем создавать тепловые карты с помощью matplotlib, мы можем использовать функцию matplotlib imshow для создания тепловых карт.
<В тепловой карте Matplotlib каждое значение (каждая ячейка матрицы) представлено другим цветом. Специалисты по обработке данных обычно используют тепловые карты, когда хотят понять корреляцию между различными характеристиками фрейма данных. Если вы не знаете всех этих терминов, не волнуйтесь, вы получите базовое представление об этом при обсуждении его реализации.
Синтаксис тепловой карты Matplotlib
Чтобы сгенерировать тепловую карту с помощью matplotlib, мы будем использовать функцию imshow matplotlib.pyplot и два ее параметра – ‘интерполяция’ и ‘cmap.’ Давайте разберемся в этих параметрах.
Перед этим вам необходимо установить библиотеку matplotlib в ваших системах, если вы еще не установили ее. Вам нужно использовать эту команду – pip install matplotlib.
imshow(data,)
Параметры-
- Data – В этом параметре данных мы должны передать 2D-массив в качестве входных данных.
- Cmap– Используя этот параметр, мы можем придать цвет нашему графику. Мы можем выбрать цвет из приведенных ниже вариантов.
- Интерполяция – Можно создавать различные типы графиков. Мы можем выбрать любое из следующих значений и заполнить параметр интерполяции.
antialiased, none, nearest, bilinear, bicubic, spline16, spline36, hanning, hamming, hermite, kaiser, quadric, catrom, gaussian, bessel, mitchell, sinc, lanczos, blackman
Тип возврата
<класс ‘matplotlib.image.AxesImage’>
Тепловые карты с использованием Matplotlib
Создание нашей первой тепловой карты с помощью matplotlib
Предположим, у нас есть оценки, полученные разными студентами по разным предметам из 100. Давайте посмотрим, как мы можем использовать тепловые карты для представления этих данных.
import matplotlib.pyplot as plt # Create a array of marks in different subjects scored by different students .array([[50, 74, 40, 59,90, 98], [72, 85, 64, 33, 47, 87], [52, 97, 44, 73, 17, 56], [69, 45, 89, 79,70, 48], [87, 65, 56, 86, 72, 68], [90, 29, 78, 66, 50, 32]]) # name of students names=['Sumit','Ashu','Sonu','Kajal','Kavita','Naman'] # name of subjects subjects=['Maths','Hindi','English','Social Studies','Science','Computer Science'] # Setting the labels of x axis. # set the xticks as student-names # rotate the labels by 90 degree to fit the names) # Setting the labels of y axis. # set the xticks as subject-names) # use the imshow function to generate a heatmap # cmap parameter gives color to the graph # setting the interpolation will lead to different types of graphs plt.imshow(marks,)
В приведенной выше тепловой карте темные цвета показывают хорошие отметки, а светлые-плохие. Тепловые карты регулируют яркость цвета в соответствии с самыми высокими и самыми низкими отметками в наборе данных. Самый высокий балл представлен самым темным цветом, а самый низкий-самым ярким.
Игра с интерполяцией и параметрами карты
Давайте теперь изменим карту и интерполяцию на тех же данных и посмотрим, какие разновидности графиков мы можем сделать.
import matplotlib.pyplot as plt.array([[50, 74, 40, 59,90, 98], [72, 85, 64, 33, 47, 87], [52, 97, 44, 73, 17, 56], [69, 45, 89, 79,70, 48], [87, 65, 56, 86, 72, 68], [90, 29, 78, 66, 50, 32]]) names=['Sumit','Ashu','Sonu','Kajal','Kavita','Naman'] subjects=['Maths','Hindi','English','Social Studies','Science','Computer Science'] )) # set the cmap as Blues and interpolation as spline16 plt.imshow(marks,)
На этом графике, когда отметок больше, цвет довольно темный, а когда баллов меньше, цвет светлее.
Добавление цветовой панели в тепловую карту с помощью Matplotlib
Colorbar можно просто понимать как шкалу, которая помогает нам понять, какой цвет представляет какое значение. Кроме того, в matplotlib есть прямая функция для добавления цветовой полосы на график. Воспользуемся для этой цели теми же данными, что и выше.
import matplotlib.pyplot as plt.array([[50, 74, 40, 59,90, 98], [72, 85, 64, 33, 47, 87], [52, 97, 44, 73, 17, 56], [69, 45, 89, 79,70, 48], [87, 65, 56, 86, 72, 68], [90, 29, 78, 66, 50, 32]]) names=['Sumit','Ashu','Sonu','Kajal','Kavita','Naman'] subjects=['Maths','Hindi','English','Social Studies','Science','Computer Science'] )) # save this plot inside a variable called hm.imshow(marks,) # pass this heatmap object into plt.colorbar method. plt.colorbar(hm)
Вы можете увидеть вертикальную линию вокруг тепловой карты. Это цветовая полоса. Это ясно указывает на то, что для более высоких отметок цвет темный, а для более низких-более светлый.
Корреляция между объектами в фрейме данных Pandas с использованием тепловой карты matplotlib
Одним из самых больших применений тепловой карты является анализ корреляции между различными характеристиками a href=”https://en.wikipedia.org/?title=Data_frame&redirect=no”> фрейм данных. Особенности означают столбцы, а корреляция-это то, насколько значения в этих столбцах связаны друг с другом. href=”https://en.wikipedia.org/?title=Data_frame&redirect=no”> фрейм данных. Особенности означают столбцы, а корреляция-это то, насколько значения в этих столбцах связаны друг с другом.
Возьмем фрейм данных и проанализируем корреляцию между его характеристиками с помощью тепловой карты.
import pandas as pd import matplotlib.pyplot as plt # this is our data x=[[1.,337.,118.,4.,4.5 ,4.5 ,9.65,1.,0.92],[2.,324.,107.,4.,4.,4.5 ,8.87,1.,0.76],[3.,316.,104.,3.,3.,3.5 ,8.,1.,0.72], [4.,322.,110.,3.,3.5 ,2.5 ,8.67,1.,0.8 ],[5.,314.,103.,2.,2.,3.,8.21,0.,0.65],[6.,330.,115.,5.,4.5 ,3.,9.34,1.,0.9 ], [7.,321.,109.,3.,3.,4.,8.2 ,1.,0.75],[8.,308.,101.,2.,3.,4.,7.9 ,0.,0.68],[9.,302.,102.,1.,2.,1.5 ,8.,0.,0.5 ], [ 10.,323.,108.,3.,3.5 ,3.,8.6 ,0.,0.45],[ 11.,325.,106.,3.,3.5 ,4.,8.4 ,1.,0.52],[ 12.,327.,111.,4.,4.,4.5 ,9.,1.,0.84], [ 13.,328.,112.,4.,4.,4.5 ,9.1 ,1.,0.78],[ 14.,307.,109.,3.,4.,3.,8.,1.,0.62],[ 15.,311.,104.,3.,3.5 ,2.,8.2 ,1.,0.61], [ 16.,314.,105.,3.,3.5 ,2.5 ,8.3 ,0.,0.54],[ 17.,317.,107.,3.,4.,3.,8.7 ,0.,0.66],[ 18.,319.,106.,3.,4.,3.,8.,1.,0.65], [ 19.,318.,110.,3.,4.,3.,8.8 ,0.,0.63],[ 20.,303.,102.,3.,3.5 ,3.,8.5 ,0.,0.62],[ 21.,312.,107.,3.,3.,2.,7.9 ,1.,0.64], [ 22.,325.,114.,4.,3.,2.,8.4 ,0.,0.7 ],[ 23.,328.,116.,5.,5.,5.,9.5 ,1.,0.94],[ 24.,334.,119.,5.,5.,4.5 ,9.7 ,1.,0.95], [ 25.,336.,119.,5.,4.,3.5 ,9.8 ,1.,0.97],[ 26.,340.,120.,5.,4.5 ,4.5 ,9.6 ,1.,0.94], [ 27.,322.,109.,5.,4.5 ,3.5 ,8.8 ,0.,0.76],[ 28.,298.,98.,2.,1.5 ,2.5 ,7.5 ,1.,0.44],[ 29.,295.,93.,1.,2.,2.,7.2 ,0.,0.46], [ 30.,310.,99.,2.,1.5 ,2.,7.3 ,0.,0.54],[ 31.,300.,97.,2.,3.,3.,8.1 ,1.,0.65], [ 32.,327.,103.,3.,4.,4.,8.3 ,1.,0.74], [ 33.,338.,118.,4.,3.,4.5 ,9.4 ,1.,0.91], [ 34.,340.,114.,5.,4.,4.,9.6 ,1.,0.9 ], [ 35.,331.,112.,5.,4.,5.,9.8 ,1.,0.94], [ 36.,320.,110.,5.,5.,5.,9.2 ,1.,0.88], [ 37.,299.,106.,2.,4.,4.,8.4 ,0.,0.64], [ 38.,300.,105.,1.,1.,2.,7.8 ,0.,0.58], [ 39.,304.,105.,1.,3.,1.5 ,7.5 ,0.,0.52], [ 40.,307.,108.,2.,4.,3.5 ,7.7 ,0.,0.48], [ 41.,308.,110.,3.,3.5 ,3.,8.,1.,0.46], [ 42.,316.,105.,2.,2.5 ,2.5 ,8.2 ,1.,0.49], [ 43.,313.,107.,2.,2.5 ,2.,8.5 ,1.,0.53], [ 44.,332.,117.,4.,4.5 ,4.,9.1 ,0.,0.87], [ 45.,326.,113.,5.,4.5 ,4.,9.4 ,1.,0.91], [ 46.,322.,110.,5.,5.,4.,9.1 ,1.,0.88], [ 47.,329.,114.,5.,4.,5.,9.3 ,1.,0.86], [ 48.,339.,119.,5.,4.5 ,4.,9.7 ,0.,0.89], [ 49.,321.,110.,3.,3.5 ,5.,8.85,1.,0.82], [ 50.,327.,111.,4.,3.,4.,8.4 ,1.,0.78]] # column name columns=['Serial No.', 'GRE Score', 'TOEFL Score', 'University Rating', 'SOP', 'LOR ', 'CGPA', 'Research', 'Chance of Admit '] # create a dataframe with the above values and column names ) # to find the correlation, use corr() method on the dataset.corr() ) plt.yticks(range(len(columns)),columns) plt.imshow(corr,)
В приведенной выше тепловой карте, чем светлее значение, тем больше корреляция между признаками. Вы можете видеть, что если мы хотим проверить, какие функции больше коррелируют с Шансом признания, вы увидите следующую строку-
Обратите внимание, что для более высокого шанса поступления CGPA и Университет имеют наибольшее значение, потому что они имеют очень яркие цвета. Кроме того, серийный номер и исследования не имеют большого значения.Вот как мы используем тепловые карты в науке о данных.
Тепловые карты с использованием Seaborn
< strong>Seaborn-это библиотека визуализации данных, построенная поверх matplotlib и содержащая прямую функцию создания тепловых карт. Перед использованием seaborn установите его в свои системы с помощью pip install seaborn.
Мы будем использовать приведенные выше данные, чтобы увидеть, как можно создать тепловую карту seaborn.
# import the seaborn library and give alias as sns import seaborn as sns # use heatmap function, set the color as viridis and # make each cell seperate using linewidth parameter)
Надо Читать:
- Как преобразовать строку в нижний регистр в
- Как вычислить Квадратный корень
- Пользовательский ввод | Функция ввода () | Ввод с клавиатуры
- Лучшая книга для изучения Python
Вывод
Чтобы лучше анализировать и визуализировать данные, мы можем использовать тепловые карты. Для создания тепловых карт с помощью matplotlib нам нужно использовать функцию imshow с параметрами cmap и интерполяции. Data Scientist обычно использует тепловые карты для анализа корреляции между различными характеристиками набора данных.