# Kenali dataset Anda

Terdapat dua jenis objek dataset, yaitu [Dataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset) reguler dan ✨ [IterableDataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.IterableDataset) ✨. [Dataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset) menyediakan akses acak yang cepat ke baris-baris data, serta memory-mapping sehingga pemuatan dataset yang besar pun hanya menggunakan jumlah memori perangkat yang relatif kecil. Namun, untuk dataset yang benar-benar sangat besar hingga tidak muat di disk maupun di memori, [IterableDataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.IterableDataset) memungkinkan Anda untuk mengakses dan menggunakan dataset tersebut tanpa harus menunggu proses unduhan selesai sepenuhnya!

Tutorial ini akan menunjukkan cara memuat dan mengakses [Dataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset) dan [IterableDataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.IterableDataset).

## Dataset

Saat Anda memuat split dataset, Anda akan mendapatkan objek [Dataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset). Anda dapat melakukan banyak hal dengan objek [Dataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset), itulah mengapa penting untuk belajar cara memanipulasi dan berinteraksi dengan data yang disimpan di dalamnya.
 
Tutorial ini menggunakan dataset [rotten_tomatoes](https://huggingface.co/datasets/rotten_tomatoes), tetapi silakan muat dataset apa pun yang Anda inginkan dan ikuti langkah-langkahnya!

```py
>>> from datasets import load_dataset

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

### Indeks

[Dataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset) berisi kolom data, dan setiap kolom dapat berupa tipe data yang berbeda. *index*, atau label sumbu, digunakan untuk mengakses contoh dari dataset. Misalnya, mengindeks berdasarkan baris mengembalikan kamus berisi satu contoh dari dataset:

```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 .'}
```

Gunakan operator `-` untuk memulai dari akhir dataset:

```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 .'}
```

Indeks berdasarkan nama kolom mengembalikan daftar semua nilai dalam kolom:

```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 .']
```

Anda dapat mengombinasikan indeks nama baris dan kolom untuk mengembalikan nilai spesifik pada posisi tertentu:

```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 .'
```

Urutan pengindeksan tidak penting. Pengindeksan berdasarkan nama kolom terlebih dahulu mengembalikan objek [Column](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Column) yang dapat Anda indekskan seperti biasa dengan indeks baris:

```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
```

### Pemotongan

Slicing mengembalikan slice - atau subset - dari dataset, yang berguna untuk melihat beberapa baris sekaligus. Untuk melakukan slicing pada dataset, gunakan operator `:` untuk menentukan rentang posisi.

```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

[IterableDataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.IterableDataset) dimuat ketika Anda mengatur parameter `streaming` menjadi `True` di [load_dataset()](/docs/datasets/v5.2.0/id/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}
```

Anda juga dapat membuat [IterableDataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.IterableDataset) dari [Dataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset) yang *ada*, tetapi ini lebih cepat daripada mode streaming karena dataset dialirkan dari file lokal:

```py
>>> from datasets import load_dataset

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

[IterableDataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.IterableDataset) mengiterasi dataset secara progresif satu contoh pada satu waktu, sehingga Anda tidak perlu menunggu seluruh dataset diunduh sebelum dapat menggunakannya. Seperti yang bisa Anda bayangkan, ini sangat berguna untuk dataset besar yang ingin Anda gunakan segera!

### Indeks

Perilaku [IterableDataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.IterableDataset) berbeda dari [Dataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset) biasa. Anda tidak dapat mengakses contoh secara acak dalam [IterableDataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.IterableDataset). Sebagai gantinya, Anda harus mengiterasi elemen-elemennya, misalnya dengan memanggil `next(iter())` atau dengan loop `for` untuk mengembalikan item berikutnya dari [IterableDataset](/docs/datasets/v5.2.0/id/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}
```

Namun, [IterableDataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.IterableDataset) mendukung indeks kolom yang mengembalikan iterable untuk nilai kolom:

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

### Membuat subset

Anda dapat mengembalikan subset dari dataset dengan jumlah contoh tertentu menggunakan [IterableDataset.take()](/docs/datasets/v5.2.0/id/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}]
```

Namun, berbeda dengan [pengirisan](access/#slicing), [IterableDataset.take()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.IterableDataset.take) membuat [IterableDataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.IterableDataset) baru.

## Langkah selanjutnya

Tertarik untuk mempelajari lebih lanjut tentang perbedaan antara dua jenis dataset ini? Pelajari lebih lanjut tentang mereka dalam panduan konseptual [Perbedaan antara `Dataset` dan `IterableDataset`](about_mapstyle_vs_iterable).

Untuk lebih memahami secara langsung jenis-jenis dataset ini, lihat panduan [Process](process) untuk mempelajari cara pra-pemrosesan [Dataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset) atau panduan [Stream](stream) untuk mempelajari cara pra-pemrosesan [IterableDataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.IterableDataset).

