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为用户提供的所有可选关键字参数,用于自定义。
其中一些可选参数包括以下内容
- 样本 允许您仅使用子集进行配置文件。这对于大型数据集非常有用。
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 参数在报告中可视化缺失数据。您可以将其可视化为条形图、矩阵或热图。默认情况下,这些可视化都是开启的。
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')
数据准备: 这也只需要一行代码就能创建全面的数据报告。您可以通过运行以下命令来实现:
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的文章,并享受以任何形式为开源项目和全球生态系统做出贡献。