数据集查看器文档

在 Hub 上分析数据集

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始

在 Hub 上分析数据集

在快速入门中,您了解了与 Hub 上的数据集交互的各种端点。其中最有用的是 `/parquet` 端点,它允许您获取存储在 Hub 上的数据集并对其进行分析。这是一种探索数据集并更好地了解其内容的好方法。

为了演示,本指南将向您展示一个端到端示例,说明如何从 Hub 检索数据集并使用 Pandas 库进行一些基本数据分析。

获取数据集

Hub 收录了超过 100,000 个数据集,涵盖各种任务、规模和语言。在本例中,您将使用 codeparrot/codecomplex 数据集,但您可以随意探索并找到另一个您感兴趣的数据集!该数据集包含来自编程竞赛的 Java 代码,并且代码的时间复杂度由一组算法专家进行了标注。

假设您对提交代码的平均长度与其时间复杂度的关系感兴趣。以下是如何开始。

使用 `/parquet` 端点将数据集转换为 Parquet 文件并返回其 URL

import requests
API_URL = "https://datasets-server.huggingface.co/parquet?dataset=codeparrot/codecomplex"
def query():
    response = requests.get(API_URL)
    return response.json()
data = query()
print(data)
{'parquet_files': 
    [
        {'dataset': 'codeparrot/codecomplex', 'config': 'default', 'split': 'train', 'url': 'https://huggingface.co/datasets/codeparrot/codecomplex/resolve/refs%2Fconvert%2Fparquet/default/train/0000.parquet', 'filename': '0000.parquet', 'size': 4115908}
    ], 
 'pending': [], 'failed': [], 'partial: false
}

使用 Pandas 读取数据集

有了 URL,您可以将 Parquet 文件读取到 Pandas DataFrame 中

import pandas as pd

url = "https://huggingface.co/datasets/codeparrot/codecomplex/resolve/refs%2Fconvert%2Fparquet/default/train/0000.parquet"
df = pd.read_parquet(url)
df.head(5)
源代码 复杂度 问题 来自
import java.io.*;\nimport java.math.BigInteger… 二次 1179_B. Tolik 和他的叔叔 CODEFORCES
import java.util.Scanner;\n \npublic class pil… 线性 1197_B. 支柱 CODEFORCES
import java.io.BufferedReader;\nimport java.io… 线性 1059_C. 序列转换 CODEFORCES
import java.util.;\n\nimport java.io.;\npubl… 线性 1011_A. 阶段 CODEFORCES
import java.io.OutputStream;\nimport java.io.I… 线性 1190_C. Tokitsukaze 和决斗 CODEFORCES

根据时间复杂度计算平均代码长度

Pandas 是一个功能强大的数据分析库;按时间复杂度对数据集进行分组,应用函数计算代码片段的平均长度,并绘制结果

df.groupby('complexity')['src'].apply(lambda x: x.str.len().mean()).sort_values(ascending=False).plot.barh(color="orange")
< > 在 GitHub 上更新