Полное руководство по исследовательскому анализу данных
Исследовательский анализ данных (EDA) - это процесс анализа данных с целью обобщения их основных характеристик, часто с помощью визуальных методов. Это важный шаг в процессе анализа данных, поскольку он помогает понять данные и выявить любые проблемы или инсайты, которые могут быть скрыты в них. Эта статья служит всеобъемлющим руководством по EDA, охватывающим его ключевые концепции, лучшие практики и примеры того, как выполнять EDA на реальных наборах данных из Kaggle.
Цели исследовательского анализа данных
- Выявление и удаление выбросов данных
- Выявление трендов во времени и пространстве
- Выявление закономерностей, связанных с целью
- Создание гипотез и проверка их с помощью экспериментов
- Определение новых источников данных
Типы исследовательского анализа данных
Одномерный анализ. Результатом является одна переменная, и все собранные данные предназначены для нее. Причинно-следственной связи нет вообще.
Двумерный анализ. Результат зависит от двух переменных, в то время как связь с ним сравнивается с двумя переменными.
Многомерный анализ. Результат - это больше, чем два. Анализ данных проводится по переменным, которые могут быть числовыми или категориальными. Результат анализа может быть представлен в числовых значениях, визуализации или графической форме.
Ключевые концепции EDA
Прежде чем углубляться в детали того, как выполнять EDA, важно понять некоторые ключевые концепции, которые лежат в его основе.
Очистка данных
Очистка данных - это процесс выявления и исправления ошибок, неточностей и несоответствий в данных. Это важный шаг в процессе EDA, поскольку он гарантирует, что анализ основан на точных и надежных данных.
Некоторые распространенные методы очистки данных включают удаление дубликатов, обработку пропущенных значений и исправление несогласованных форматов данных. Например, если набор данных содержит недостающие значения, вы можете либо удалить эти строки, либо заполнить их разумной оценкой.
Визуализация данных
Визуализация данных является важнейшим аспектом EDA, поскольку она помогает выявить закономерности, тенденции и взаимосвязи внутри данных. Это включает в себя создание диаграмм, графиков и других визуальных представлений данных, которые могут быть легко поняты как технической, так и нетехнической аудиторией.
Некоторые распространенные типы визуализации данных включают гистограммы, точечные диаграммы и тепловые карты. Например, точечная диаграмма может быть использована для визуализации взаимосвязи между двумя переменными, в то время как гистограмма может быть использована для визуализации распределения одной переменной.
Анализ данных
Анализ данных - это процесс использования статистических и математических методов для извлечения информации из данных. Это включает в себя выявление закономерностей, тенденций и взаимосвязей внутри данных, а также составление прогнозов и выводов на основе этих данных.
Некоторые распространенные методы анализа данных включают регрессионный анализ, проверку гипотез и кластеризацию. Например, регрессионный анализ может быть использован для выявления взаимосвязи между двумя переменными, в то время как проверка гипотез может быть использована для определения того, является ли конкретная гипотеза статистически значимой.
Лучшие практики для EDA
При выполнении EDA существует несколько рекомендаций, которым вы должны следовать, чтобы гарантировать точность и надежность вашего анализа.
- Начните с четкого вопроса или гипотезы
Прежде чем начать свой анализ, важно иметь четкий вопрос или гипотезу, на которые вы пытаетесь ответить. Это поможет направить ваш анализ и убедиться, что вы сосредоточены на наиболее релевантных аспектах данных.
Например, если вы анализируете набор данных о поведении клиентов, вы можете начать с того, что зададите такие вопросы, как "Какие факторы стимулируют покупки клиентов?" или "Каковы ключевые факторы лояльности клиентов?"
- Сохраняйте непредубежденность
Хотя важно иметь четкий вопрос или гипотезу, также важно сохранять непредвзятость и быть готовым исследовать неожиданные идеи или закономерности в данных. Это часто может привести к новым и ценным выводам, которые, возможно, не рассматривались бы иначе.
- Используйте несколько методов анализа
Чтобы убедиться, что ваш анализ является надежным, важно использовать несколько методов анализа. Это может включать как количественные, так и качественные методы, такие как статистический анализ, визуализация данных и интервью с экспертами.
- Документируйте процесс анализа
Наконец, важно задокументировать процесс вашего анализа, чтобы убедиться, что ваши результаты воспроизводимы и прозрачны. Это может включать ведение подробного учета используемых методов очистки и анализа данных, а также любых допущений или ограничений анализа.
Пример: EDA в наборе данных Titanic
Этот набор данных содержит информацию о пассажирах "Титаника", включая их демографические данные, класс билета и статус выжившего. Цель этого набора данных - предсказать, какие пассажиры пережили крушение "Титаника", основываясь на заданных характеристиках.
- Загрузка данных
Для начала мы загрузим набор данных Titanic из Kaggle в Pandas DataFrame:
import pandas as pd
titanic_df = pd.read_csv('train.csv')
Этот код считывает набор данных Titanic из CSV-файла и сохраняет его в фрейме данных Pandas под названием titanic_df.
- Понимание данных
Следующим шагом в EDA является получение базового представления о данных путем изучения их характеристик, таких как размер и форма набора данных, типы данных каждого столбца и сводная статистика переменных.
print(titanic_df.shape)
print(titanic_df.dtypes)
print(titanic_df.describe())
Первая строка кода выводит размер и форму набора данных, который показывает, что в наборе данных Titanic имеется 891 строка и 12 столбцов.
Вторая строка кода выводит типы данных каждого столбца, что показывает, что в наборе данных есть как числовые, так и категориальные переменные.
Третья строка кода выводит сводную статистику числовых переменных в наборе данных, включая количество, среднее значение, стандартное отклонение, минимальные и максимальные значения для каждой переменной. Из этих данных мы можем видеть, что средний возраст пассажиров "Титаника" составлял 29,7 года, и что большинство пассажиров (75%) путешествовали без родителей или детей.
- Очистка данных
После получения базового представления о данных следующим шагом является очистка данных путем устранения любых отсутствующих или ошибочных значений, удаления дубликатов данных и преобразования данных в формат, подходящий для анализа.
Одной из распространенных проблем с наборами данных являются отсутствующие значения. Мы можем использовать функцию isnull()
для определения недостающих значений в наборе данных Titanic:
print(titanic_df.isnull().sum())
Этот код выводит количество пропущенных значений для каждого столбца в наборе данных. Из этого вывода мы можем видеть, что в столбце "Возраст" отсутствует 177 значений, в столбце "Каюта" - 687 значений, а в столбце "Отправлено" - 2 значения.
Мы также можем удалить столбцы, которые содержат большое количество пропущенных значений, например столбец Cabin:
titanic_df.drop(columns=['Cabin'], inplace=True)
Этот код удаляет столбец Cabin с помощью функции drop()
и параметра inplace=True, который изменяет DataFrame на месте.
Наконец, мы можем преобразовывать категориальные переменные в числовые переменные, используя такие методы, как одностороннее кодирование. Например, мы можем создать фиктивные переменные для столбца Sex:
sex_dummies = pd.get_dummies(titanic_df['Sex'], prefix='Sex')
titanic_df = pd.concat([titanic_df, sex_dummies], axis=1)
Этот код создает фиктивные переменные для столбца Sex с помощью функции get_dummies()
, а затем объединяет фиктивные переменные с исходным фреймом данных с помощью функции concat()
и параметра axis=1.
- Визуализация данных
После того, как данные были очищены и подготовлены, следующим шагом является визуализация данных с помощью различных диаграмм и графиков, чтобы понять их характеристики.
Одна из самых важных вещей, которые следует понимать в наборе данных "Титаника", - это выживаемость пассажиров. Мы можем создать столбчатую диаграмму для визуализации уровня выживаемости в зависимости от пола:
import matplotlib.pyplot as plt
survived = titanic_df.groupby('Sex')['Survived'].sum()
total = titanic_df.groupby('Sex')['Survived'].count()
survival_rate = survived/total
plt.bar(survival_rate.index, survival_rate.values)
plt.title('Survival Rate by Gender')
plt.xlabel('Gender')
plt.ylabel('Survival Rate')
plt.show()
Этот код вычисляет коэффициент выживаемости для каждого пола, а затем создает столбчатую диаграмму для визуализации результатов. Из этой диаграммы мы можем видеть, что выживаемость женщин была намного выше, чем выживаемость мужчин.
Мы также можем создать гистограмму для визуализации распределения возрастов пассажиров:
plt.hist(titanic_df['Age'], bins=20)
plt.title('Distribution of Passenger Ages')
plt.xlabel('Age')
plt.ylabel('Frequency')
plt.show()
Этот код создает гистограмму с 20 ячейками для визуализации распределения возрастов пассажиров. Из этой диаграммы мы видим, что большинству пассажиров было от 20 до 40 лет.
- Анализируя данные
Заключительным шагом в процессе EDA является анализ данных и извлечение из них информации. Один из способов сделать это - создать корреляционную матрицу для определения взаимосвязей между различными переменными в наборе данных:
import seaborn as sns
corr_matrix = titanic_df.corr()
sns.heatmap(corr_matrix, annot=True)
plt.title('Correlation Matrix')
plt.show()
Этот код создает корреляционную матрицу с помощью функции corr()
из Pandas, а затем визуализирует ее с помощью тепловой карты из библиотеки Seaborn. Из этой диаграммы мы можем видеть, что существует сильная отрицательная корреляция между классом пассажиров и выживаемостью, а это означает, что у пассажиров более высоких классов было больше шансов выжить. Мы также можем видеть сильную положительную корреляцию между количеством братьев и сестер/супругов на борту и количеством родителей/детей на борту, что указывает на то, что семьи, как правило, путешествуют вместе.
Заключение
EDA — это мощный инструмент, который можно использовать для извлечения ценных сведений из данных, и, следуя рекомендациям, изложенным в этой статье, аналитики могут обеспечить точность, надежность и прозрачность своего анализа.