Datasets documentation
Pandas와 함께 사용
Pandas와 함께 사용
이 문서는 datasets를 Pandas와 함께 사용하는 방법에 대한 간단한 소개입니다. 특히 Pandas 함수를 사용하여 데이터를 처리하는 방법과 Pandas로 데이터를 변환하거나 Pandas에서 데이터를 가져오는 방법에 중점을 둡니다.
datasets는 내부적으로 PyArrow를 사용하며 PyArrow는 Pandas와 잘 통합되어 있어 빠른 연산을 수행할 수 있으므로 특히 유용합니다.
데이터셋 형식
기본적으로 datasets는 정수, 실수, 문자열, 리스트 등 일반적인 Python 객체를 반환합니다.
To get Pandas DataFrames or Series instead, you can set the format of the dataset to pandas using 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: objectIterableDataset 객체, 예를 들어 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.0데이터 처리
Pandas 함수는 일반적으로 직접 작성한 Python 함수보다 빠르므로 데이터 처리를 최적화하는 좋은 선택지입니다. Dataset.map() 또는 Dataset.filter()에서 Pandas 함수를 사용해 데이터셋을 처리할 수 있습니다:
>>> 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.0batched=True를 사용하는 이유는 Pandas에서 데이터를 행별로 처리하는 것보다 배치 단위로 처리하는 것이 더 빠르기 때문입니다. 또한 map()에서 batch_size=를 사용하여 각 df의 크기를 설정할 수도 있습니다.
이것은 IterableDataset.map()과 IterableDataset.filter()에도 적용됩니다.
Pandas에서 가져오기 또는 내보내기
Pandas에서 데이터를 가져오려면 Dataset.from_pandas()를 사용할 수 있습니다:
ds = Dataset.from_pandas(df)
And you can use Dataset.to_pandas() to export a Dataset to a Pandas DataFrame:
df = Dataset.to_pandas()