Hub documentation
Edición de conjuntos de datos
Edición de conjuntos de datos
El Hub permite la curaduría colaborativa de conjuntos de datos de la comunidad y de investigación. Te animamos a explorar los conjuntos de datos disponibles en el Hub y a contribuir a su mejora para ayudar a hacer crecer la comunidad de ML y acelerar el progreso de todos. ¡Se aceptan todas las contribuciones!
Comienza creando una cuenta en Hugging Face Hub si aún no tienes una.
Editar usando la interfaz de usuario del Hub
Esta función solo está disponible por ahora para conjuntos de datos en CSV, TSV y Parquet.
La interfaz web del Hub permite a los usuarios sin conocimientos técnicos editar un conjunto de datos.
Abre la página del conjunto de datos y navega a la pestaña Data Studio para comenzar a editar.

Haz clic en Alternar modo de edición para habilitar la edición del conjunto de datos.


Edita tantas celdas como quieras y, al final, haz clic en Commit para confirmar tus cambios y dejar un mensaje de commit.


Usando la biblioteca de clientes huggingface_hub
La biblioteca huggingface_hub puede gestionar repositorios del Hub, incluida la edición de conjuntos de datos.
Por ejemplo, así es como se edita un archivo CSV usando la Hugging Face FileSystem API:
from huggingface_hub import hffs
path = f"datasets/{repo_id}/data.csv"
with hffs.open(path, "r") as f:
content = f.read()
edited_content = content.replace("foo", "bar")
with hffs.open(path, "w") as f:
f.write(edited_content)También puedes aplicar la edición localmente en tu disco y confirmar los cambios:
from huggingface_hub import hf_hub_download, upload_file
local_path = hf_hub_download(repo_id=repo_id, path_in_repo= "data.csv", repo_type="dataset")
with open(path, "r") as f:
content = f.read()
edited_content = content.replace("foo", "bar")
with open(path, "w") as f:
f.write(edited_content)
upload_file(repo_id=repo_id, path_in_repo=local_path, repo_type="dataset")Para tener el repositorio completo del conjunto de datos localmente y editar muchos archivos a la vez, use
snapshot_downloadyupload_folderen lugar dehf_hub_downloadyupload_file
Visite la documentación de la biblioteca de cliente para obtener más información.
Bibliotecas integradas
Si un conjunto de datos en el Hub es compatible con una biblioteca admitida, cargarlo, editarlo y publicarlo requiere solo unas pocas líneas.
Así es como se edita un archivo CSV con Pandas:
import pandas as pd
# Load the dataset
df = pd.read_csv(f"hf://datasets/{repo_id}/data.csv")
# Edit
df = df.apply(...)
# Commit the changes
df.to_csv(f"hf://datasets/{repo_id}/data.csv")Bibliotecas como Polars y DuckDB también implementan el protocolo hf:// para leer, editar y escribir archivos en Hugging Face. Y otras bibliotecas son útiles para editar conjuntos de datos compuestos por muchos archivos, como Spark, Dask o 🤗 Datasets. Consulta la lista completa de bibliotecas compatibles aquí
Para obtener información sobre cómo acceder al conjunto de datos en el sitio web, puede hacer clic en el botón “Use this dataset” en la página del conjunto de datos para ver cómo hacerlo.
Por ejemplo, samsum muestra cómo hacerlo con 🤗 Datasets a continuación.


Sube solo los nuevos datos
El almacenamiento de Hugging Face está impulsado por Xet, que utiliza la deduplicación de fragmentos para hacer las cargas más eficientes. A diferencia del almacenamiento en la nube tradicional, Xet no requiere volver a cargar el conjunto de datos completo para confirmar los cambios. En su lugar, detecta automáticamente qué partes del conjunto de datos han cambiado e instruye a la biblioteca de cliente para que solo cargue las partes actualizadas. Para lograrlo, Xet utiliza un algoritmo inteligente para encontrar fragmentos de 64 kB que ya existen en Hugging Face.
Veamos nuestro ejemplo anterior con Pandas:
import pandas as pd
# Load the dataset
df = pd.read_csv(f"hf://datasets/{repo_id}/data.csv")
# Edit part of the dataset
df = df.apply(...)
# Commit the changes
df.to_csv(f"hf://datasets/{repo_id}/data.csv")Este código primero carga un conjunto de datos y luego lo edita.
Una vez realizadas las ediciones, to_csv() materializa el archivo en memoria, lo divide en fragmentos, consulta a Xet qué fragmentos ya están en Hugging Face y cuáles han cambiado, y luego solo sube los datos nuevos.
Edición de Parquet optimizada
La cantidad de datos a subir depende de las ediciones y de la estructura del archivo.
El formato Parquet es columnar y se comprime a nivel de página (las páginas son de aproximadamente ~1 MB). Optimizamos Parquet para Xet con Parquet Content Defined Chunking, lo que garantiza que los datos sin cambios generalmente produzcan páginas sin cambios.
Por ejemplo, este código sube el contenido de df y luego, para edited_df, la subida es más rápida ya que solo sube los fragmentos que cambiaron:
import pandas as pd
df.to_parquet(
"hf://datasets/username/my_dataset/imdb.parquet",
# Optimize for Xet
use_content_defined_chunking=True,
write_page_index=True,
)
edited_df = ... # e.g. with added/modified/removed rows or columns
edited_df.to_parquet(
"hf://datasets/username/my_dataset/imdb.parquet",
# Optimize for Xet
use_content_defined_chunking=True,
write_page_index=True,
)Los fragmentos son de ~64 kB y Parquet guarda los datos columna por columna, por lo que en la práctica esto es lo que ocurre al editar un archivo Parquet optimizado:
- agregar una nueva columna -> solo se suben los fragmentos de la nueva columna
- agregar/editar/eliminar una fila -> se sube un fragmento por columna
Y además de esto, también se suben los fragmentos del pie de página de Parquet que contienen metadatos.
Comprueba si tu biblioteca admite Optimized Parquet en la página de bibliotecas compatibles.
Streaming
Para conjuntos de datos grandes, se recomiendan bibliotecas con funciones de streaming de conjuntos de datos para pipelines de streaming de extremo a extremo. En este caso, el procesamiento del conjunto de datos se ejecuta de forma progresiva a medida que llega los datos antiguos y los nuevos datos se suben al Hub.
Comprueba si tu biblioteca admite streaming en la página de bibliotecas compatibles.
Update on GitHub