عندما نتعامل مع البيانات نحتاج في كثير من الأحيان الى اجراء بعض العمليات او تطبيق بعض الدوال على الصفوف او الأعمدة. في هذا المقال سوف نتعرف على كيفية عمل ذلك من خلال استخدام الدالة apply. في البداية سوف نقوم استيراد المكتبات التي سوف نحتاجها وهي:
In:
import pandas as pd
import numpy as np
كذلك نفرض ان لدينا البيانات التالية:
In: df = pd.DataFrame([{'a': 3, 'b': 1}, {'a': 2, 'b': 4}, {'a': 0, 'b': 6}]) df Out: a b 0 3 1 1 2 4 2 0 6
بعد ذلك سوف نقوم باستخدام الدالة apply والتي تأخذ الشكل التالي:
df.apply(func, axis, args, ...)
حيث أن:
df | إطار بيانات (dataframe). |
func | دالة (function). |
axis | يأخذ القيمة 0: لتطبيق الدالة على الأعمدة او 1: لتطبيقها على الصفوف. |
args | متغيرات الدالة. |
وهناك عدة أمثلة على كيفية استخدامها يمكن تلخيصها كما يلي:
1. تطبيق دالة على كامل عناصر الصفوف او الأعمدة. مثل جمع العناصر على مستوى الصفوف:
In: new_df = df.apply(sum, axis=1) new_df Out: Out: 0 4 1 6 2 6
2. تطبيق دالة على عناصر الصفوف والأعمدة بشكل منفصل. مثل أخذ الجذر التربعي:
In: new_df = df.apply(np.sqrt) new_df Out: a b 0 1.732051 1.00000 1 1.414214 2.00000 2 0.000000 2.44949
ويمكن تطبيقها على عمود محدد كما يلي:
In: df['a'] = df['a'].apply(np.sqrt) df Out: a b 0 1.732051 1 1 1.414214 4 2 0.000000 6
او صف محدد كما يلي:
In: df.iloc[2] = df.iloc[2].apply(np.sqrt) df Out: a b 0 3.0 1.00000 1 2.0 4.00000 2 0.0 2.44949
3. يمكن استخدام الدالة apply مع اي دالة معرفة، مثل دالة حساب التربيع:
In: def Squared (x): out=x**2 return(out) new_df = df.apply(Squared) new_df Out: a b 0 9.0 1.0 1 4.0 16.0 2 0.0 6.0
او مع دالة lambda المعرفة كما يلي:
In: new_df = df.apply(lambda x: x**2, axis=0 ) new_df Out: a b 0 9.0 1.0 1 4.0 16.0 2 0.0 6.0
4. استخدام دالة apply مع دالة ذات متغيرات، مثل:
In: def add_number(x,a): return x+a new_df = df.apply(add_number,args=[2]) new_df Out: a b 0 5 3 1 4 6 2 2 8