# Daft

[Daft](https://daft.ai/) es un motor de datos de alto rendimiento que ofrece un procesamiento de datos simple y fiable para cualquier modalidad y escala. Daft admite de forma nativa la lectura y escritura de conjuntos de datos de Hugging Face.

## Primeros pasos

Para empezar, instala `daft` con pip usando la función `huggingface`:

```bash
pip install 'daft[huggingface]'
```

## Leer

Daft puede leer conjuntos de datos directamente desde Hugging Face Hub mediante la función [`daft.read_huggingface()`](https://docs.daft.ai/en/stable/api/io/#daft.read_huggingface) o a través del protocolo `hf://datasets/`.

### Lectura de un conjunto de datos completo

Con [`daft.read_huggingface()`](https://docs.daft.ai/en/stable/api/io/#daft.read_huggingface) puedes cargar un conjunto de datos fácilmente.

```python
import daft

df = daft.read_huggingface("username/dataset_name")
```

Esto leerá todo el conjunto de datos en un DataFrame.

### Lectura de archivos específicos

No solo puedes leer conjuntos de datos completos, sino también archivos individuales de un repositorio de conjuntos de datos. Utilizando una función de lectura que toma una ruta (como [`daft.read_parquet()`](https://docs.daft.ai/en/stable/api/io/#daft.read_parquet), [`daft.read_csv()`](https://docs.daft.ai/en/stable/api/io/#daft.read_csv) o [`daft.read_json()`](https://docs.daft.ai/en/stable/api/io/#daft.read_json)), especifica una ruta de un conjunto de datos de Hugging Face mediante el prefijo `hf://datasets/`:

```python
import daft

# read a specific Parquet file
df = daft.read_parquet("hf://datasets/username/dataset_name/file_name.parquet")

# or a csv file
df = daft.read_csv("hf://datasets/username/dataset_name/file_name.csv")

# or a set of Parquet files using a glob pattern
df = daft.read_parquet("hf://datasets/username/dataset_name/**/*.parquet")
```

## Escribir

Daft puede escribir archivos Parquet en un repositorio de datasets de Hugging Face mediante [`daft.DataFrame.write_huggingface`](https://docs.daft.ai/en/stable/api/dataframe/#daft.DataFrame.write_deltalake). Daft admite [Content-Defined Chunking](https://huggingface.co/blog/parquet-cdc) y [Xet](https://huggingface.co/blog/xet-on-the-hub) para escrituras más rápidas y deduplicadas.

Uso básico:

```python
import daft

df: daft.DataFrame = ...

df.write_huggingface("username/dataset_name")
```

Consulte la página de la API [`DataFrame.write_huggingface`](https://docs.daft.ai/en/stable/api/dataframe/#daft.DataFrame.write_huggingface) para obtener más información.

## Autenticación

El parámetro `token` en [`daft.io.HuggingFaceConfig`](https://docs.daft.ai/en/stable/api/config/#daft.io.HuggingFaceConfig) se puede usar para especificar un token de acceso de Hugging Face para las solicitudes que requieren autenticación (por ejemplo, leer repositorios de conjuntos de datos privados o escribir en un repositorio de conjuntos de datos).

Ejemplo de carga de un conjunto de datos con un token especificado:

```python
from daft.io import IOConfig, HuggingFaceConfig

io_config = IOConfig(hf=HuggingFaceConfig(token="your_token"))
df = daft.read_parquet("hf://datasets/username/dataset_name", io_config=io_config)
```

