Datasets documentation

Загрузка табличных данных

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Загрузка табличных данных

Табличное датасет — это универсальный набор данных, используемый для описания любых данных, хранящихся в строках и столбцах, где строки представляют примеры, а столбцы — признаки (непрерывные или категориальные). Такие датасеты обычно хранятся в файлах CSV, в DataFrames Pandas и в таблицах баз данных. В этом руководстве показано, как загрузить и создать табличное датасет из:

  • Файлы CSV
  • Pandas DataFrames
  • Файлы HDF5
  • Базы данных

Файлы CSV

🤗 Datasets может читать файлы CSV, если в методе load_dataset() указать универсальное имя конструктора набора данных 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 с разбиениями train и test:

>>> 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 DataFrames

🤗 Datasets также поддерживает загрузку наборов данных из Pandas DataFrames с помощью метода from_pandas():

>>> 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 часто используются для хранения больших объёмов числовых данных в научном вычислении и машинном обучении. Загрузка файлов HDF5 с помощью 🤗 Datasets аналогична загрузке файлов CSV:

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

Обратите внимание, что загрузчик HDF5 предполагает, что файл имеет «табличную» структуру, то есть все наборы данных в файле имеют (одинаковое количество) строк в первом измерении.

Базы данных

Наборы данных, хранящиеся в базах данных, как правило, запрашиваются с помощью SQL-запросов. С помощью 🤗 Datasets вы можете подключиться к базе данных, выполнить запрос для получения нужных данных и создать на их основе набор данных. После этого вы можете использовать все возможности обработки данных в 🤗 Datasets, чтобы подготовить набор для обучения.

SQLite

SQLite — это небольшая, лёгкая база данных, которая быстро работает и проста в настройке. Вы можете использовать существующую базу данных или следовать инструкции и начать с нуля.

Start by creating a quick SQLite database with this Covid-19 data from the New York Times:

>>> 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")

Это создаёт таблицу states в базе данных us_covid_data.db, которую теперь можно загрузить в набор данных.

Для подключения к базе данных вам понадобится строка URI, идентифицирующая вашу базу данных. Подключение к базе данных с помощью URI кэширует возвращаемый набор данных. Строка URI различается в зависимости от диалекта базы данных, поэтому обязательно проверьте Database URLs для той базы данных, которую вы используете.

Для 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() для загрузки набора данных из таблицы или запроса.

Update on GitHub