Методы, которые помогут вам выделить вашу визуализацию данных среди остальной массы

На этапе исследовательского анализа данных нашего проекта по науке о данных мы создаем различные визуализации для изучения данных и проецирования их таким образом, чтобы наша аудитория могла быстро понять данные в наглядном виде. В python у нас есть различные библиотеки, такие как Matplotlib, Seaborn, Plotly и т. Д., Которые помогают нам делать то же самое.

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

Тепловая карта усеченной корреляционной матрицы

Разве это не раздражает наличие зеркального отражения в матрице корреляции и, что еще хуже, диагональная строка с 1 в качестве корреляции.

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

sns.heatmap(dataset.corr(),cmap="coolwarm",mask=corr_matrix,vmin=-1,annot=True)

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

corr_matrix = np.triu(dataset.corr())
sns.heatmap(dataset.corr(),cmap="coolwarm",mask=corr_matrix,vmin=-1,annot=True)

Если мы используем функцию numpy tril, нижняя половина матрицы будет обнулена.

Проверка нормального распределения

Для задач машинного обучения мы ищем нормальность в распределении непрерывного признака. Когда мы строим график распределения объекта с помощью Seaborn, мы получаем график, как показано ниже.

sns.distplot(data["chol"])

Нам не нужно визуально оценивать, насколько это близко к нормальному распределению. Существует способ построить оценку функции плотности вероятности нормальной кривой на самом этом графике. Мы используем объект norm из модуля scipy.stats и помещаем его в этот график.

from scipy.stats import norm
sns.distplot(data["chol"],fit=norm)

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

sns.distplot(np.log1p(data["chol"]),fit=norm)

Мы видим, что кривые почти сходятся, что показывает, что наши данные были преобразованы в нормальное распределение.

Отображение процентов в сгруппированных гистограммах

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

ax=sns.countplot(x="high_blood_pressure",hue="DEATH_EVENT",data=dat)

Мы используем объект patch в столбчатых диаграммах для вычисления процентов и получения координат, где разместить процентный текст.

ax=sns.countplot(x="high_blood_pressure",hue="DEATH_EVENT",data=dat)
patch = ax.patches
half = int(len(patch)/2)
for i in range(half):
  pat_1= patch[i]
  pat_2 = patch[i+half]
  height_1 = pat_1.get_height()
  height_2 = pat_2.get_height()
  total = height_1  + height_2
  width_1 = pat_1.get_x()+pat_1.get_width()/2
  width_2 = pat_2.get_x()+pat_2.get_width()/2
  ax.text(width_1,height_1+1,"{:.0%}".format(height_1/total))
  ax.text(width_2,height_2+1,"{:.0%}".format(height_2/total))

Теперь мы можем сказать, что из пациентов с нормальным кровяным давлением выжили 71%, тогда как среди пациентов с высоким кровяным давлением выжили только 63%.

Гистограммы для отображения процента нулевых значений в данных

Первое, что мы делаем перед началом исследовательского анализа данных в наборе данных, - это проверка нулевых значений. Мы используем простую функцию isnull для проверки нулевых значений. Чтобы получить подсчет нулевых значений с умом

dataset.isnull().sum()

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

f,ax=plt.subplots(figsize=(12,10))
missing_perc= dataset.isnull().sum()/len(dataset)*100
ax1=plt.barh(missing_perc.index,[100]*len(missing_perc),edgecolor="black",color="white")
ax2=plt.barh(missing_perc.index,100-missing_perc.values,color="b")ax.set_title("Missing Data")
for p1,p2 in zip(ax1.patches,ax2.patches):
  plt.text(p1.get_width(),p1.get_y(),"{:.1%}".format(p2.get_width()/p1.get_width()))

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

Географические данные

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

Мы можем использовать объект chorolpleth в библиотеке plotly / plotly express для нанесения наших данных на карты. На местоположения на карте можно ссылаться с помощью GeoJSON, а также ссылаться на страны становится проще благодаря встроенной геометрии, которая распознает названия стран.

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

import plotly.express as px
px.choropleth(dataset,locations="Country",color="Cummulative_Launches",locationmode="country names",hover_name="Cummulative_Launches")

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