Datasets documentation

Charger des données tabulaires

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

Charger des données tabulaires

Un jeu de données tabulaire est un jeu de données générique utilisé pour décrire toute donnée stockée en lignes et en colonnes, où les lignes représentent un exemple et les colonnes représentent une caractéristique (continue ou catégorielle). Ces jeux de données sont généralement stockés dans des fichiers CSV, des DataFrames Pandas et des tables de base de données. Ce guide vous montre comment charger et créer un jeu de données tabulaire à partir de :

  • Fichiers CSV
  • DataFrames Pandas
  • Fichiers HDF5
  • Bases de données

Fichiers CSV

🤗 Datasets peut lire des fichiers CSV en spécifiant le nom de constructeur de jeu de données générique csv dans la méthode load_dataset(). Pour charger plusieurs fichiers CSV, passez-les sous forme de liste au paramètre 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"])

Vous pouvez également associer des fichiers CSV spécifiques aux ensembles d'entraînement et de test :

>>> dataset = load_dataset("csv", data_files={"train": ["my_train_file_1.csv", "my_train_file_2.csv"], "test": "my_test_file.csv"})

Pour charger des fichiers CSV distants, passez plutôt les 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"})

Pour charger des fichiers CSV compressés :

>>> url = "https://domain.org/train_data.zip"
>>> data_files = {"train": url}
>>> dataset = load_dataset("csv", data_files=data_files)

DataFrames Pandas

🤗 Datasets prend également en charge le chargement de jeux de données à partir de DataFrames Pandas avec la méthode 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)

Utilisez le paramètre splits pour spécifier le nom de la partie du jeu de données :

>>> train_ds = Dataset.from_pandas(train_df, split="train")
>>> test_ds = Dataset.from_pandas(test_df, split="test")

Si le jeu de données ne semble pas conforme aux attentes, vous devez spécifier explicitement les caractéristiques de votre jeu de données. Un pandas.Series ne contient pas toujours suffisamment d’informations pour qu’Arrow déduise automatiquement un type de données. Par exemple, si un DataFrame a une longueur de 0 ou si la Series ne contient que des objets None/NaN, le type est défini sur null.

Fichiers HDF5

Les fichiers HDF5 sont couramment utilisés pour stocker de grandes quantités de données numériques en calcul scientifique et en apprentissage automatique. Le chargement de fichiers HDF5 avec 🤗 Datasets est similaire au chargement de fichiers CSV :

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

Notez que le chargeur HDF5 suppose que le fichier a une structure « tabulaire », c'est-à-dire que tous les jeux de données du fichier ont (le même nombre de) lignes sur leur première dimension.

Bases de données

Les jeux de données stockés dans des bases de données sont généralement accédés via des requêtes SQL. Avec 🤗 Datasets, vous pouvez vous connecter à une base de données, interroger les données dont vous avez besoin et en créer un jeu de données. Vous pouvez ensuite utiliser toutes les fonctionnalités de traitement de 🤗 Datasets pour préparer votre jeu de données à l’entraînement.

SQLite

SQLite est une base de données compacte et légère, rapide et facile à configurer. Vous pouvez utiliser une base de données existante si vous le souhaitez, ou suivre le guide et démarrer de zéro.

Commencez par créer une base de données SQLite rapide avec ces données sur le Covid-19 du 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")

Cela crée une table states dans la base de données us_covid_data.db que vous pouvez maintenant charger dans un jeu de données.

Pour vous connecter à la base de données, vous aurez besoin de la chaîne URI qui identifie votre base de données. La connexion à une base de données via une URI met en cache le jeu de données retourné. La chaîne URI varie selon chaque dialecte de base de données, assurez-vous donc de consulter les URL de base de données correspondant à la base de données que vous utilisez.

Pour SQLite, il s'agit de :

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

Chargez le tableau en passant le nom du tableau et l'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
})

Vous pouvez ensuite utiliser toutes les fonctionnalités de traitement de 🤗 Datasets, par exemple filter() :

>>> ds.filter(lambda x: x["state"] == "California")

Vous pouvez également charger un jeu de données à partir d'une requête SQL plutôt que d'une table entière, ce qui est utile pour interroger et fusionner plusieurs tables.

Chargez le jeu de données en passant votre requête et votre 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
})

Vous pouvez ensuite utiliser toutes les fonctionnalités de traitement de 🤗 Datasets, par exemple filter() :

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

PostgreSQL

Vous pouvez également connecter et charger un jeu de données depuis une base de données PostgreSQL. Nous ne démontrons pas directement comment faire dans la documentation, car l’exemple est destiné à n’être exécuté que dans un notebook. Consultez plutôt comment installer et configurer un serveur PostgreSQL dans ce notebook !

Après avoir configuré votre base de données PostgreSQL, vous pouvez utiliser la méthode from_sql() pour charger un jeu de données à partir d'une table ou d'une requête.

Update on GitHub