Datasets documentation

الاستخدام مع Pandas

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

الاستخدام مع Pandas

هذا المستند مقدمة سريعة لاستخدام datasets مع Pandas، مع تركيز خاص على كيفية معالجة مجموعات البيانات باستخدام دوال Pandas، وكيفية تحويل مجموعة بيانات إلى Pandas أو من Pandas.

يُعدّ هذا مفيدًا بشكل خاص لأنه يتيح عمليات سريعة، حيث يستخدم datasets PyArrow في الخلفية، وPyArrow مُدمج جيدًا مع Pandas.

تنسيق مجموعة البيانات

بشكل افتراضي، تُرجع مجموعات البيانات كائنات بايثون العادية: أعداد صحيحة، وأعداد عشرية، ونصوص، وقوائم، وما إلى ذلك.

للحصول على إطارات بيانات Pandas أو سلاسل Series بدلاً من ذلك، يمكنك تعيين صيغة مجموعة البيانات إلى pandas باستخدام 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: object

يعمل هذا أيضًا مع كائنات IterableDataset التي يتم الحصول عليها، على سبيل المثال، باستخدام 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 أسرع بشكل عام من دوال بايثون المكتوبة يدوياً، ولذلك فهي خيار جيد لتحسين معالجة البيانات. يمكنك استخدام دوال Pandas لمعالجة مجموعة بيانات في Dataset.map() أو 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.0

نستخدم batched=True لأن معالجة دفعات البيانات في Pandas أسرع من معالجتها صفًا بصف. كما يمكن استخدام batch_size= في map() لتحديد حجم كل df.

يعمل هذا أيضًا مع IterableDataset.map() و IterableDataset.filter().

استيراد أو تصدير من Pandas

لاستيراد البيانات من Pandas، يمكنك استخدام Dataset.from_pandas():

ds = Dataset.from_pandas(df)

ويمكنك استخدام Dataset.to_pandas() لتصدير مجموعة بيانات إلى إطار بيانات Pandas:

df = Dataset.to_pandas()
Update on GitHub