sweetviz

sweetviz

快速生成数据分析可视化报告的Python库

Sweetviz是一个开源Python库,能够快速生成探索性数据分析(EDA)可视化报告。该库只需两行代码即可创建高密度的数据可视化,包括目标值分析、数据集比较和特征分析。Sweetviz支持混合类型关联和自动类型推断,可输出独立HTML应用,兼容Jupyter和Colab等环境。它还集成了Comet.ml功能,方便记录生成的报告。这个工具能帮助数据科学家和分析师迅速了解数据集特征及其相互关系。

Sweetviz数据分析可视化Python库EDAGithub开源项目

v v

更新(2023年11月)- 版本2.3.0:添加详细程度参数,修复长期存在的问题


Sweetviz标志

只需两行代码即可进行深入的探索性数据分析(EDA)(目标分析、比较、特征分析、相关性)

特性

Sweetviz是一个开源Python库,只需两行代码即可生成美观、高密度的可视化,快速启动探索性数据分析(EDA)。输出是一个完全独立的HTML应用程序。

该系统主要围绕快速可视化目标值比较数据集而构建。其目标是帮助快速分析目标特征、训练与测试数据以及其他此类数据特征分析任务。

使用方法和参数描述如下,您还可以在这里找到一篇深入描述其特性的文章,并看到实际示例

**Sweetviz的开发仍在进行中!**如果您遇到任何数据、兼容性或安装问题,请告诉我!感谢您在这里的问题跟踪系统中报告任何错误,我欢迎您对使用/功能的反馈和问题在这里全新的GitHub"讨论"标签中提出

示例与提及

使用泰坦尼克号数据集的示例HTML报告

Colab上带文档的示例笔记本(Jupyter/其他笔记本应该也可以使用)

Medium文章深入描述其特性

KD Nugget文章: KDNuggets KDNuggets

特性

  • 目标分析
    • 展示目标值(如泰坦尼克号数据集中的"生存")与其他特征的关系
  • 可视化和比较
    • 不同数据集(如训练数据与测试数据)
    • 集内特征(如男性与女性)
  • 混合类型关联
    • Sweetviz无缝集成了数值型(皮尔逊相关系数)、分类型(不确定性系数)和分类-数值型(相关比)数据类型的关联,为所有数据类型提供最大信息。
  • 类型推断
    • 自动检测数值、分类和文本特征,可选手动覆盖
  • 摘要信息
    • 类型、唯一值、缺失值、重复行、最频繁值
    • 数值分析:
      • 最小/最大/范围、四分位数、均值、众数、标准差、总和、中位数绝对偏差、变异系数、峰度、偏度

新增与重要更新

  • 2.2版本:针对Python 3.7+和numpy版本的大型兼容性更新
  • 2.1版本:支持Comet.ml
  • 2.0版本:支持Jupyter、Colab和其他笔记本,报告缩放和垂直布局

(有关这些功能的文档,请参见下文)

升级

一些人在通过pip升级时遇到了混合结果的情况。要从现有安装更新到最新版本,建议先pip uninstall sweetviz,然后再简单安装。

安装

Sweetviz 目前支持 Python 3.6+ 和 Pandas 0.25.3+。报告使用基本的 "os" 模块输出,因此尚不支持需要自定义文件操作的特殊环境(如 Google Colab),不过我正在寻找解决方案。

使用 pip

安装 sweetviz 的最佳方式(除了从源代码安装外)是使用 pip:

pip install sweetviz

安装问题及解决方法

在少数情况下,用户报告了诸如 ModuleNotFoundError: No module named 'sweetviz'AttributeError: module 'sweetviz' has no attribute 'analyze' 等错误。 对于这些情况,我们建议采取以下措施:

  • 确保您的脚本中没有名为 sweetviz.py 的文件,因为这会干扰库本身。删除或重命名该脚本(以及任何相关的 .pyc 文件),然后重试。
  • 尝试使用 pip uninstall sweetviz 卸载库,然后重新安装。
  • 问题可能源于使用多个 Python 版本,或操作系统权限。以下 Stack Overflow 文章解决了许多报告的此类问题:文章 1文章 2文章 3
  • 如果以上方法都无效,请在 GitHub 上提交 bug 报告。感谢您花时间反馈,这可能有助于解决您和其他人的问题!

基本用法

创建报告是一个简单的两步过程:

  1. 使用 analyze()compare()compare_intra() 之一创建 DataframeReport 对象
  2. 使用 show_xxx() 函数渲染报告。现在您可以选择使用 htmlnotebook 报告选项,还可以进行缩放:(有关这些选项的更多信息,请参见下文)

Report_Show_Options

步骤 1:创建报告

创建报告有 3 个主要函数:

  • analyze(...)
  • compare(...)
  • compare_intra(...)

分析单个数据框(及其可选目标特征)

要分析单个数据框,只需使用 analyze(...) 函数,然后使用 show_html(...) 函数:

import sweetviz as sv

my_report = sv.analyze(my_dataframe)
my_report.show_html() # 默认参数将生成 "SWEETVIZ_REPORT.html"

运行时,这将在您的默认浏览器中输出一个 1080p 宽屏 html 应用程序: Widescreen demo

可选参数

analyze() 函数可以接受多个其他参数:

analyze(source: Union[pd.DataFrame, Tuple[pd.DataFrame, str]],
            target_feat: str = None,
            feat_cfg: FeatureConfig = None,
            pairwise_analysis: str = 'auto',
            verbosity: str = 'default'):
  • source: 数据框(如示例所示)或包含数据框和要在报告中显示的名称的元组。 例如:my_df[my_df, "Training"]
  • target_feat: 表示要标记为"目标"的特征名称的字符串。目前只有布尔型和数值型特征可以作为目标。
  • feat_cfg: 一个 FeatureConfig 对象,表示要跳过的特征,或在分析中强制指定某种类型的特征。参数可以是单个字符串或字符串列表。参数包括 skipforce_catforce_numforce_text。"force_" 参数会覆盖内置的类型检测。可以如下构造:
feature_config = sv.FeatureConfig(skip="PassengerId", force_text=["Age"])
  • verbosity: [新增] 可以设置为 fullprogress_only(仅显示进度条而不显示报告生成消息)和 off(完全静默,除错误或警告外)。默认详细程度也可以在 INI 覆盖中的 "General" 标题下设置(详见下文 "配置文件" 部分)。
  • pairwise_analysis: 相关性和其他关联可能需要二次时间(n^2)来完成。默认设置("auto")将在不发出警告的情况下运行,直到数据集包含 "association_auto_threshold" 个特征。超过该阈值后,您需要明确传递参数 pairwise_analysis="on"(或 ="off"),因为处理如此多的特征需要很长时间。该参数还包括生成关联图(基于 Drazen Zaric 的概念):

Pairwise sample

比较两个数据框(例如测试集与训练集)

要比较两个数据集,只需使用 compare() 函数。它的参数与 analyze() 相同,只是插入了第二个参数来覆盖比较数据框。建议使用 [dataframe, "name"] 格式的参数,以便更好地区分基础数据框和比较数据框。(例如 [my_df, "Train"]my_df

my_report = sv.compare([my_dataframe, "Training Data"], [test_df, "Test Data"], "Survived", feature_config)

比较同一数据框的两个子集(例如男性与女性)

获得深入洞察的另一种方法是使用比较功能将数据集分成两个子群体。 通过compare_intra()函数内置了对此的支持。该函数将布尔序列作为参数之一,并使用显式的"name"元组来命名生成的(true, false)数据集。请注意,在内部,这会创建2个单独的数据框来表示每个结果组。因此,它更像是手动执行此类处理的简便函数。

my_report = sv.compare_intra(my_dataframe, my_dataframe["Sex"] == "male", ["Male", "Female"], "Survived", feature_config)

第2步:显示报告

创建报告对象后(例如上面示例中的my_report),只需将其传递给两个show函数之一:

show_html()

show_html(  filepath='SWEETVIZ_REPORT.html', 
            open_browser=True, 
            layout='widescreen', 
            scale=None)

show_html(...) 将在给定的文件路径创建并保存HTML报告。有以下选项:

  • layout:可选'widescreen''vertical'。宽屏布局在鼠标悬停在每个特征上时在屏幕右侧显示详细信息。新的(2.0版本)垂直布局在水平方向上更紧凑,并允许点击展开每个详细区域。
  • scale:使用浮点数(例如scale = 0.8None)来缩放整个报告。这对于使报告适应任何输出非常有用。
  • open_browser:启用自动打开Web浏览器以显示报告。由于在某些情况下这是不需要的(或可能导致某些IDE出现问题),您可以在此禁用它。

show_notebook()

show_notebook(  w=None, 
                h=None, 
                scale=None,
                layout='widescreen',
                filepath=None,
                file_layout=None,
                file_scale=None)

show_notebook(...) 是2.0版本的新功能,它将在笔记本(例如Jupyter、Google Colab等)中嵌入一个显示报告的IFRAME元素。

请注意,由于笔记本通常是一个更受限制的视觉环境,因此最好使用自定义的宽度/高度/缩放值(whscale),甚至在INI覆盖中设置自定义默认值(见下文)。选项包括:

  • w(宽度):设置报告输出_窗口_的宽度(完整报告可能不适合;使用layout和/或scale调整报告本身)。可以是百分比字符串(w="100%")或像素数(w=900)。
  • h(高度):设置报告输出_窗口_的高度。可以是像素数(h=700)或"Full"以使窗口高度与所有特征一样高(h="Full")。
  • scale:与上面的show_html()相同。
  • layout:与上面的show_html()相同。
  • filepath:可选的输出HTML报告。
  • file_layout:仅用于可选文件输出的布局(与上面show_html()layout相同)
  • file_scale:仅用于可选文件输出的缩放(与上面show_html()scale相同)

自定义默认值:配置文件

该包包含一个用于配置的INI文件。您可以通过提供自己的文件并在创建报告之前调用以下命令来覆盖任何设置:

sv.config_parser.read("Override.ini")

重要提示#1: 最好在任何其他命令之前加载覆盖,因为许多INI选项在报告生成中使用。

重要提示#2: 在覆盖INI文件中的一组值之前,始终添加标题行(例如[General]),否则您的设置将被忽略。请参见下面的示例。如果设置多个值,只需包含一次[General]行。

最有用的配置覆盖

您可以查看sweetviz_defaults.ini文件以了解可以覆盖的内容(警告:其中很多内容仍在进行中,文档不完善),但最有用的覆盖如下。

默认报告布局、大小

覆盖以下任何一项(通过将它们放在您自己的INI中,再次不要忘记标题),以避免每次执行"show"命令时都必须设置它们:

重要提示:指定百分比时注意使用双'%'

[Output_Defaults]
html_layout = widescreen
html_scale = 1.0
notebook_layout = vertical
notebook_scale = 0.9
notebook_width = 100%%
notebook_height = 700
中文、日语、韩语(CJK)字符支持
[General]
use_cjk_font = 1 

*如果为[General]设置多个值,只包含一次[General]

这将切换图表中的字体以使用兼容CJK的字体。虽然这种字体不太紧凑,但它将消除这些语言的任何警告和"未知字符"符号。

移除Sweetviz标志
[Layout]
show_logo = 0

这将从页面顶部移除Sweetviz标志。

设置默认详细程度
[General]
default_verbosity = off 

*如果为[General]设置多个值,只包含一次[General]

可以设置为fullprogress_only(仅显示进度条但不显示报告生成消息)和off(完全安静,除非出现错误或警告)。

相关性/关联分析

Sweetviz 关联图和分析的一个主要洞察来源和独特特性是它在一个单一图表中统一了:

  • 数值相关性(数值特征之间)
  • 不确定性系数(分类-分类之间)
  • 相关比(分类-数值之间) 成对样本

方块代表与分类特征相关的变量,圆圈代表数值-数值相关性。注意为了清晰起见,对角线上的平凡关系被留空。

重要提示:分类-分类关联(由显示不确定性系数的方块提供)是不对称的,这意味着每一行代表左侧行标题对每一列提供了多少信息。例如,"性别"、"客舱等级"和"票价"是对"生存"提供最多信息的元素。

对于泰坦尼克号数据集,这些信息相当对称,但并非总是如此!

相关性也会在每个特征的详细部分显示,适用时目标值会被突出显示。例如:

关联详情

最后,值得注意的是,这些相关性/关联方法不应被视为绝对真理,因为它们对数据分布和关系的基本假设做出了一些假设。但它们可以作为一个非常有用的起点。

Comet.ml 集成

从2.1版本开始,Sweetviz 现在完全集成了 Comet.ml。这意味着只要您的 API 密钥在环境中正确设置,Sweetviz 将自动记录使用 show_html()show_notebook() 生成的任何报告到您的工作空间。

此外,您还可以使用新函数 report.log_comet(experiment_object) 显式地将报告上传到给定实验的工作空间。

您可以查看一个 Colab 笔记本 示例来生成报告,以及其对应的 Comet.ml 工作空间 中的报告。

Comet 报告参数

您可以通过覆盖配置文件的 [comet_ml_defaults] 部分来自定义 Sweetviz 报告在 Comet 工作空间中的外观。有关使用 INI 覆盖的更多信息,请参见上文。

您可以选择使用 widescreen(水平)或 vertical(垂直)布局,并设置您喜欢的缩放比例,只需在覆盖 INI 文件中添加以下内容:

[comet_ml_defaults]
html_layout = vertical
html_scale = 0.85

故障排除 / 常见问题

  • 安装问题

请参阅本文档顶部的"安装问题和修复"部分

  • 亚洲字符,"RuntimeWarning: Glyph ### missing from current font"

请参阅上文关于 CJK 字符支持的部分。如果您发现需要额外的字符类型,请务必在问题跟踪系统中提出请求。

  • ...任何其他问题

开发工作正在进行中,因此欢迎您在此问题跟踪系统中在我们的论坛中(您应该可以使用 Github 账户登录!)报告任何问题和/或建议

贡献

这是我的第一个开源项目!我构建它是为了使它成为最有用的工具,并帮助尽可能多的人进行数据科学工作。如果它对您有用,您的贡献非常受欢迎,可以采取多种形式:

1. 传播消息!

在 GitHub 上点个星,发个 Twitter 或 Instagram 帖子是最简单的贡献,可能会极大地帮助这个项目成长!如果您觉得这个项目有用,您的这些快速行动对我来说意义重大,可能会产生深远的影响。

Kaggle 笔记本/帖子、Medium 文章、YouTube 视频教程和其他内容需要更多时间,但会更有帮助!

2. 报告错误和问题

我预计随着越来越多的人使用各种新的(且"不干净的")数据,会出现许多怪异情况。如果您发现了错误,请在此处开启一个新问题

3. 建议和讨论用法/功能

为了使 Sweetviz 尽可能有用,我们需要听到您希望它做什么,或者它可以做得更好前往我们的 Discourse 服务器并在那里发布您的建议;无需登录!

4. 为开发做出贡献

我绝对欢迎在这个项目上得到任何帮助,只需在问题追踪器和/或我们的 Discourse 论坛上联系即可。

请注意,在一段繁忙的开发期后,代码本身现在需要一些清理。:)

特别感谢 & 相关材料

贡献者

非常感谢所有通过报告、反馈和提交在 Github 上做出贡献的人! 我要特别感谢 Frank Male,他在修复问题和为 2.2.0 设置新的构建流程方面提供了巨大帮助。

贡献者

使用 contrib.rocks 制作。

相关材料

我希望 Sweetviz 成为最优秀资源的枢纽,一种获取最有价值信息和可视化的方式,而无需重新发明轮子。 因此,我想指出一些对Sweetviz有启发并被整合进来的优秀资源:

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多