Увеличете своя EDA процес с тези инструменти за чертане

Pandas е библиотеката на Python за анализ и манипулиране на данни. Той предоставя множество функции и методи, които ускоряват процеса на анализ на данни.

Когато става въпрос за визуализация на данни, pandas не е видният избор, защото съществуват страхотни библиотеки за визуализация като matplotlib, seaborn и plotly.

Като се има предвид това, не можем просто да пренебрегнем инструментите за чертане на пандите. Те помагат да се открият връзки в рамките на данни или серии, а синтаксисът е доста прост. Много информативни графики могат да бъдат създадени само с един ред код.

В тази публикация ще разгледаме 6 инструмента за чертане на панди, които определено добавят стойност към процеса на анализ на проучвателни данни.

Първата стъпка за създаване на страхотен модел за машинно обучение е да се изследват и разберат структурата и връзките в данните.

Тези 6 инструмента за изобразяване ще ви помогнат да разберете по-добре данните:

  • Диаграма с точкова матрица
  • График на плътността
  • Криви на Андрюс
  • Паралелни координати
  • Графики за забавяне
  • График на автокорелация

Ще използвам „набор от данни за диабета“, наличен на kaggle. Нека първо прочетем набора от данни в рамка от данни на pandas.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
df = pd.read_csv("/content/diabetes.csv")
print(df.shape)
df.head()

Наборът от данни съдържа 8 числови характеристики и целева променлива, показваща дали лицето има диабет.

1. Точкова матрицата

Точковите диаграми обикновено се използват за изследване на корелацията между две променливи (или характеристики). Стойностите на точките от данни са показани с помощта на декартови координати.

Матрицата на точковата диаграма създава мрежа от точкови диаграми само с един ред код.

from pandas.plotting import scatter_matrix
subset = df[['Glucose','BloodPressure','Insulin','Age']]
scatter_matrix(subset, figsize=(10,10), diagonal='hist')

Избрах подмножество от рамката с данни с 4 функции за демонстрационни цели. Диагоналът показва хистограмата на всяка променлива, но можем да го променим, за да показва графика на kde, като зададем параметъра diagonal като ‘kde’.

2. График на плътноста

Можем да създадем диаграми на плътността, като използваме функцията kde() върху серия или рамка с данни.

subset = df[['Glucose','BloodPressure','BMI']]
subset.plot.kde(figsize=(12,6), alpha=1)

Можем да видим разпределението на характеристиките с един ред код. ПараметърътAlpha се използва за регулиране на тъмнината на линиите.

3. Андрюс кривите

Кривите на Андрюс, кръстени на статистиката Дейвид Ф. Андрюс, са инструмент за начертаване на многовариантни данни с много криви. Кривите се създават с помощта на атрибутите (характеристиките) на образците като коефициенти на редове на Фурие.

Получаваме общ преглед на групирането на различни класове, като оцветяваме кривите, които принадлежат към всеки клас по различен начин.

from pandas.plotting import andrews_curves
plt.figure(figsize=(12,8))
subset = df[['Glucose','BloodPressure','BMI', 'Outcome']]
andrews_curves(subset, 'Outcome', colormap='Paired')

Трябва да предадем рамка с данни и име на променливата, която съдържа информация за класа. Параметърът Colormap не е задължителен. Изглежда има ясно разграничение (с някои изключения) между 2 класа въз основа на характеристиките в подмножеството.

4. Паралелни координати

Паралелните координати са друг инструмент за изобразяване на многовариантни данни. Нека първо създадем сюжета и след това да поговорим за това, което ни казва.

from pandas.plotting import parallel_coordinates
cols = ['Glucose','BloodPressure','BMI', 'Age']
plt.figure(figsize=(12,8))
parallel_coordinates(df,'Outcome',color=['Blue','Gray'],cols=cols)

Първо импортираме parallel_coordinates от инструментите за чертане на pandas. След това създайте списък с колони, които да използвате. След това се създава фигура на matplotlib. Последният ред създава диаграма с паралелни координати. Предаваме рамка от данни и име на променливата на класа. Параметърът Цвят не е задължителен и се използва за определяне на цветове за всеки клас. Накрая параметърът colsсе използва за избор на колони, които да се използват в диаграмата. Ако не е посочено, се използват всички колони.

Всяка колона е представена с вертикална линия. Хоризонталните линии представляват точки от данни (редове в рамката с данни). Получаваме преглед на това как класовете са разделени според характеристиките. Променливата „глюкоза“ изглежда добър предиктор за разделяне на тези два класа. От друга страна, линиите от различни класове се припокриват в „Кръвно налягане“, което показва, че не се представя добре при разделянето на класовете.

5. Лаг парцела

Графиките на забавяне се използват за проверка на случайността в набор от данни или времеви серии. Ако дадена структура е показана в диаграмата на забавяне, можем да заключим, че данните не са случайни.

from pandas.plotting import lag_plot
plt.figure(figsize=(10,6))
lag_plot(df)

В нашия набор от данни няма структура, която да показва случайност.

Нека да видим пример за неслучайни данни. Ще използвам синтетичната проба в страницата с документация на pandas.

spacing = np.linspace(-99 * np.pi, 99 * np.pi, num=1000)
data = pd.Series(0.1 * np.random.rand(1000) + 0.9 * np.sin(spacing))
plt.figure(figsize=(10,6))
lag_plot(data)

Можем ясно да видим структура на графиката на забавяне, така че данните не са случайни.

6. Диаграма на автокорелацията

Автокорелационните диаграми се използват за проверка на случайността във времеви редове. Те се получават чрез изчисляване на автокорелациите за стойностите на данните при различни закъснения във времето.

Лагът е разликата във времето. Ако автокорелациите са много близки до нула за всички времеви лагове, времевият ред е случаен.

Ако наблюдаваме една или повече значително ненулеви автокорелации, тогава можем да заключим, че времевият ред не е случаен.

Нека първо създадем случаен времеви ред и да видим автокорелационния график.

noise = pd.Series(np.random.randn(250)*100)
noise.plot(figsize=(12,6))

Този времеви ред е очевидно случаен. Автокорелационният график на този времеви ред:

from pandas.plotting import autocorrelation_plot
plt.figure(figsize=(12,6))
autocorrelation_plot(noise)

Както се очаква, всички автокорелационни стойности са много близки до нула.

Нека направим пример за неслучайна времева серия. Графиката по-долу показва много проста възходяща тенденция.

upward = pd.Series(np.arange(100))
upward.plot(figsize=(10,6))
plt.grid()

Автокорелационният график за този времеви ред:

plt.figure(figsize=(12,6))
autocorrelation_plot(upward)

Тази автокорелация ясно показва неслучаен времеви ред, тъй като има много значително различни от нула стойности.

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

Pandas предоставя още два инструмента за чертане, които са bootstap plot и RadViz. Те могат да се използват и в процеса на проучвателен анализ на данни.

Благодаря ви, че прочетохте. Моля, уведомете ме, ако имате отзиви.