Методы, которые помогут вам выделить вашу визуализацию данных среди остальной массы
На этапе исследовательского анализа данных нашего проекта по науке о данных мы создаем различные визуализации для изучения данных и проецирования их таким образом, чтобы наша аудитория могла быстро понять данные в наглядном виде. В 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")
Я надеюсь, что эти методы увеличат ценность вашего исследовательского анализа данных. Когда и когда мы сталкиваемся с определенным типом данных, мы должны импровизировать, чтобы приспособить и представить данные визуально таким образом, чтобы мы могли получить из них понимание, и это помогает нам в дальнейшем анализе набора данных.