資料集文件
載入表格式資料
並獲得增強的文件體驗
開始使用
載入表格資料
表格資料集(tabular dataset)是一種泛指任何以列(row)和欄(column)儲存的資料集,其中列代表一個樣本,而欄代表一個特徵(可以是連續變數或類別變數)。這類資料集通常儲存在 CSV 檔案、Pandas DataFrames 以及資料庫表格中。本指南將向您展示如何載入與建立來自以下來源的表格資料集:
- CSV 檔案
- Pandas DataFrames
- 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"})若要載入壓縮的(zipped)CSV 檔案:
>>> url = "https://domain.org/train_data.zip"
>>> data_files = {"train": url}
>>> dataset = load_dataset("csv", data_files=data_files)Pandas DataFrames
🤗 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 是一個小型、輕量級的資料庫,設定快速且容易。您可以選擇使用現有的資料庫,或者跟隨步驟從頭開始。
首先,使用來自紐約時報的 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 字串會因資料庫方言(dialect)而異,因此請務必查詢您所使用資料庫的 資料庫 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 查詢而非整個資料表載入資料集,這對於查詢和聯結(join)多個資料表非常有用。
透過將您的查詢與 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 資料庫載入資料集。然而,我們不會在文件中直接示範如何操作,因為該範例僅適用於在筆記本(Notebook)中執行。建議您參考此 筆記本,了解如何安裝和設定 PostgreSQL 伺服器!
在您設定好 PostgreSQL 資料庫後,可以使用 from_sql() 方法從資料表或查詢載入資料集。
在 GitHub 上更新