10 библиотек Python для автоматического разведочного анализа данных
Разведочный анализ данных (EDA) является важнейшим шагом в разработке модели Data science и исследовании наборов данных. EDA включает в себя изучение, анализ и обобщение фундаментальных характеристик наборов данных для получения представления о внутренней информации, содержащейся в них. Для оптимизации процесса EDA доступны библиотеки Python, которые автоматизируют задачи EDA и генерируют аналитические данные всего несколькими строками кода. Эти библиотеки предлагают такие функциональные возможности, как визуализация данных, сводные отчеты, корреляционный анализ и манипулирование данными. Известные библиотеки Python для автоматизированного EDA:
- D-Tale
- Pandas-profiling
- Sweetviz
- Autoviz
- dataprep
- KLib
- dabl
- speedML
- data tile
- Bamboolib
- D-Tale
D-Tale – это библиотека Python, которая предоставляет интерактивный и удобный интерфейс для визуализации и анализа структур данных Pandas. Она использует Flask в качестве серверной части и React в качестве интерфейса, что упрощает просмотр и изучение фреймов данных Pandas, объектов Series, MultiIndex, DatetimeIndex и RangeIndex. Она легко интегрируется с Jupyter, терминалами Python и ipython.
Для создания отчёта с помощью D-Tale можно использовать одну строку кода. Отчёт содержит общую сводку набора данных, корреляции, графики и тепловые карты, а также выделяет недостающие значения. Диаграммы в отчёте являются интерактивными, позволяя вам исследовать и анализировать данные.
import dtale
import pandas as pd
# Load your dataset into a Pandas DataFrame
df = pd.read_csv('your_dataset.csv')
# Generate a report using D-Tale
dtale.show(df)
При запуске этого кода будет запущен веб-интерфейс D-Tale, отображающий сгенерированный отчёт. Вы можете изучить различные разделы отчёта, такие как сводка, корреляции, графики и тепловые карты. Интерфейс предоставляет интерактивные элементы управления для масштабирования, панорамирования, фильтрации и дальнейшего анализа данных.
D-Tale предоставляет мощный и интуитивно понятный способ выполнения поискового анализа данных в структурах данных Pandas с минимальным количеством кода. Это упрощает рабочий процесс поиска данных и позволяет вам более эффективно получать информацию и принимать решения, основанные на данных.
Примечание: Перед запуском приведённого выше фрагмента кода убедитесь, что вы установили библиотеку D-Tale с помощью pip или conda.
2. Pandas-profiling
Pandas-Profiling – это библиотека Python, которая предоставляет всеобъемлющий сводный отчёт о фрейме данных Pandas, предлагая подробную информацию и анализ данных. С помощью всего одной строки кода вы можете сгенерировать отчёт, включающий описательную статистику, проверки качества данных, корреляции, распределения, пропущенные значения и многое другое. Библиотека предназначена для эффективной работы даже с большими наборами данных, генерируя отчёты за считанные секунды.
Чтобы использовать Pandas-Profiling и сгенерировать сводный отчёт для фрейма данных, вам необходимо выполнить следующие действия:
A) Установите библиотеку Pandas-Profiling с помощью pip или conda:
pip install pandas-profiling
Б) Импортируйте необходимые библиотеки:
import pandas as pd
from pandas_profiling import ProfileReport
C) Загрузите свой набор данных в фрейм данных Pandas:
df = pd.read_csv('your_dataset.csv')
D) Сгенерируйте отчёт профиля:
profile = ProfileReport(df)
E) При желании вы можете настроить заголовок отчета:
profile = ProfileReport(df, title='Pandas Profiling Report')
F) Визуализируйте отчёт в виде HTML-файла:
profile.to_file("report.html")
Выполнение приведённого выше кода сгенерирует подробный итоговый отчёт в формате HTML, который можно открыть в веб-браузере. Отчёт будет содержать информацию о структуре набора данных, типах данных, статистических показателях, категориальных переменных, корреляциях, отсутствующих значениях и многом другом.
3. Sweetviz
Sweetviz – это библиотека Python с открытым исходным кодом, которая упрощает процесс разведочного анализа данных (EDA), создавая красивые визуализации и сводные отчёты всего несколькими строками кода. Это позволяет вам быстро получить представление о вашем наборе данных, сравнить наборы данных и проанализировать целевые значения.
Чтобы использовать Sweetviz и сгенерировать отчёт для вашего набора данных, выполните следующие действия:
A) Установите библиотеку Sweetviz с помощью pip:
pip install sweetviz
Б) Импортируйте необходимые библиотеки:
import pandas as pd
import sweetviz as sv
C) Загрузите свой набор данных в фрейм данных Pandas:
df = pd.read_csv('your_dataset.csv')
D) Сгенерируйте отчёт EDA:
report = sv.analyze(df)
E) Отобразите отчёт в HTML-приложении:
report.show_html("report.html")
Выполнение приведённого выше кода сгенерирует HTML-отчёт с именем “report.html”, который содержит общую сводку вашего набора данных, включая визуализации, статистические показатели, корреляции и ассоциации между категориальными и числовыми признаками. В отчёте будет представлена информация о структуре набора данных, отсутствующих значениях, распределении переменных и многом другом.
Библиотека Sweetviz призвана сделать EDA быстрее и доступнее за счёт автоматизации создания наглядных визуализаций и сводных отчётов. Используя Sweetviz, вы можете сэкономить время и усилия при ручном создании отдельных визуализаций и сводной статистики, что позволит вам сосредоточиться на анализе шаблонов и взаимосвязей в ваших данных.
4. Autoviz
AutoViz – это библиотека Python, предоставляющая возможности автоматической визуализации данных, позволяющая пользователям визуализировать наборы данных любого размера всего одной строкой кода. Программа автоматически генерирует отчёты в различных форматах, включая HTML и Bokeh, и позволяет пользователям взаимодействовать с созданными HTML-отчетами.
from autoviz.AutoViz_Class import AutoViz_Class
# Create an instance of AutoViz_Class
AV = AutoViz_Class()
# Generate visualizations for your dataset
report = AV.AutoViz(
filename='',
sep=',',
depVar='',
dfte=df,
header=0,
verbose=0,
lowess=False,
chart_format='html',
max_rows_analyzed=150000,
max_cols_analyzed=30
)
В приведённом выше коде обязательно замените 'your_dataset.csv'
на путь к файлу вашего набора данных. Метод AutoViz
принимает несколько параметров, в том числе filename
(имя файла набора данных), sep
(разделитель, используемый в наборе данных), depVar
(зависимая переменная, если применимо), dfte
(Фрейм данных Pandas), header
(информация заголовка), verbose
(уровень детализации), lowess
(использовать ли сглаживание по умолчанию), chart_format
(формат вывода, ‘html’ в этом примере), max_rows_analyzed
(максимальное количество строк для анализа) и max_cols_analyzed
(максимальное количество столбцов для анализа).
Запуск кода автоматически сгенерирует визуализации для вашего набора данных с помощью AutoViz. Результирующий отчёт будет сохранён в виде HTML-файла, который можно открыть в веб-браузере. Отчёт в формате HTML будет содержать интерактивные диаграммы и визуализации, с которыми пользователи смогут взаимодействовать для изучения и анализа данных.
AutoViz упрощает процесс визуализации данных, автоматически выбирая подходящие визуализации на основе характеристик набора данных. Это устраняет необходимость ручного кодирования и настройки отдельных визуализаций, экономя время и усилия.
5. dataprep
DataPrep – это библиотека Python с открытым исходным кодом, которая предоставляет функциональные возможности для анализа, подготовки и обработки данных. Она построен поверх Pandas и Dask DataFrame, что делает её легко интегрируемым с другими библиотеками Python.
from dataprep.eda import create_report
from dataprep.datasets import load_dataset
# Load a sample dataset
df = load_dataset('titanic')
# Generate an EDA report
report = create_report(df)
# Show the report
report.show()
В приведённом выше коде мы сначала импортируем функцию create_report
из модуля dataprep.eda
. Мы также импортируем функцию load_dataset
из dataprep.datasets
, чтобы загрузить образец набора данных для демонстрационных целей. Вы можете заменить 'titanic'
на имя вашего набора данных или указать путь к вашему собственному файлу набора данных.
Затем мы загружаем набор данных с помощью функции load_dataset
, которая возвращает фрейм данных Pandas. Затем мы вызываем функцию create_report
, передавая фрейм данных в качестве аргумента. Эта функция генерирует отчет о комплексном разведочном анализе данных (EDA) для набора данных.
Наконец, мы используем метод show
для отображения сгенерированного отчёта. Отчёт будет содержать различные статистические анализы, визуализации и информацию о наборе данных.
Модуль EDA DataPrep разработан таким образом, чтобы быть быстрым, позволяя вам разобраться в наборе данных за считанные секунды. Он использует оптимизированные вычисления на основе Dask для достижения значительного повышения скорости по сравнению с традиционными инструментами профилирования на основе Pandas. Сгенерированный отчёт предоставляет интерактивные визуализации и статистику, которые помогают вам получить представление о ваших данных.
6. KLIB
KLib – это библиотека Python, которая предоставляет возможности автоматического разведочного анализа данных (EDA) и профилирования данных. Она предлагает различные функции и визуализации для быстрого изучения и анализа наборов данных. KLib стремится упростить процесс EDA и сделать его более доступным.
import klib
import pandas as pd
# Load the dataset
df = pd.read_csv('your_dataset.csv')
# Visualize categorical features
klib.cat_plot(df)
# Calculate and visualize correlation matrix
klib.corr_mat(df)
# Visualize correlation heatmap
klib.corr_plot(df)
# Visualize distribution plots for numeric features
klib.dist_plot(df)
# Generate a report on missing values
klib.missingval_plot(df)
В приведённом выше коде мы сначала импортируем библиотеки klib
и pandas
. Затем мы загружаем ваш набор данных с помощью функции read_csv
, заменяя 'your_dataset.csv'
на путь или имя файла вашего набора данных.
Далее мы используем различные функции из KLib для выполнения задач EDA. Вот некоторые из них:
cat_plot
: Эта функция генерирует визуализацию количества и частоты категориальных объектов в наборе данных.corr_mat
: Эта функция вычисляет корреляционную матрицу для всех числовых объектов и возвращает её представление в цветовой кодировке.corr_plot
: Эта функция генерирует тепловую карту с цветовой кодировкой для корреляций между объектами в наборе данных.dist_plot
: Эта функция генерирует графики распределения для всех числовых объектов в наборе данных.missingval_plot
: Эта функция генерирует рисунок, содержащий информацию об отсутствующих значениях в наборе данных.
Вы можете настроить фрагмент кода на основе ваших конкретных требований и изучить другие функции, предоставляемые KLib, для выполнения дополнительных анализов и визуализаций.
7. dabl (Data Analysis Baseline Library)
Dabl (Data Analysis Baseline Library) – библиотека Python, предназначенная для автоматизации процесса предварительной обработки данных, выбора функций и оценки модели. Она предоставляет высокоуровневый интерфейс для выполнения разведочного анализа данных (EDA) и быстрого построения базовых моделей.
Функция plot()
в Dabl используется для создания различных визуализаций. Она предлагает краткий обзор с помощью визуализаций, а не фокусируется на статистических показателях отдельных столбцов.
import dabl
import matplotlib.pyplot as plt
# Load the dataset
data = dabl.datasets.load_boston()
# Plot the target distribution
dabl.plot(data, target_col='target')
# Generate scatterplot
dabl.plot(data, 'RM', 'target', kind='scatter')
# Apply Linear Discriminant Analysis
dabl.plot(data, target_col='target', kind='lda')
plt.show()
В приведённом выше коде мы сначала импортируем библиотеку dabl
и модуль matplotlib.pyplot
. Затем мы загружаем набор данных с помощью функции load_boston()
из модуля dabl.datasets
, но вы можете заменить его своим собственным набором данных.
Далее мы используем функцию plot()
из Dabl для создания различных визуализаций. Вот некоторые из них:
dabl.plot(data, target_col='target')
: Это отображает карту целевого распределения, предоставляющую обзор распределения целевой переменной.dabl.plot(data, 'RM', 'target', kind='scatter')
: Это генерирует диаграмму рассеяния между функцией ‘RM’ и целевой переменной.dabl.plot(data, target_col='target', kind='lda')
: Это применяет линейный дискриминантный анализ (LDA) к набору данных и визуализирует результаты.
Вы можете настроить фрагмент кода на основе вашего конкретного набора данных и требований к визуализации. Dabl предоставляет несколько других вариантов визуализации, и вы можете ознакомиться с ними в официальной документации.
8. SpeedML
SpeedML – это библиотека Python, целью которой является ускорение процесса разработки конвейера машинного обучения. Она объединяет часто используемые пакеты ML, такие как Pandas, NumPy, Scikit-learn, XGBoost и Matplotlib. Хотя SpeedML предоставляет функциональные возможности для автоматизированного EDA, она предлагает гораздо больше.
from speedml import Speedml
import numpy as np
# Initialize Speedml with train and test datasets
sml = Speedml('train.csv', 'test.csv', target='Survived', uid='PassengerId')
# Get the shape of the datasets
sml.shape()
# Configure overfit threshold
sml.configure('overfit_threshold', np.sqrt(sml.train.shape[0]) / sml.train.shape[0])
# Perform Exploratory Data Analysis (EDA)
sml.eda()
# Plot correlation matrix
sml.plot.correlate()
# Plot distribution of features
sml.plot.distribute()
# Plot continuous feature
sml.plot.continuous('Fare')
# Handle outliers in a feature
sml.feature.outliers('Fare', upper=98)
# Plot ordinal feature
sml.plot.ordinal('SibSp')
# Perform feature engineering
sml.feature.extract(['Age', 'Name'], kind='title', new_column=True)
# Preprocess the data
sml.preprocess()
# Train a model
sml.model.train()
# Predict using the trained model
sml.model.predict()
# Evaluate the model
sml.model.evaluate()
# Generate submission file
sml.model.submission('submission.csv')
В приведённом выше коде мы сначала импортируем класс Speedml
из модуляspeedml
. Затем мы инициализируем sml
пути к тестовым и тренировочным наборам данных, целевой столбец (‘Survived’) и столбец уникального идентификатора (‘PassengerId’).
Мы выполняем различные операции с помощью SpeedML:
sml.shape()
: Этот метод отображает форму (количество строк и столбцов) обучающих и тестовых наборов данных.sml.configure('overfit_threshold', np.sqrt(sml.train.shape[0]) / sml.train.shape[0])
: Это настраивает порог превышения на основе размера обучающего набора данных.sml.eda()
: Это выполняет поисковый анализ данных, включая вменение отсутствующих значений, обнаружение выбросов и разработку функций.sml.plot.correlate()
: Здесь строится матрица корреляции объектов.sml.plot.distribute()
: Здесь показано распределение функций.sml.plot.continuous('Fare')
: Здесь показано распределение функции ‘Fare’.sml.feature.outliers('Fare', upper=98)
: Это обрабатывает отклонения в функции ‘Fare’.sml.plot.ordinal('SibSp')
: Здесь отображается порядковый номер функции ‘SibSp’.sml.feature.extract(['Age', 'Name'], kind='title', new_column=True)
: При этом выполняется извлечение объекта из объектов “Age” и “Name”, создавая новый столбец.sml.preprocess()
: Это предварительная обработка данных, включая обработку пропущенных значений, кодирование категориальных объектов и масштабирование числовых объектов.sml.model.train()
: Это обучает модель машинного обучения с использованием предварительно обработанных данных.sml.model.predict()
: Это генерирует прогнозы с использованием обученной модели.sml.model.evaluate()
: Это оценивает производительность модели.sml.model.submission('submission.csv')
: Создаётся файл заявки на участие в конкурсе Kaggle.
9. DataTile (Pandas-summary)
Это расширение функции describe()
в Pandas DataFrame. Упоминаются некоторые библиотеки, такие как datatile
и dtale
, которые предоставляют функциональные возможности для обработки, обобщения и визуализации данных на Python. Однако они не имеют прямого отношения к расширению функции describe()
.
import pandas as pd
# Create a sample DataFrame
data = {
'Name': ['John', 'Jane', 'Mike', 'Emily', 'Chris'],
'Age': [25, 32, 28, 19, 36],
'Salary': [50000, 75000, 60000, 45000, 80000]
}
df = pd.DataFrame(data)
# Use the describe() function to summarize the DataFrame
summary = df.describe()
# Print the summary
print(summary)
Результат:
Age Salary
count 5.000000 5.000000
mean 28.000000 62000.000000
std 6.082763 13601.384686
min 19.000000 45000.000000
25% 25.000000 50000.000000
50% 28.000000 60000.000000
75% 32.000000 75000.000000
max 36.000000 80000.000000
10. Bamboolib
Bamboolib – это инструмент с низким уровнем кода, предоставляющий графический интерфейс для pandas, популярной библиотеки обработки данных Python. Он позволяет пользователям получать доступ к данным, обрабатывать их, преобразовывать, исследовать, визуализировать и анализировать без необходимости написания сложного кода. С помощью bamboolib вы можете выполнять такие задачи, как загрузка данных из разных источников, очистка и упорядочивание данных, а также создание интерактивных визуализаций.
Чтобы установить bamboolib, вы можете использовать следующий фрагмент кода в Jupyter:
%pip install bamboolib
После установки вы можете импортировать bamboolib и начать его использовать.
import bamboolib as bam
# Create a pandas DataFrame (example)
import pandas as pd
data = {
'Name': ['John', 'Jane', 'Bob'],
'Age': [25, 30, 35],
'City': ['New York', 'London', 'Paris']
}
df = pd.DataFrame(data)
# Open bamboolib GUI for the DataFrame
bam.show(df)
Приведённый выше фрагмент кода демонстрирует простое использование bamboolib. После установки библиотеки вы можете импортировать её и загрузить свои данные в фрейм данных pandas. Затем с помощью bam.show(df)
вы можете открыть графический интерфейс bamboolib, который позволяет вам интерактивно исследовать данные и манипулировать ими.
Дальнейшее изучение
Заключение
В этой статье мы представляем 10 библиотек Python для автоматического разведочного анализа данных (EDA). Эти библиотеки могут генерировать сводки данных и визуализации всего несколькими строками кода на Python, экономя значительное количество времени. Среди этих библиотек Dataprep является наиболее часто используемой библиотекой EDA, в то время как AutoViz и D-table также являются хорошими вариантами. Если вам требуется индивидуальный анализ, Klib может быть подходящим выбором. Однако SpeedML, хотя и объединяет множество функциональных возможностей, сама по себе может быть не особенно подходящей для анализа EDA. Выбор других библиотек может основываться на личных предпочтениях, поскольку они всё ещё очень полезны.