# Conoce tu conjunto de datos

Existen dos tipos de objetos de conjunto de datos: un [Dataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset) regular y un ✨ [IterableDataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset) ✨. Un [Dataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset) proporciona acceso aleatorio rápido a las filas y memoria mapeada, de modo que la carga de conjuntos de datos grandes solo utiliza una cantidad relativamente pequeña de memoria del dispositivo. Pero para conjuntos de datos realmente, realmente grandes que ni siquiera caben en el disco o en la memoria, un [IterableDataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset) te permite acceder y usar el conjunto de datos sin esperar a que se descargue por completo.

En este tutorial se mostrará cómo cargar y acceder a un [Dataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset) y a un [IterableDataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset).

## Dataset

Al cargar una división de un conjunto de datos, obtendrás un objeto [Dataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset). Puedes hacer muchas cosas con un objeto [Dataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset), por lo que es importante aprender a manipular e interactuar con los datos almacenados en su interior.
 
Este tutorial utiliza el conjunto de datos [rotten_tomatoes](https://huggingface.co/datasets/rotten_tomatoes), pero siéntase libre de cargar cualquier otro conjunto de datos que desee y seguir el proceso.

```py
>>> from datasets import load_dataset

>>> dataset = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
```

### Indexación

Un [Dataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset) contiene columnas de datos, y cada columna puede ser de un tipo de datos diferente. El *index*, o etiqueta de eje, se utiliza para acceder a los ejemplos del conjunto de datos. Por ejemplo, indexar por la fila devuelve un diccionario con un ejemplo del conjunto de datos:

```py
# Get the first row in the dataset
>>> dataset[0]
{'label': 1,
 'text': 'the rock is destined to be the 21st century\'s new " conan " and that he\'s going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}
```

Use el operador `-` para empezar desde el final del conjunto de datos:

```py
# Get the last row in the dataset
>>> dataset[-1]
{'label': 0,
 'text': 'things really get weird , though not particularly scary : the movie is all portent and no content .'}
```

Indexar por el nombre de la columna devuelve una lista con todos los valores de la columna:

```py
>>> dataset["text"]
['the rock is destined to be the 21st century\'s new " conan " and that he\'s going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson\'s expanded vision of j . r . r . tolkien\'s middle-earth .',
 'effective but too-tepid biopic',
 ...,
 'things really get weird , though not particularly scary : the movie is all portent and no content .']
```

Puede combinar la indexación por nombre de fila y columna para devolver un valor específico en una posición:

```py
>>> dataset[0]["text"]
'the rock is destined to be the 21st century\'s new " conan " and that he\'s going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'
```

El orden de indexación no importa. Si se indexa primero por el nombre de la columna, se devuelve un objeto [Column](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Column) que se puede indexar de forma habitual con índices de fila:

```py
>>> import time

>>> start_time = time.time()
>>> text = dataset[0]["text"]
>>> end_time = time.time()
>>> print(f"Elapsed time: {end_time - start_time:.4f} seconds")
Elapsed time: 0.0031 seconds

>>> start_time = time.time()
>>> text = dataset["text"][0]
>>> end_time = time.time()
>>> print(f"Elapsed time: {end_time - start_time:.4f} seconds")
Elapsed time: 0.0042 seconds
```

### Slicing

Slicing devuelve una porción o subconjunto del conjunto de datos, lo cual es útil para ver varias filas a la vez. Para hacer slicing de un conjunto de datos, use el operador `:` para especificar un rango de posiciones.

```py
# Get the first three rows
>>> dataset[:3]
{'label': [1, 1, 1],
 'text': ['the rock is destined to be the 21st century\'s new " conan " and that he\'s going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
  'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson\'s expanded vision of j . r . r . tolkien\'s middle-earth .',
  'effective but too-tepid biopic']}

# Get rows between three and six
>>> dataset[3:6]
{'label': [1, 1, 1],
 'text': ['if you sometimes like to go to the movies to have fun , wasabi is a good place to start .',
  "emerges as something rare , an issue movie that's so honest and keenly observed that it doesn't feel like one .",
  'the film provides some great insight into the neurotic mindset of all comics -- even those who have reached the absolute top of the game .']}
```

## IterableDataset

Un [IterableDataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset) se carga cuando se establece el parámetro `streaming` en `True` en [load_dataset()](/docs/datasets/v5.2.0/es/package_reference/loading_methods#datasets.load_dataset):

```py
>>> from datasets import load_dataset

>>> iterable_dataset = load_dataset("ethz/food101", split="train", streaming=True)
>>> for example in iterable_dataset:
...     print(example)
...     break
{'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=384x512 at 0x7F0681F5C520>, 'label': 6}
```

También puede crear un [IterableDataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset) a partir de un [Dataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset) *existente*, pero es más rápido que el modo de streaming porque el conjunto de datos se transmite desde archivos locales:

```py
>>> from datasets import load_dataset

>>> dataset = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> iterable_dataset = dataset.to_iterable_dataset()
```

Un [IterableDataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset) itera progresivamente sobre un conjunto de datos un ejemplo a la vez, por lo que no tienes que esperar a que se descargue todo el conjunto de datos antes de poder usarlo. Como puedes imaginar, ¡esto es bastante útil para conjuntos de datos grandes que quieres usar de inmediato!

### Indexación

El comportamiento de un [IterableDataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset) es diferente al de un [Dataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset) regular. No se puede acceder aleatoriamente a los ejemplos de un [IterableDataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset). En su lugar, se debe iterar sobre sus elementos, por ejemplo, llamando a `next(iter())` o con un bucle `for` para devolver el siguiente elemento del [IterableDataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset):

```py
>>> next(iter(iterable_dataset))
{'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=384x512 at 0x7F0681F59B50>,
 'label': 6}

>>> for example in iterable_dataset:
...     print(example)
...     break
{'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=384x512 at 0x7F7479DE82B0>, 'label': 6}
```

Pero un [IterableDataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset) admite la indexación de columnas que devuelve un iterable para los valores de la columna:

```py
>>> next(iter(iterable_dataset["label"]))
6
```

### Creación de un subconjunto

Puede devolver un subconjunto del conjunto de datos con un número específico de ejemplos mediante [IterableDataset.take()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset.take):

```py
# Get first three examples
>>> list(iterable_dataset.take(3))
[{'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=384x512 at 0x7F7479DEE9D0>,
  'label': 6},
 {'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=512x512 at 0x7F7479DE8190>,
  'label': 6},
 {'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=512x383 at 0x7F7479DE8310>,
  'label': 6}]
```

Pero, a diferencia de [el recorte](access/#slicing), [IterableDataset.take()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset.take) crea un nuevo [IterableDataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset).

## Próximos pasos

¿Le interesa saber más sobre las diferencias entre estos dos tipos de conjuntos de datos? Obtenga más información sobre ellos en la guía conceptual [Diferencias entre `Dataset` y `IterableDataset`](about_mapstyle_vs_iterable).

Para profundizar en estos tipos de conjuntos de datos, consulte la guía [Process](process) para aprender a preprocesar un [Dataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset) o la guía [Stream](stream) para aprender a preprocesar un [IterableDataset](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.IterableDataset).

