跳到主要内容10 款 Python 自动探索性数据分析工具推荐 | 极客日志PythonAI算法
10 款 Python 自动探索性数据分析工具推荐
本文介绍了 10 款用于 Python 自动探索性数据分析(EDA)的工具库,包括 DTale、Pandas-Profiling、Sweetviz、AutoViz、Dataprep、Klib、dabl、SpeedML、DataTile 和 edaviz。文章详细阐述了各工具的核心功能、安装方法及代码示例,涵盖了从交互式可视化、HTML 报告生成到机器学习预处理的不同需求。通过对比分析,帮助数据科学家根据具体场景选择合适的自动化工具,以提高数据探索效率和模型开发速度。
晚风叙旧2 浏览 10 款 Python 自动探索性数据分析工具推荐
引言
探索性数据分析(Exploratory Data Analysis, EDA)是数据科学模型开发和数据集研究的重要组成部分。在拿到一个新数据集时,首先就需要花费大量时间进行 EDA 来研究数据集中内在的信息,包括数据分布、缺失值情况、异常值检测以及特征之间的相关性等。
传统的 EDA 往往需要编写大量的代码来生成统计报表和可视化图表,效率较低。自动化的 EDA Python 包可以用几行代码执行完整的 EDA 流程,快速生成报告并提供初步的数据洞察。本文整理了 10 个可以自动执行 EDA 并生成有关数据的见解的 Python 包,详细介绍它们的功能、安装方式及适用场景。
1. DTale
DTale 是一个用于 Pandas DataFrame 的交互式可视化工具。它使用 Flask 作为后端、React 作为前端,并且可以与 Jupyter Notebook 和终端无缝集成。
- 支持 Pandas 的 DataFrame, Series, MultiIndex, DatetimeIndex 和 RangeIndex。
- 提供交互式的表格视图,支持排序、过滤和搜索。
- 自动生成包含数据集概览、相关性分析、图表和热力图的报告。
- 突出显示缺失值和异常值。
import dtale
import pandas as pd
dtale.show(pd.read_csv("titanic.csv"))
DTale 库用一行代码就可以生成一个报告,其中包含数据集、相关性、图表和热图的总体总结。D-Tale 还可以为报告中的每个图表进行分析,图表是可以进行交互操作的,例如点击图例隐藏/显示系列。
2. Pandas-Profiling
Pandas-Profiling(现更名为 ydata-profiling)可以生成 Pandas DataFrame 的概要报告。它扩展了 pandas DataFrame,调用 df.profile_report() 方法即可。
- 在大型数据集上工作得非常好,几秒钟内创建报告。
- 生成详细的 HTML 报告,包含变量类型、数值统计、缺失值、相关性矩阵等。
- 支持自定义配置报告内容。
pip install pandas-profiling
import pandas as pd
from pandas_profiling import ProfileReport
profile = ProfileReport(pd.read_csv('titanic.csv'), explorative=True)
profile.to_file("output.html")
3. Sweetviz
Sweetviz 是一个开源的 Python 库,只需要两行 Python 代码就可以生成漂亮的可视化图,将 EDA 作为一个 HTML 应用程序启动。Sweetviz 包是围绕快速可视化目标值和比较数据集构建的。
- 快速生成 HTML 报告。
- 支持对比两个数据集(如训练集和测试集)。
- 包含目标变量分析、相关性分析和特征重要性。
import pandas as pd
import sweetviz as sv
sweet_report = sv.analyze(pd.read_csv("titanic.csv"))
sweet_report.show_html('sweet_report.html')
Sweetviz 库生成的报告包含数据集、相关性、分类和数字特征关联等的总体总结,界面美观且易于阅读。
4. AutoViz
AutoViz 包可以用一行代码自动可视化任何大小的数据集,并自动生成 HTML、Bokeh 等报告。用户可以与 AutoViz 包生成的 HTML 报告进行交互。
- 自动化可视化,无需指定列名或类型。
- 支持大规模数据处理。
- 输出交互式 HTML 报告。
import pandas as pd
from autoviz.AutoViz_Class import AutoViz_Class
autoviz = AutoViz_Class().AutoViz('train.csv', sep=',', depVar='', dfte=False)
AutoViz 非常适合快速浏览数据,特别是当不确定数据格式时。
5. Dataprep
Dataprep 是一个用于分析、准备和处理数据的开源 Python 包。DataPrep 构建在 Pandas 和 Dask DataFrame 之上,可以很容易地与其他 Python 库集成。
- 运行速度极快,能在几秒钟内为 Pandas/Dask DataFrame 生成报告。
- 支持数据清洗和预处理建议。
- 提供丰富的可视化选项。
from dataprep.datasets import load_dataset
from dataprep.eda import create_report
df = load_dataset("titanic.csv")
create_report(df).show_browser()
Dataprep 是目前列表中运行速度最快的工具之一,适合对性能有要求的场景。
6. Klib
Klib 是一个用于导入、清理、分析和预处理数据的 Python 库。它提供了许多专门针对数据科学任务的绘图和分析函数。
- 专注于缺失值、相关性、分布和分类变量的可视化。
- 提供高度定制化的分析函数。
- 虽然不如其他工具全自动,但在需要定制化分析时非常方便。
import klib
import pandas as pd
df = pd.read_csv('DATASET.csv')
klib.missingval_plot(df)
klib.corr_plot(df_cleaned, annot=False)
klib.dist_plot(df_cleaned['Win_Prob'])
klib.cat_plot(df, figsize=(50,15))
Klib 虽然提供了很多的分析函数,但是对于每一个分析需要我们手动编写代码,所以只能说是半自动化的操作,但是如果我们需要更定制化的分析,它是非常方便的。
7. Dabl
Dabl (Data Analysis Baseline Library) 不太关注单个列的统计度量,而是更多地关注通过可视化提供快速概述,以及方便的机器学习预处理和模型搜索。
- 自动识别数据类型(分类、数值、时间序列)。
- 提供目标分布图、散点图、线性判别分析等。
- 内置简单的机器学习基线模型。
import pandas as pd
import dabl
df = pd.read_csv("titanic.csv")
dabl.plot(df, target_col="Survived")
Dabl 特别适合在建模前快速评估数据质量和特征与目标的关系。
8. SpeedML
SpeedML 是用于快速启动机器学习管道的 Python 包。SpeedML 整合了一些常用的 ML 包,包括 Pandas, Numpy, Sklearn, Xgboost 和 Matplotlib。
- 不仅仅包含自动化 EDA 的功能,还包含数据预处理和建模。
- 基于迭代进行开发,旨在缩短编码时间。
- 提供标准化的数据处理流程。
from speedml import Speedml
sml = Speedml('../input/train.csv', '../input/test.csv',
target='Survived', uid='PassengerId')
sml.train.head()
sml.plot.correlate()
sml.plot.distribute()
sml.plot.ordinal('Parch')
sml.plot.continuous('Age')
SpeedML 整合的东西比较多,单独使用它进行 EDA 分析不是特别的适用,但它在构建完整机器学习流水线时非常高效。
9. DataTile
DataTile(以前称为 Pandas-Summary)是一个开源的 Python 软件包,负责管理、汇总和可视化数据。DataTile 基本上是 Pandas DataFrame describe() 函数的扩展。
- 提供更丰富的描述性统计信息。
- 生成结构化的摘要报告。
- 轻量级,依赖少。
import pandas as pd
from datatile.summary.df import DataFrameSummary
df = pd.read_csv('titanic.csv')
dfs = DataFrameSummary(df)
dfs.summary()
DataTile 适合需要快速获取 DataFrame 基础统计信息的场景。
10. edaviz
edaviz 是一个可以在 Jupyter Notebook 和 Jupyter Lab 中进行数据探索和可视化的 Python 库。它原本设计用于增强 Notebook 的体验,但后来被 Databricks 收购并整合到 bamboolib 中,因此目前不再作为独立项目维护。
- 在 Notebook 环境中直接编辑和可视化数据。
- 提供类似 Excel 的交互体验。
现状说明:
由于该库已被整合进其他生态,建议在新项目中考虑使用上述其他活跃维护的工具替代。
总结与对比
在本文中,我们介绍了 10 个自动探索性数据分析 Python 软件包,这些软件包可以在几行 Python 代码中生成数据摘要并进行可视化。通过自动化的工作可以节省我们的很多时间。
- Dataprep:如果你追求速度和全面的报告,这是最常用的 EDA 包。
- Sweetviz / DTale:如果你需要美观的 HTML 报告或交互式表格,这两个也是不错的选择。
- Klib:如果你需要定制化分析,或者想自己控制绘图细节,可以使用 Klib。
- SpeedML:如果你的目标是快速搭建机器学习管道,而不仅仅是 EDA,SpeedML 整合的功能比较多。
- edaviz:由于已停止独立更新,建议暂时不考虑。
不同的工具各有侧重,开发者可以根据个人喜好和项目需求进行选择。其实都还是很好用的,关键在于理解每种工具的输出形式是否满足你的分析习惯。
常见安装命令汇总
为了方便大家使用,以下列出所有工具的 pip 安装命令:
pip install dtale
pip install pandas-profiling
pip install sweetviz
pip install autoviz
pip install dataprep
pip install klib
pip install dabl
pip install speedml
pip install datatile
注意:部分库可能依赖较多,建议在虚拟环境中安装以避免冲突。
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online