Skip to content

数据集描述与元数据

数据集描述

在向同事分享报告或在线发布时,包含数据集的元数据(如作者、版权持有者或描述)可能很重要。ydata-profiling 允许通过这些信息来补充报告。受 schema.org 的 Dataset 启发,目前支持的属性包括 descriptioncreatorauthorurlcopyright_yearcopyright_holder

以下示例展示了如何生成包含 descriptioncopyright_holdercopyright_yearcreatorurl 的报告。在生成的报告中,这些属性可以在 Overview 下的 About 部分找到。

添加报告描述
report = df.profile_report(
    title="Masked data",
    dataset={
        "description": "此分析报告是基于原始数据集的5%样本生成的。",
        "copyright_holder": "StataCorp LLC",
        "copyright_year": 2020,
        "url": "http://www.stata-press.com/data/r15/auto2.dta",
    },
)

report.to_file(Path("stata_auto_report.html"))

列描述

除了提供数据集的详细信息外,用户在向团队成员和利益相关者分享报告时,通常还希望包含特定列的描述。ydata-profiling 支持创建这些描述,以便报告包含内置的数据字典。默认情况下,这些描述会在报告的 Overview 部分中,每个变量旁边显示。

生成包含每个变量描述的报告
profile = df.profile_report(
    variables={
        "descriptions": {
            "files": "文件系统中的文件,# 变量名称: 变量描述",
            "datec": "创建日期",
            "datem": "修改日期",
        }
    }
)

profile.to_file(report.html)

或者,列描述可以从 JSON 文件中加载:

dataset_column_definition.json
1
2
3
4
{
    列名1: 列1定义,
    列名2: 列2定义
}
从JSON定义文件生成包含每个变量描述的报告
import json
import pandas as pd
import ydata_profiling

definition_file = dataset_column_definition.json

# 读取变量描述
with open(definition_file, r) as f:
    definitions = json.load(f)

# 默认情况下,描述会在Overview部分中,每个变量旁边显示
report = df.profile_report(variable={"descriptions": definitions})

# 我们可以禁用在每个变量旁边显示描述
report = df.profile_report(
    variable={"descriptions": definitions}, show_variable_description=False
)

report.to_file("report.html")

数据集模式

除了提供数据集的详细信息外,用户通常还希望包含数据集类型模式。这在将 ydata-profiling 生成与数据目录中的现有信息集成时尤为重要。使用 ydata-profiling ProfileReport 时,用户可以设置 type_schema 属性来控制生成的分析数据类型。默认情况下,type_schema 会自动通过 visions 推断。

设置变量类型模式以生成分析报告
import json
import pandas as pd

from ydata_profiling import ProfileReport
from ydata_profiling.utils.cache import cache_file

file_name = cache_file(
    "titanic.csv",
    "https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv",
)
df = pd.read_csv(file_name)

type_schema = {"Survived": "categorical", "Embarked": "categorical"}

# 我们只能为确定类型的变量设置type_schema。其他变量的类型将自动推断。
report = ProfileReport(df, title="Titanic EDA", type_schema=type_schema)

report.to_file("report.html")