Datasets 文档

加载表格数据

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

加载表格数据

表格数据集是一种通用数据集,用于描述以行和列存储的任何数据,其中行代表一个示例,列代表一个特征(可以是连续的或分类的)。这些数据集通常存储在 CSV 文件、Pandas DataFrame 和数据库表中。本指南将向您展示如何从

  • CSV 文件
  • Pandas DataFrame
  • HDF5 文件
  • 数据库

CSV 文件

🤗 Datasets 可以通过在 load_dataset() 方法中指定通用的 csv 数据集构建器名称来读取 CSV 文件。要加载多个 CSV 文件,请将它们作为列表传递给 data_files 参数

>>> from datasets import load_dataset
>>> dataset = load_dataset("csv", data_files="my_file.csv")

# load multiple CSV files
>>> dataset = load_dataset("csv", data_files=["my_file_1.csv", "my_file_2.csv", "my_file_3.csv"])

您还可以将特定的 CSV 文件映射到训练集和测试集

>>> dataset = load_dataset("csv", data_files={"train": ["my_train_file_1.csv", "my_train_file_2.csv"], "test": "my_test_file.csv"})

要加载远程 CSV 文件,请改用 URL

>>> base_url = "https://huggingface.co/datasets/lhoestq/demo1/resolve/main/data/"
>>> dataset = load_dataset('csv', data_files={"train": base_url + "train.csv", "test": base_url + "test.csv"})

要加载压缩的 CSV 文件

>>> url = "https://domain.org/train_data.zip"
>>> data_files = {"train": url}
>>> dataset = load_dataset("csv", data_files=data_files)

Pandas DataFrame

🤗 Datasets 也支持使用 from_pandas() 方法从 Pandas DataFrame 加载数据集

>>> from datasets import Dataset
>>> import pandas as pd

# create a Pandas DataFrame
>>> df = pd.read_csv("https://huggingface.co/datasets/imodels/credit-card/raw/main/train.csv")
>>> df = pd.DataFrame(df)
# load Dataset from Pandas DataFrame
>>> dataset = Dataset.from_pandas(df)

使用 splits 参数指定数据集分割的名称

>>> train_ds = Dataset.from_pandas(train_df, split="train")
>>> test_ds = Dataset.from_pandas(test_df, split="test")

如果数据集的外观不符合预期,您应该显式地 指定数据集的特征。一个 pandas.Series 可能并不总是包含足够的信息供 Arrow 自动推断数据类型。例如,如果 DataFrame 的长度为 0,或者 Series 只包含 None/NaN 对象,则类型将被设置为 null

HDF5 文件

HDF5 文件常用于存储科学计算和机器学习中的大量数值数据。使用 🤗 Datasets 加载 HDF5 文件与加载 CSV 文件类似

>>> from datasets import load_dataset
>>> dataset = load_dataset("hdf5", data_files="data.h5")

请注意,HDF5 加载器假定文件具有“表格”结构,即文件中的所有数据集在第一维上具有(相同数量的)行。

数据库

数据库中存储的数据集通常通过 SQL 查询访问。使用 🤗 Datasets,您可以连接到数据库,查询所需的数据,并从中创建数据集。然后,您可以使用 🤗 Datasets 的所有处理功能来准备您的数据集以进行训练。

SQLite

SQLite 是一个小型、轻量级的数据库,快速且易于设置。如果您愿意,可以使用现有数据库,或者可以跟随本教程从头开始。

首先,使用纽约时报提供的这个 Covid-19 数据创建一个快速 SQLite 数据库

>>> import sqlite3
>>> import pandas as pd

>>> conn = sqlite3.connect("us_covid_data.db")
>>> df = pd.read_csv("https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-states.csv")
>>> df.to_sql("states", conn, if_exists="replace")

这将会在 us_covid_data.db 数据库中创建一个 states 表,现在您可以将其加载到数据集中。

要连接到数据库,您需要标识数据库的 URI 字符串。使用 URI 连接到数据库会缓存返回的数据集。URI 字符串对于每个数据库方言都不同,因此请务必查看您正在使用的任何数据库的 数据库 URL

对于 SQLite,它是

>>> uri = "sqlite:///us_covid_data.db"

通过将表名和 URI 传递给 from_sql() 来加载表

>>> from datasets import Dataset

>>> ds = Dataset.from_sql("states", uri)
>>> ds
Dataset({
    features: ['index', 'date', 'state', 'fips', 'cases', 'deaths'],
    num_rows: 54382
})

然后,您可以使用 🤗 Datasets 的所有处理功能,例如 filter()

>>> ds.filter(lambda x: x["state"] == "California")

您也可以从 SQL 查询而不是整个表加载数据集,这对于查询和连接多个表很有用。

通过将查询和 URI 传递给 from_sql() 来加载数据集

>>> from datasets import Dataset

>>> ds = Dataset.from_sql('SELECT * FROM states WHERE state="California";', uri)
>>> ds
Dataset({
    features: ['index', 'date', 'state', 'fips', 'cases', 'deaths'],
    num_rows: 1019
})

然后,您可以使用 🤗 Datasets 的所有处理功能,例如 filter()

>>> ds.filter(lambda x: x["cases"] > 10000)

PostgreSQL

您也可以连接并从 PostgreSQL 数据库加载数据集,但我们不会在文档中直接演示,因为示例仅用于在笔记本中运行。相反,请查看此 笔记本,了解如何安装和设置 PostgreSQL 服务器!

设置好 PostgreSQL 数据库后,您可以使用 from_sql() 方法从表或查询加载数据集。

在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.