Datasets documentation

加载表格数据

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

加载表格数据

表格数据集是一种通用数据集,用于描述以行和列形式存储的任何数据,其中行表示一个样本,列表示一个特征(可以是连续型或类别型)。这些数据集通常存储在 CSV 文件、Pandas DataFrame 以及数据库表中。本指南将展示如何从以下来源加载和创建表格数据集:

  • CSV 文件
  • Pandas 数据框
  • 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 数据框

🤗 Datasets 还支持使用 from_pandas() 方法从 Pandas DataFrames 加载数据集:

>>> 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 参数来指定数据集拆分(split)的名称:

>>> 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 字符串,因此请务必查阅您所使用的数据库对应的 Database URLs。

对于 SQLite,它是:

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

通过向 from_sql() 传递表名和 URI 来加载表:

>>> 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 查询而非整个表中加载数据集,这在查询和连接多个表时非常有用。

通过向 from_sql() 传入查询和 URI 来加载数据集:

>>> 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 数据库连接并加载数据集,但由于该示例仅适用于在 notebook 中运行,因此我们不会在文档中直接演示具体方法。请查看此 notebook 了解如何安装和配置 PostgreSQL 服务器!

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

Update on GitHub