Datasets documentation
Tải dữ liệu bảng
Tải dữ liệu bảng
Một tập dữ liệu dạng bảng (tabular dataset) là một tập dữ liệu tổng quát dùng để mô tả bất kỳ dữ liệu nào được lưu trữ theo hàng và cột, trong đó mỗi hàng đại diện cho một ví dụ và mỗi cột đại diện cho một đặc trưng (có thể liên tục hoặc phân loại). Những tập dữ liệu này thường được lưu trong các tệp CSV, Pandas DataFrames và trong các bảng cơ sở dữ liệu. Hướng dẫn này sẽ cho bạn thấy cách tải và tạo một tập dữ liệu dạng bảng từ:
- Tệp CSV
- Pandas DataFrames
- Tệp HDF5
- Cơ sở dữ liệu
Tệp CSV
🤗 Datasets có thể đọc các tệp CSV bằng cách chỉ định tên builder dataset chung chung csv trong phương thức load_dataset(). Để nạp nhiều hơn một tệp CSV, hãy truyền chúng dưới dạng một danh sách vào tham số 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"])Bạn cũng có thể ánh xạ các tệp CSV cụ thể vào các phần chia train và test:
>>> dataset = load_dataset("csv", data_files={"train": ["my_train_file_1.csv", "my_train_file_2.csv"], "test": "my_test_file.csv"})Để tải các tệp CSV từ xa, hãy truyền các URL thay vào đó:
>>> 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"})Để tải các tệp CSV nén:
>>> url = "https://domain.org/train_data.zip"
>>> data_files = {"train": url}
>>> dataset = load_dataset("csv", data_files=data_files)Pandas DataFrames
🤗 Datasets cũng hỗ trợ nạp dữ liệu từ Pandas DataFrames bằng phương thức 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)Sử dụng tham số splits để chỉ định tên của phần chia bộ dữ liệu:
>>> train_ds = Dataset.from_pandas(train_df, split="train")
>>> test_ds = Dataset.from_pandas(test_df, split="test")Nếu tập dữ liệu không hiển thị như mong đợi, bạn nên chỉ định rõ các đặc trưng của tập dữ liệu. Một pandas.Series có thể không luôn chứa đủ thông tin để Arrow tự động suy luận kiểu dữ liệu. Ví dụ, nếu một DataFrame có độ dài 0 hoặc nếu Series chỉ chứa các đối tượng None/NaN, kiểu sẽ được đặt thành null.
Tệp HDF5
HDF5 thường được dùng để lưu trữ lượng lớn dữ liệu số trong tính toán khoa học và học máy. Việc tải tệp HDF5 bằng 🤗 Datasets tương tự như tải tệp CSV:
>>> from datasets import load_dataset
>>> dataset = load_dataset("hdf5", data_files="data.h5")Lưu ý rằng trình nạp HDF5 giả định rằng tệp có cấu trúc “bảng”, tức là tất cả các tập dữ liệu trong tệp đều có (số hàng giống nhau) trên chiều đầu tiên.
Cơ sở dữ liệu
Các dataset được lưu trữ trong cơ sở dữ liệu thường được truy cập bằng các truy vấn SQL. Với 🤗 Datasets, bạn có thể kết nối với cơ sở dữ liệu, truy vấn dữ liệu cần thiết và tạo một dataset từ đó. Sau đó, bạn có thể sử dụng tất cả các tính năng xử lý của 🤗 Datasets để chuẩn bị dataset cho việc huấn luyện.
SQLite
SQLite là một cơ sở dữ liệu nhỏ gọn, nhẹ, nhanh và dễ thiết lập. Bạn có thể sử dụng một cơ sở dữ liệu có sẵn nếu muốn, hoặc làm theo hướng dẫn và bắt đầu từ đầu.
Bắt đầu bằng cách tạo một cơ sở dữ liệu SQLite nhanh với dữ liệu Covid-19 này từ 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")Điều này tạo ra bảng states trong cơ sở dữ liệu us_covid_data.db, mà bạn giờ có thể nạp vào một dataset.
Để kết nối với cơ sở dữ liệu, bạn sẽ cần xâu URI xác định cơ sở dữ liệu của bạn. Việc kết nối với cơ sở dữ liệu bằng URI sẽ lưu bộ nhớ đệm (cache) bộ dữ liệu được trả về. Xâu URI khác nhau tùy theo phương ngữ (dialect) của từng cơ sở dữ liệu, vì vậy hãy chắc chắn kiểm tra Database URLs cho cơ sở dữ liệu mà bạn đang sử dụng.
Đối với SQLite, nó là:
>>> uri = "sqlite:///us_covid_data.db"Tải bảng bằng cách truyền tên bảng và URI vào from_sql():
>>> from datasets import Dataset
>>> ds = Dataset.from_sql("states", uri)
>>> ds
Dataset({
features: ['index', 'date', 'state', 'fips', 'cases', 'deaths'],
num_rows: 54382
})Sau đó, bạn có thể sử dụng tất cả các tính năng xử lý của 🤗 Datasets, chẳng hạn như filter():
>>> ds.filter(lambda x: x["state"] == "California")Bạn cũng có thể tải một dataset từ một truy vấn SQL thay vì toàn bộ bảng, điều này hữu ích khi truy vấn và kết nối nhiều bảng.
Tải bộ dữ liệu bằng cách truyền truy vấn và URI của bạn vào 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
})Sau đó, bạn có thể sử dụng tất cả các tính năng xử lý của 🤗 Datasets, chẳng hạn như filter():
>>> ds.filter(lambda x: x["cases"] > 10000)PostgreSQL
Bạn cũng có thể kết nối và tải một dataset từ cơ sở dữ liệu PostgreSQL, tuy nhiên chúng tôi sẽ không trực tiếp minh họa cách làm trong tài liệu này vì ví dụ chỉ được thiết kế để chạy trong notebook. Thay vào đó, hãy xem cách cài đặt và cấu hình một máy chủ PostgreSQL trong notebook này!
Sau khi bạn đã thiết lập cơ sở dữ liệu PostgreSQL, bạn có thể sử dụng phương thức from_sql() để tải một tập dữ liệu từ một bảng hoặc truy vấn.
Update on GitHub