只需两行代码即可进行深入的探索性数据分析(EDA)(目标分析、比较、特征分析、相关性)!
Sweetviz是一个开源Python库,只需两行代码即可生成美观、高密度的可视化,快速启动探索性数据分析(EDA)。输出是一个完全独立的HTML应用程序。
该系统主要围绕快速可视化目标值和比较数据集而构建。其目标是帮助快速分析目标特征、训练与测试数据以及其他此类数据特征分析任务。
使用方法和参数描述如下,您还可以在这里找到一篇深入描述其特性的文章,并看到实际示例。
**Sweetviz的开发仍在进行中!**如果您遇到任何数据、兼容性或安装问题,请告诉我!感谢您在这里的问题跟踪系统中报告任何错误,我欢迎您对使用/功能的反馈和问题在这里全新的GitHub"讨论"标签中提出。
Colab上带文档的示例笔记本(Jupyter/其他笔记本应该也可以使用)
(有关这些功能的文档,请参见下文)
一些人在通过pip
升级时遇到了混合结果的情况。要从现有安装更新到最新版本,建议先pip uninstall sweetviz
,然后再简单安装。
Sweetviz 目前支持 Python 3.6+ 和 Pandas 0.25.3+。报告使用基本的 "os" 模块输出,因此尚不支持需要自定义文件操作的特殊环境(如 Google Colab),不过我正在寻找解决方案。
安装 sweetviz 的最佳方式(除了从源代码安装外)是使用 pip:
pip install sweetviz
在少数情况下,用户报告了诸如 ModuleNotFoundError: No module named 'sweetviz'
和 AttributeError: module 'sweetviz' has no attribute 'analyze'
等错误。
对于这些情况,我们建议采取以下措施:
sweetviz.py
的文件,因为这会干扰库本身。删除或重命名该脚本(以及任何相关的 .pyc
文件),然后重试。pip uninstall sweetviz
卸载库,然后重新安装。创建报告是一个简单的两步过程:
analyze()
、compare()
或 compare_intra()
之一创建 DataframeReport
对象show_xxx()
函数渲染报告。现在您可以选择使用 html 或 notebook 报告选项,还可以进行缩放:(有关这些选项的更多信息,请参见下文)创建报告有 3 个主要函数:
要分析单个数据框,只需使用 analyze(...)
函数,然后使用 show_html(...)
函数:
import sweetviz as sv
my_report = sv.analyze(my_dataframe)
my_report.show_html() # 默认参数将生成 "SWEETVIZ_REPORT.html"
运行时,这将在您的默认浏览器中输出一个 1080p 宽屏 html 应用程序:
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'):
my_df
或 [my_df, "Training"]
skip
、force_cat
、force_num
和 force_text
。"force_" 参数会覆盖内置的类型检测。可以如下构造:feature_config = sv.FeatureConfig(skip="PassengerId", force_text=["Age"])
full
、progress_only
(仅显示进度条而不显示报告生成消息)和 off
(完全静默,除错误或警告外)。默认详细程度也可以在 INI 覆盖中的 "General" 标题下设置(详见下文 "配置文件" 部分)。pairwise_analysis="on"
(或 ="off"
),因为处理如此多的特征需要很长时间。该参数还包括生成关联图(基于 Drazen Zaric 的概念):要比较两个数据集,只需使用 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)
创建报告对象后(例如上面示例中的my_report
),只需将其传递给两个show
函数之一:
show_html( filepath='SWEETVIZ_REPORT.html',
open_browser=True,
layout='widescreen',
scale=None)
show_html(...) 将在给定的文件路径创建并保存HTML报告。有以下选项:
'widescreen'
或'vertical'
。宽屏布局在鼠标悬停在每个特征上时在屏幕右侧显示详细信息。新的(2.0版本)垂直布局在水平方向上更紧凑,并允许点击展开每个详细区域。scale = 0.8
或None
)来缩放整个报告。这对于使报告适应任何输出非常有用。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元素。
请注意,由于笔记本通常是一个更受限制的视觉环境,因此最好使用自定义的宽度/高度/缩放值(w
、h
、scale
),甚至在INI覆盖中设置自定义默认值(见下文)。选项包括:
layout
和/或scale
调整报告本身)。可以是百分比字符串(w="100%"
)或像素数(w=900
)。h=700
)或"Full"以使窗口高度与所有特征一样高(h="Full"
)。show_html()
相同。show_html()
相同。show_html()
的layout
相同)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
[General]
use_cjk_font = 1
*如果为[General]
设置多个值,只包含一次[General]
行。
这将切换图表中的字体以使用兼容CJK的字体。虽然这种字体不太紧凑,但它将消除这些语言的任何警告和"未知字符"符号。
[Layout]
show_logo = 0
这将从页面顶部移除Sweetviz标志。
[General]
default_verbosity = off
*如果为[General]
设置多个值,只包含一次[General]
行。
可以设置为full
、progress_only
(仅显示进度条但不显示报告生成消息)和off
(完全安静,除非出现错误或警告)。
Sweetviz 关联图和分析的一个主要洞察来源和独特特性是它在一个单一图表中统一了:
方块代表与分类特征相关的变量,圆圈代表数值-数值相关性。注意为了清晰起见,对角线上的平凡关系被留空。
重要提示:分类-分类关联(由显示不确定性系数的方块提供)是不对称的,这意味着每一行代表左侧行标题对每一列提供了多少信息。例如,"性别"、"客舱等级"和"票价"是对"生存"提供最多信息的元素。
对于泰坦尼克号数据集,这些信息相当对称,但并非总是如此!
相关性也会在每个特征的详细部分显示,适用时目标值会被突出显示。例如:
最后,值得注意的是,这些相关性/关联方法不应被视为绝对真理,因为它们对数据分布和关系的基本假设做出了一些假设。但它们可以作为一个非常有用的起点。
从2.1版本开始,Sweetviz 现在完全集成了 Comet.ml。这意味着只要您的 API 密钥在环境中正确设置,Sweetviz 将自动记录使用 show_html()
和 show_notebook()
生成的任何报告到您的工作空间。
此外,您还可以使用新函数 report.log_comet(experiment_object)
显式地将报告上传到给定实验的工作空间。
您可以查看一个 Colab 笔记本 示例来生成报告,以及其对应的 Comet.ml 工作空间 中的报告。
您可以通过覆盖配置文件的 [comet_ml_defaults]
部分来自定义 Sweetviz 报告在 Comet 工作空间中的外观。有关使用 INI 覆盖的更多信息,请参见上文。
您可以选择使用 widescreen
(水平)或 vertical
(垂直)布局,并设置您喜欢的缩放比例,只需在覆盖 INI 文件中添加以下内容:
[comet_ml_defaults]
html_layout = vertical
html_scale = 0.85
请参阅本文档顶部的"安装问题和修复"部分
请参阅上文关于 CJK 字符支持的部分。如果您发现需要额外的字符类型,请务必在问题跟踪系统中提出请求。
开发工作正在进行中,因此欢迎您在此问题跟踪系统中或在我们的论坛中(您应该可以使用 Github 账户登录!)报告任何问题和/或建议
这是我的第一个开源项目!我构建它是为了使它成为最有用的工具,并帮助尽可能多的人进行数据科学工作。如果它对您有用,您的贡献非常受欢迎,可以采取多种形式:
在 GitHub 上点个星,发个 Twitter 或 Instagram 帖子是最简单的贡献,可能会极大地帮助这个项目成长!如果您觉得这个项目有用,您的这些快速行动对我来说意义重大,可能会产生深远的影响。
Kaggle 笔记本/帖子、Medium 文章、YouTube 视频教程和其他内容需要更多时间,但会更有帮助!
我预计随着越来越多的人使用各种新的(且"不干净的")数据,会出现许多怪异情况。如果您发现了错误,请在此处开启一个新问题。
为了使 Sweetviz 尽可能有用,我们需要听到您希望它做什么,或者它可以做得更好
我绝对欢迎在这个项目上得到任何帮助,只需在问题追踪器和/或我们的 Discourse 论坛上联系即可。
请注意,在一段繁忙的开发期后,代码本身现在需要一些清理。:)
非常感谢所有通过报告、反馈和提交在 Github 上做出贡献的人! 我要特别感谢 Frank Male,他在修复问题和为 2.2.0 设置新的构建流程方面提供了巨大帮助。
使用 contrib.rocks 制作。
我希望 Sweetviz 成为最优秀资源的枢纽,一种获取最有价值信息和可视化的方式,而无需重新发明轮子。 因此,我想指出一些对Sweetviz有启发并被整合进来的优秀资源:
Pandas-Profiling是本项目最初的灵感来源。它的一些类型检测代码被包含在Sweetviz中。
Shaked Zychlinski:寻找分类相关性是一篇关于不同类型变量交互的优秀文章,是Sweetviz中相关分析的基础。
Drazen Zaric:Python中更好的热力图和相关矩阵图是我们关联图的基础。
AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术, 为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。
像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。
AI数字人视频创作平台
Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。
一站式AI创作平台
提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作
AI办公助手,复杂任务高效处理
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号