Datasets documentation
Gunakan dengan Pandas
Gunakan dengan Pandas
Dokumen ini adalah pengantar singkat tentang penggunaan datasets dengan Pandas, dengan fokus khusus pada cara memproses dataset menggunakan fungsi Pandas, serta cara mengonversi dataset ke Pandas atau dari Pandas.
Hal ini sangat berguna karena memungkinkan operasi yang cepat, mengingat datasets menggunakan PyArrow di baliknya dan PyArrow terintegrasi dengan baik dengan Pandas.
Format dataset
Secara default, dataset mengembalikan objek Python biasa: bilangan bulat, bilangan desimal, string, daftar, dan sebagainya.
Untuk mendapatkan Pandas DataFrames atau Series sebagai gantinya, Anda dapat mengatur format dataset menjadi pandas menggunakan Dataset.with_format():
>>> from datasets import Dataset
>>> data = {"col_0": ["a", "b", "c", "d"], "col_1": [0., 0., 1., 1.]}
>>> ds = Dataset.from_dict(data)
>>> ds = ds.with_format("pandas")
>>> ds[0] # pd.DataFrame
col_0 col_1
0 a 0.0
>>> ds[:2] # pd.DataFrame
col_0 col_1
0 a 0.0
1 b 0.0
>>> ds["data"] # pd.Series
0 a
1 b
2 c
3 d
Name: col_0, dtype: objectHal ini juga berlaku untuk objek IterableDataset yang diperoleh, misalnya, menggunakan load_dataset(..., streaming=True):
>>> ds = ds.with_format("pandas")
>>> for df in ds.iter(batch_size=2):
... print(df)
... break
col_0 col_1
0 a 0.0
1 b 0.0Proses data
Fungsi Pandas umumnya lebih cepat daripada fungsi python yang ditulis manual, sehingga merupakan pilihan yang baik untuk mengoptimalkan pemrosesan data. Anda dapat menggunakan fungsi Pandas untuk memproses dataset di Dataset.map() atau Dataset.filter():
>>> from datasets import Dataset
>>> data = {"col_0": ["a", "b", "c", "d"], "col_1": [0., 0., 1., 1.]}
>>> ds = Dataset.from_dict(data)
>>> ds = ds.with_format("pandas")
>>> ds = ds.map(lambda df: df.assign(col_2=df.col_1 + 1), batched=True)
>>> ds[:2]
col_0 col_1 col_2
0 a 0.0 1.0
1 b 0.0 1.0
>>> ds = ds.filter(lambda df: df.col_0 == "b", batched=True)
>>> ds[0]
col_0 col_1 col_2
0 b 0.0 1.0Kami menggunakan batched=True karena memproses data dalam bentuk batch di Pandas lebih cepat daripada baris per baris. Anda juga dapat menggunakan batch_size= di map() untuk mengatur ukuran setiap df.
Hal ini juga berlaku untuk IterableDataset.map() dan IterableDataset.filter().
Import atau Export dari Pandas
Untuk mengimpor data dari Pandas, Anda dapat menggunakan Dataset.from_pandas():
ds = Dataset.from_pandas(df)
Dan Anda dapat menggunakan Dataset.to_pandas() untuk mengekspor Dataset ke Pandas DataFrame:
df = Dataset.to_pandas()