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

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

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

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

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

للحصول على إطارات بيانات Pandas أو سلاسل Series بدلاً من ذلك، يمكنك تعيين صيغة مجموعة البيانات إلى `pandas` باستخدام [Dataset.with_format()](/docs/datasets/v5.2.0/ar/package_reference/main_classes#datasets.Dataset.with_format):

```py
>>> 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)`:

```py
>>> 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()](/docs/datasets/v5.2.0/ar/package_reference/main_classes#datasets.Dataset.map) أو [Dataset.filter()](/docs/datasets/v5.2.0/ar/package_reference/main_classes#datasets.Dataset.filter):

```python
>>> 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()](/docs/datasets/v5.2.0/ar/package_reference/main_classes#datasets.IterableDataset.map) و [IterableDataset.filter()](/docs/datasets/v5.2.0/ar/package_reference/main_classes#datasets.IterableDataset.filter).

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

لاستيراد البيانات من Pandas، يمكنك استخدام [Dataset.from_pandas()](/docs/datasets/v5.2.0/ar/package_reference/main_classes#datasets.Dataset.from_pandas):

```python
ds = Dataset.from_pandas(df)
```

ويمكنك استخدام [Dataset.to_pandas()](/docs/datasets/v5.2.0/ar/package_reference/main_classes#datasets.Dataset.to_pandas) لتصدير مجموعة بيانات إلى إطار بيانات Pandas:

```python
df = Dataset.to_pandas()
```

