当处理一个数据集(例如包含 10,000 行和 50 列)时,要快速获得整体概览并不容易。这正是 pandas Profiling 派上用场的地方。它通过自动生成一份全面的数据集报告来简化流程,大幅缩短探索大型数据集所需的时间。
在本文中,您将学习如何开始使用此前被称为 pandas Profiling 的工具。pandas-profiling 软件包名称近期已更名为 ydata-profiling 。本教程将介绍如何从数据集中生成概要报告、报告包含哪些内容、如何阅读这份报告,以及如何保存报告以供后续使用。
什么是 pandas Profiling(ydata-profiling)?
Pandas Profiling 用于为数据集生成完整而详尽的报告,报告中提供了众多功能与自定义选项。报告包含诸如数据集统计信息、取值分布、缺失值、内存使用情况等,对高效地探索和分析数据非常有帮助。
Pandas Profiling 对探索性数据分析(EDA)也有很大帮助。EDA 用于理解数据的底层结构、发现模式,并以可视化形式生成洞察。
进行 EDA 往往需要编写许多代码,有时既复杂又耗时,但借助 Pandas Profiling,仅用几行代码就能自动化完成。
如果您需要回顾 EDA,可阅读 Python 探索性数据分析 。
以下是一个概要报告的示例:
图片作者自制
pandas Profiling 的优缺点
由于易用、省时且能生成交互式 HTML 报告,pandas profiling 被广泛用于 EDA。不过,将其用于超大数据集时也存在一些潜在不足。
优点
易于使用 :Pandas profiling 非常易用,仅需几行代码即可生成一份全面报告。
节省时间 :它能以最小的工作量生成涵盖广泛信息的报告,非常适合用于 EDA。
交互式 HTML 报告 :所生成的交互式 HTML 报告便于分析与理解,还可以深入查看特定变量并探索其分布。
缺点
在大型数据集上的性能 :主要缺点在于处理大型数据集时的性能。随着数据量增长,报告生成时间显著增加,从而降低了在大规模数据分析场景下的效率。
安装 pandas Profiling
安装 pandas Profiling 时,您可以根据偏好与环境选择 pip 或 conda。
使用 Pip:
打开命令提示符或终端并运行以下命令:
pip install ydata- profiling技术支持
使用 Conda:
打开 Anaconda PowerShell Prompt 并运行以下命令:
conda install - c conda- forge ydata- profiling技术支持
导入 Pandas Profiling
安装完成后,使用以下语句导入 ydata-profiling。
from ydata_profiling import ProfileReport技术支持
这将从 ydata_profiling 库中导入 ProfileReport 类。您可以使用该类为 DataFrame 生成概要报告。
生成概要报告
要生成概要报告,请按以下步骤操作:
导入 pandas 。
从 ydata_profiling 库导入 ProfileReport 类。
使用您的数据创建一个 DataFrame。
使用 ProfileReport() 类并传入该 DataFrame。
下面是遵循上述步骤的简洁代码。首先导入必要的库,然后使用 read_csv() 函数读取 CSV 文件。本例使用的是畅销书 Top 100 书评 的 CSV 文件。接着,使用 ProfileReport 类并将我们的 DataFrame 传入其中。
另外,我们设置了一个新标题“Trending Books”。默认标题有所不同,如需自定义,可在类中使用 title 变量。最后,您可以通过 profile 或 profile.to_notebook_iframe() 来生成并显示报告。
报告将按以下顺序生成:首先对整个数据集进行汇总;然后生成报告结构;最后显示报告。您可以将其保存为 HTML 文件,以便进一步分析。
以下是生成的报告,包含概览 、变量 、交互 、相关性 、缺失值 和样本 等不同部分。
如果您是 EDA 新手,尤其是数据剖析方面的新手,请阅读 精酿啤酒的探索性数据分析:数据剖析 。
探索生成的概要报告
报告由多个部分构成,下面我们逐一进行探索。
概览
该部分包含 3 个选项卡:Overview 、Alerts 和 Reproduction 。
Overview 选项卡包含数据集统计信息,例如变量(或不同列)的数量、存在缺失值的单元格数量、重复行数,以及数据集在内存中的大小。
在我们的数据集中,共有 8 个变量或列。其中 4 个为数值型(排名、图书价格、评分和出版年),其余 4 个为文本型(书名、作者、体裁和 URL)。重复行数为 0,表示没有重复行。另外,“rating” 列有 3 个缺失值。
Alerts 选项卡包含与其他变量相关性的提示、缺失值、唯一值、零值等告警信息。
在我们的例子中,URL 和 Rank 列具有唯一值,而 rating 列有 3 个缺失值。
Reproduction 选项卡显示分析的开始与结束时间以及持续时长,并包含您所使用的软件版本(在我的示例中为 ydata-profiling v4.6.1 )。
变量
Variables 部分包含数据集的所有列。您可以点击切换箭头并选择任意一列。
假设您选择了 rating 列,报告会显示该列在 100 行中包含 10 个唯一值,另外有 3 个单元格缺失。最小值为 4.1,最大值为 5,同时也显示了所有评分的均值。
需要注意的是:右下角有一个 More Details 按钮。点击后可查看更多关于 rating 列的信息,例如中位数、标准差、变异系数以及该列的其他特征。
相关性
相关性用于研究两个变量之间的关系。下方热力图展示了所有变量两两之间的关系。Rank 与 Rank 的相关性为 100%,因此在左上角以深蓝色方块表示。
出版年与图书价格存在中等程度的相关性(约 0.75),用浅蓝色表示,因为并非完全相关。例如,图书价格是 20.93,出版年为 2023,这些数值在一定程度上相关。
缺失值
该部分提供数据集中缺失值的信息。在本部分的 Count 选项卡中,显示 rating 列有 3 个缺失值。
在缺失值部分的 Matrix 选项卡中,Rating 列出现了三条水平线,表示该列存在三个缺失值。
样本
该部分包含数据集的样本,展示了数据集的前 10 行与后 10 行。
保存概要报告
生成概要报告后,您可能希望将其保存以便后续使用,例如从报告中提取有用数据,或与其他应用集成。您可以将报告保存为 HTML 和 JSON 格式。to_file() 方法会将报告保存到 Jupyter Notebook 之外。
以下是 Pandas profiling 的完整代码:
from ydata_profiling import ProfileReport
import pandas as pd
df = pd. read_csv( "trending-books.csv" )
profile = ProfileReport( df, title= "Trending Books" )
profile. to_notebook_iframe( )
profile. to_file( "books_data.html" ) 技术支持
高级用法
在生成报告时,我们只需传入 CSV 文件即可,未添加任何额外元素;操作均使用默认值。
但有时您可能希望省略某些部分或加入额外信息。这就是 Pandas Profiling 高级用法的用武之地。您可以通过更改默认配置来控制报告的各个方面。
如果您对更多数据分析与可视化工具感兴趣,请阅读 21 款必备 Python 工具 。
数据集描述与元数据
在与同事共享或在线发布报告时,加入数据集元数据(如作者、版权持有人或说明)可能很重要。ydata-profiling 允许在报告中补充这些信息。
目前支持的属性包括 description、creator、author、url、copyright_year 和 copyright_holder。默认情况下,数据集信息会展示在报告的 Overview 部分。
from ydata_profiling import ProfileReport
import pandas as pd
df = pd. read_csv( "trending-books.csv" )
report = ProfileReport(
df,
title= "Trending Books" ,
dataset= {
"description" : "This profiling report was generated for the datacamp learning resources." ,
"author" : "Satyam Tripathi" ,
"copyright_holder" : "DataCamp, Inc." ,
"copyright_year" : 2023 ,
"url" : "<https://www.datacamp.com/>" ,
} ,
)
report. to_notebook_iframe( ) 技术支持
以下是代码输出:
除了提供数据集详情,用户在与团队成员及相关方共享报告时,通常还希望包含针对列的说明。默认情况下,这些说明会展示在报告的 Overview 部分。
from ydata_profiling import ProfileReport
import pandas as pd
df = pd. read_csv( "trending-books.csv" )
report = ProfileReport(
df,
title= "Trending Books" ,
variables= {
"descriptions" : {
"genre" : "It contains the genre or category of the book. For example, it could be 'Mystery', 'Science Fiction', 'Romance', 'Fantasy', etc." ,
"url" : "It contains Amazon links for each book." ,
"rating" : "It contains the rating assigned to the book out of 5." ,
}
} ,
)
report. to_notebook_iframe( ) 技术支持
以下是代码输出:
剖析大型数据集
默认情况下, ydata-profiling 会对输入数据集进行全面汇总,以提供尽可能多的分析洞察。对于小型数据集,这些计算可以很快完成;但对大型数据集而言,可能会变得笨重低效。
ydata-profiling 提供了一个最小化配置文件,会默认关闭最耗时的计算。此配置会排除诸如相关性、交互等耗时部分。
from ydata_profiling import ProfileReport
import pandas as pd
df = pd. read_csv( "trending-books.csv" )
report = ProfileReport( df, minimal= True )
report. to_notebook_iframe( ) 技术支持
ydata-profiling 还提供多种替代方案以应对大型数据集带来的挑战。可在此处 了解更多。
结论
本文介绍了独特的库 ydata-profiling(前称 “Pandas Profiling”),只需几行代码即可创建报告。您学习了如何生成概要报告,并探索报告中的各个部分和选项卡。更重要的是,您了解了该库的高级用法,这将助您在数据科学之路上更进一步。
Pandas 是全球最受欢迎的 Python 库,广泛用于数据处理与数据分析。想要学习如何在分析前对真实世界的数据集进行抽取、筛选与转换,掌握 DataFrame 操作,请查看我们的课程 使用 pandas 进行数据处理 。
当处理一个数据集(例如包含 10,000 行和 50 列)时,要快速获得整体概览并不容易。这正是 pandas Profiling 派上用场的地方。它通过自动生成一份全面的数据集报告来简化流程,大幅缩短探索大型数据集所需的时间。
在本文中,您将学习如何开始使用此前被称为 pandas Profiling 的工具。
pandas-profiling软件包名称近期已更名为ydata-profiling。本教程将介绍如何从数据集中生成概要报告、报告包含哪些内容、如何阅读这份报告,以及如何保存报告以供后续使用。什么是 pandas Profiling(ydata-profiling)?
Pandas Profiling 用于为数据集生成完整而详尽的报告,报告中提供了众多功能与自定义选项。报告包含诸如数据集统计信息、取值分布、缺失值、内存使用情况等,对高效地探索和分析数据非常有帮助。
Pandas Profiling 对探索性数据分析(EDA)也有很大帮助。EDA 用于理解数据的底层结构、发现模式,并以可视化形式生成洞察。
进行 EDA 往往需要编写许多代码,有时既复杂又耗时,但借助 Pandas Profiling,仅用几行代码就能自动化完成。
如果您需要回顾 EDA,可阅读 Python 探索性数据分析。
以下是一个概要报告的示例:
图片作者自制
pandas Profiling 的优缺点
由于易用、省时且能生成交互式 HTML 报告,pandas profiling 被广泛用于 EDA。不过,将其用于超大数据集时也存在一些潜在不足。
优点
缺点
安装 pandas Profiling
安装 pandas Profiling 时,您可以根据偏好与环境选择 pip 或 conda。
使用 Pip:
打开命令提示符或终端并运行以下命令:
使用 Conda:
打开 Anaconda PowerShell Prompt 并运行以下命令:
导入 Pandas Profiling
安装完成后,使用以下语句导入
ydata-profiling。这将从
ydata_profiling库中导入ProfileReport类。您可以使用该类为 DataFrame 生成概要报告。生成概要报告
要生成概要报告,请按以下步骤操作:
ydata_profiling库导入 ProfileReport 类。ProfileReport()类并传入该 DataFrame。下面是遵循上述步骤的简洁代码。首先导入必要的库,然后使用
read_csv()函数读取 CSV 文件。本例使用的是畅销书 Top 100 书评的 CSV 文件。接着,使用ProfileReport类并将我们的 DataFrame 传入其中。另外,我们设置了一个新标题“Trending Books”。默认标题有所不同,如需自定义,可在类中使用
title变量。最后,您可以通过profile或profile.to_notebook_iframe() 来生成并显示报告。报告将按以下顺序生成:首先对整个数据集进行汇总;然后生成报告结构;最后显示报告。您可以将其保存为 HTML 文件,以便进一步分析。
以下是生成的报告,包含概览、变量、交互、相关性、缺失值和样本等不同部分。
如果您是 EDA 新手,尤其是数据剖析方面的新手,请阅读 精酿啤酒的探索性数据分析:数据剖析。
探索生成的概要报告
报告由多个部分构成,下面我们逐一进行探索。
概览
该部分包含 3 个选项卡:Overview、Alerts 和 Reproduction。
Overview 选项卡包含数据集统计信息,例如变量(或不同列)的数量、存在缺失值的单元格数量、重复行数,以及数据集在内存中的大小。
在我们的数据集中,共有 8 个变量或列。其中 4 个为数值型(排名、图书价格、评分和出版年),其余 4 个为文本型(书名、作者、体裁和 URL)。重复行数为 0,表示没有重复行。另外,“rating” 列有 3 个缺失值。
Alerts 选项卡包含与其他变量相关性的提示、缺失值、唯一值、零值等告警信息。
在我们的例子中,URL 和 Rank 列具有唯一值,而 rating 列有 3 个缺失值。
Reproduction 选项卡显示分析的开始与结束时间以及持续时长,并包含您所使用的软件版本(在我的示例中为 ydata-profiling v4.6.1)。
变量
Variables 部分包含数据集的所有列。您可以点击切换箭头并选择任意一列。
假设您选择了 rating 列,报告会显示该列在 100 行中包含 10 个唯一值,另外有 3 个单元格缺失。最小值为 4.1,最大值为 5,同时也显示了所有评分的均值。
需要注意的是:右下角有一个 More Details 按钮。点击后可查看更多关于 rating 列的信息,例如中位数、标准差、变异系数以及该列的其他特征。
相关性
相关性用于研究两个变量之间的关系。下方热力图展示了所有变量两两之间的关系。Rank 与 Rank 的相关性为 100%,因此在左上角以深蓝色方块表示。
出版年与图书价格存在中等程度的相关性(约 0.75),用浅蓝色表示,因为并非完全相关。例如,图书价格是 20.93,出版年为 2023,这些数值在一定程度上相关。
缺失值
该部分提供数据集中缺失值的信息。在本部分的 Count 选项卡中,显示 rating 列有 3 个缺失值。
在缺失值部分的 Matrix 选项卡中,Rating 列出现了三条水平线,表示该列存在三个缺失值。
样本
该部分包含数据集的样本,展示了数据集的前 10 行与后 10 行。
保存概要报告
生成概要报告后,您可能希望将其保存以便后续使用,例如从报告中提取有用数据,或与其他应用集成。您可以将报告保存为 HTML 和 JSON 格式。
to_file()方法会将报告保存到 Jupyter Notebook 之外。以下是 Pandas profiling 的完整代码:
高级用法
在生成报告时,我们只需传入 CSV 文件即可,未添加任何额外元素;操作均使用默认值。
但有时您可能希望省略某些部分或加入额外信息。这就是 Pandas Profiling 高级用法的用武之地。您可以通过更改默认配置来控制报告的各个方面。
如果您对更多数据分析与可视化工具感兴趣,请阅读 21 款必备 Python 工具。
数据集描述与元数据
在与同事共享或在线发布报告时,加入数据集元数据(如作者、版权持有人或说明)可能很重要。
ydata-profiling允许在报告中补充这些信息。目前支持的属性包括 description、creator、author、url、copyright_year 和 copyright_holder。默认情况下,数据集信息会展示在报告的 Overview 部分。
以下是代码输出:
除了提供数据集详情,用户在与团队成员及相关方共享报告时,通常还希望包含针对列的说明。默认情况下,这些说明会展示在报告的 Overview 部分。
以下是代码输出:
剖析大型数据集
默认情况下,
ydata-profiling会对输入数据集进行全面汇总,以提供尽可能多的分析洞察。对于小型数据集,这些计算可以很快完成;但对大型数据集而言,可能会变得笨重低效。ydata-profiling提供了一个最小化配置文件,会默认关闭最耗时的计算。此配置会排除诸如相关性、交互等耗时部分。ydata-profiling还提供多种替代方案以应对大型数据集带来的挑战。可在此处了解更多。结论
本文介绍了独特的库
ydata-profiling(前称 “Pandas Profiling”),只需几行代码即可创建报告。您学习了如何生成概要报告,并探索报告中的各个部分和选项卡。更重要的是,您了解了该库的高级用法,这将助您在数据科学之路上更进一步。Pandas 是全球最受欢迎的 Python 库,广泛用于数据处理与数据分析。想要学习如何在分析前对真实世界的数据集进行抽取、筛选与转换,掌握 DataFrame 操作,请查看我们的课程 使用 pandas 进行数据处理。