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

表形式データの読み込み

Tabular datasetとは、行と列で保存されたデータを記述するために使用される汎用的なデータセットです。ここで、行は1つのサンプル(example)を表し、列は特徴量(feature)を表します(連続値またはカテゴリ値のいずれか)。これらのデータセットは、一般的に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ファイルを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のDataFrame

🤗 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 パラメータを使用して、データセットの分割名を指定します:

>>> 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は、高速でセットアップが簡単な小型かつ軽量なデータベースです。既存のデータベースを使用することも、ゼロから始めることもできます。

このNew York Timesの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"

テーブル名と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
})

その後、filter() など、🤗 Datasets のすべての処理機能を使用できます。

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

その後、filter() など、🤗 Datasets のすべての処理機能を使用できます。

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

PostgreSQL

PostgreSQLデータベースからデータセットを接続して読み込むこともできますが、この例はノートブックでのみ実行されることを想定しているため、ドキュメントでは直接その方法を示していません。代わりに、PostgreSQLサーバーのインストールとセットアップ方法については、このノートブックを参照してください。

PostgreSQLデータベースのセットアップが完了したら、from_sql()メソッドを使用して、テーブルやクエリからデータセットを読み込むことができます。

Update on GitHub