Pandas Profiling:详细解释
作者:社区 / 开发者
2024 年 1 月 8 日
导航至
如果您涉足过编程,很可能遇到过 Python。Python 是一种友好且通用的语言,通过各种库和模块用于操作数据和机器学习,以便开发人员和数据科学家可以执行多项任务。
在进行数据分析时,您首先需要通过执行探索性数据分析 (EDA) 来探索您的数据。EDA 可能会很繁忙,感觉就像在迷宫中蒙着眼睛导航一样,因此 Python 提供了 pandas profiling 包来简化它。在本文中,我们将介绍 pandas profiling,或现在的 ydata-profiling,以及如何使用它。
什么是 Pandas Profiling?
Pandas profiling 是一个开源 Python 包或库,它为数据科学家提供了一种快速简便的方法来生成关于其数据集的描述性和全面的 HTML 概要分析报告。最令人兴奋的是,它只需一行代码即可生成此报告。
它提供的信息包括缺失值、重复记录、分类和数值记录、相关性和直方图。这些信息使得理解数据和识别潜在问题变得容易。我们将在本文后面的部分探讨一些示例。
Pandas Profiling 如何工作?
Pandas profiling 在 Python 包索引 (PyPI) 上可用,并从 Pandas DataFrame 生成 HTML 或 JSON 格式的概要分析报告。
然而,重要的是要知道 pandas profiling 现在被称为 ydata-profiling。此包也构建在 pandas 和 NumPy 之上。关于数据结构,ydata-profiling 支持表格数据、时间序列文本和图像数据。
就像每个其他 Python 包一样,您可以通过 pip 包管理器使用以下命令轻松安装 ydata-profiling
pip install -U ydata-profiling
您也可以通过 Conda 包管理器安装它。您可以在 Conda 文档中找到更多信息。
conda install -c conda-forge ydata-profiling
在 Google Colab 或 Kaggle 上本地安装它也是一种选择。但是,您需要重启内核或运行时才能使包工作。
import sys
!{sys.executable} -m pip install -U ydata-profiling[notebook]
!jupyter nbextension enable --py widgetsnbextension
如何使用 ydata-profiling 导入和生成报告
要使用 ydata-profiling 生成报告,请运行以下命令
#importing ydata-profiling
From ydata_profiling import ProfileReport
#generating a report
ProfileReport(df, kwargs)
在此语法中
df 代表您的 Pandas DataFrame,这是一个二维表格数据集;kwargs 代表 Pandas profiling 为用户自定义提供的所有可选关键字参数。
这些可选参数中的一些包括以下内容
- Samples 允许您仅使用子集进行概要分析。这对于大型数据集很有用。
sample = df.sample(1000)
ProfileReport(sample, minimal=True)
- Minimal 允许生成简约报告。您只需将其设置为 True。
ProfileReport(sample, minimal=True)
- Title 允许您为概要分析报告指定标题。
ProfileReport(df, title="My Report")
- Correlations 允许您为概要分析报告设置相关性指标和阈值。
ProfileReport(df, title="My Report", correlations=None)
使用 ydata-profiling Pandas Profiling 包
现在您已经安装了该包,让我们看看如何通过示例使用它。
本教程将使用 Google Colab 和来自我们示例 GitHub 存储库的 比特币历史数据集。您也可以从 InfluxDB 文档的示例数据部分获取它。
生成简单报告
您可以通过导入 ydata-profiling 并使用 ProfileReport 方法来生成图表,从而生成简单报告。
from ydata_profiling import ProfileReport
profile = ProfileReport(data)
profile
标准的 ydata-profiling 报告包含五个主要部分。
- 概述: 包含三个报告选项卡:概述、警告和再现。
- 概述显示大小、缺失单元格和重复行数等统计信息。
- 警报预览任何警告,例如具有唯一值的列、基数和变量的偏度。
- 再现页面显示关于报告生成的信息,例如开始和结束时间以及软件版本。
- 变量 报告包含每个变量(列)的详细分析。此输出取决于您选择的列是分类列还是数值列。本节中的一些信息包括不同值、缺失值、均值、直方图和字符数。如果您单击更多详情切换按钮,本节还会提供更详细的概述。
3. 相关性 提供数据中的相关性。Ydata-profiling 使您可以访问五种类型的相关系数:pearson、spearman、Kendall、phi_k 和 cramers。
4. 缺失值 提供数据集中存在的缺失值的可视化效果。您默认获得计数(条形图)和矩阵图。
5. 样本 页面显示数据集的前几行和后几行。
设置数据集描述
当处理数据时,描述可以让您了解报告的内容。您可以为您的数据设置描述、版权所有者、版权年份和 URL。
以下是如何为您的数据设置描述的示例
from ydata_profiling import ProfileReport
profile = data.profile_report(
title="Bitcoin Profiling Report",
dataset={
"description": "This profiling report was generated by Benny Ifeanyi using ydata_profiling.",
"copyright_holder": "InfluxDB",
"copyright_year": 2023,
"url": "https://github.com/influxdata/influxdb2-sample-data/blob/master/bitcoin-price-data/bitcoin-historical-annotated.csv",
},
)
Profile
玩转 ydata-profiling 可选关键字参数
现在我们将向您展示如何创建简单报告以及如何使用关键字参数。首先,如下所示,title 参数可用于添加标题。
from ydata_profiling import ProfileReport
profile = ProfileReport(data, title="Bitcoin Profiling Report")
profile
您可以使用 missing_diagrams 参数在报告中可视化缺失数据。您可以将其可视化为条形图、矩阵图或热图。默认情况下,这些可视化效果均为 TRUE。
from ydata_profiling import ProfileReport
profile = ProfileReport(data, title="Bitcoin Profiling Report", missing_diagrams={"matrix": False,})
profile
上面的代码禁用了矩阵缺失值可视化。
概要分析时间序列数据集
Ydata_profiling 可以分析您的 时间序列数据。您可以通过将 tsmode 设置为 True 来启用此功能。一旦您这样做,ydata-profiling 将识别您的时间数据并创建自相关性。这有助于在您的数据中查找季节性和趋势。
您还应该探索像 InfluxDB 这样的 时间序列数据库,以优化时间序列数据的存储和查询。
以下是概要分析您的时间序列数据的代码
from pandas_profiling import ProfileReport
profile = ProfileReport(data, title="Bitcoin Profiling Report", tsmode=True, sortby="_time")
profile
在上面的代码中,tsmode 参数设置为 true 以启用时间序列分析,sortby 参数用于对时间列进行排序。
概要分析和处理敏感数据
如果机密性非常重要,您可以使用 sensitive 参数仅以聚合视图显示数据。这样,个人记录保持私密。
from ydata_profiling import ProfileReport
profile = ProfileReport(data, title="Bitcoin Profiling Report", sensitive=True)
profile
概要分析大数据
当您的数据集很大时,全面总结和生成此报告可能需要一段时间。为了加快此过程,ydata-profiling 提供了一些解决方案。
一个好的起点是使用 minimal 关键字参数。此参数会关闭最昂贵的计算。
from ydata_profiling import ProfileReport
profile = ProfileReport(data, title="Bitcoin Profiling Report", minimal=True)
profile
另一种方法是 sample 参数。此方法允许您选择数据的子集进行分析,同时确保它代表整个数据集。
from ydata_profiling import ProfileReport
sample = data.sample(1000)
profile = ProfileReport(sample, title="Bitcoin Profiling Report", minimal=True)
profile
同样,您可以使用 frac 函数来选择数据的百分比。
sample = data.sample(frac=0.05)`
profile = ProfileReport(sample, title="Bitcoin Profiling Report", minimal=True)
profile
但是,对于小得多的数据集,您可以使用 explorative 参数进行更深入的概要分析。但是,这对于大数据来说将花费很长时间。
from ydata_profiling import ProfileReport
profile = ProfileReport(data, title="Profiling Report", explorative=True)
profile
保存您的概要分析报告
现在您已经学会了如何使用单行代码生成报告,请尝试保存报告。当您想要导出报告或将其与另一个系统集成时,这很重要。
您可以使用 .to_file()
函数以 HTML 或 JSON 格式导入报告。
from ydata_profiling import ProfileReport
profile = ProfileReport(data, title="Bitcoin Profiling Report")
profile.to_file("output.html") #this saves it as a HTML file
profile.to_file("output.json") #this saves it as a JSON file
现在您已经看到了 ydata-profiling 在各种示例中的应用,是时候通过尝试我们的 示例数据集之一来亲自动手了。
ydata-profiling 的一些替代方案是什么?
ydata-profiling 还有一些其他替代方案。让我们使用来自我们示例数据 GitHub 存储库的 比特币历史数据集的 _time、_value 和 crypto 列来探索一些替代方案。
df.describe: 此 pandas 方法仅提供基本摘要统计信息,如中心趋势。它不提供对数据其他方面的见解,例如缺失值或分类变量。
df = pd.DataFrame(data)
summary = df.describe()
print(summary)
sweetVis: 与 ydata-profiling 类似,这会生成关于您的数据的全面报告。您可以通过运行以下命令来做到这一点。
pip install sweetviz
import sweetviz as sv
report = sv.analyze(data)
report.show_html('report.html')
from IPython.display import HTML
HTML(filename='report.html')
DataPrep:: 这也使用一行代码创建全面的数据报告。您可以通过运行以下命令来做到这一点
pip install -U dataprep
import pandas as pd
from dataprep.eda import create_report
create_report(data)
您可以浏览此 包含输出和代码片段的 Github gist。
ydata-profiling 的一些缺点是什么?
您的数据集越大,ydata-profiling 生成报告所需的时间就越长。但是,您可以使用以下方法来解决此问题:* 使用 samples 参数来选择数据的子集进行概要分析。 * 使用 minimal 参数来生成简化的简约报告。
我们在本教程的大数据概要分析部分的前面部分中介绍了这些参数及其语法。
主要要点
在本教程中,您了解了 pandas profiling 以及它如何被修改为 ydata-profiling。您看到了如何使用此包仅用一行代码生成简单报告。此外,您还了解了如何比较数据集、使用可选的关键字参数等等。我们还探讨了一些替代方案以及如何处理 ydata-profiling 的缺点。
如前所述,通过使用此包,您可以有效地对数据执行 EDA。这将使您能够使用 InfluxData 的 Python 支持和 API 文档来操作和构建 Python 项目。
要了解更多关于 InfluxDB 的信息,请查看我们的 博客 和 大学,它们可以为您提供构建使用实时数据的强大应用程序的技能。
这篇文章由 Ifeanyi Benedict Iheagwara 撰写。 Ifeanyi 是一位数据分析师和 Power Platform 开发人员,他热衷于技术写作、为开源组织做贡献以及构建社区。Ifeanyi 撰写关于机器学习、数据科学和 DevOps 的文章,并乐于以任何身份为开源项目和全球生态系统做出贡献。