English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تطبيق الدوال لـ Pandas

مثال على عملية إعادة بناء مؤشر Pandas

لإضافة دالة الخاصة بك أو دالة من مكتبة أخرى إلى كائن Pandas، يجب أن تعرف ثلاث طرق مهمة. وهي كالتالي. يجب أن تختار الطريقة المناسبة بناءً على ما إذا كنت ترغب في تنفيذ عملية على كامل الجدول أو على السطور أو الأعمدة أو على العناصر.

تطبيقات وظائف الجدول: pipe() تطبيقات وظائف السطر أو الصف: apply() تطبيقات وظائف المستوى العضوي: applymap()

تطبيقات وظائف الجدول

يمكنك تنفيذ عمليات مخصصة على DataFrame عن طريق إدراج الدالة والعدد المناسب من المعامل كمعاملات خطوط الأنابيب.

دالة المضافة

على سبيل المثال، إضافة 2 قيمة إلى DataFrame. وظيفة المضافة تضيف قيمتين数字تين وتعيد مجموعهما.

  def adder(ele1,ele2):
    return ele1+ele2

نستخدم الدوال المخصصة لتعامل DataFrame.

 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.pipe(adder,2)

لننظر في البرنامج الكامل:

 import pandas as pd
 import numpy as np
 def adder(ele1,ele2):
    return ele1+ele2
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.pipe(adder,2)
 print(df.apply(np.mean))

نتائج التنفيذ:

       col1 col2 col3
 0 2.176704 2.219691 1.509360
 1 2.222378 2.422167 3.953921
 2 2.241096 1.135424 2.696432
 3 2.355763 0.376672 1.182570
 4 2.308743 2.714767 2.130288

تطبيقات وظائف السطر أو الصف

يمكنك استخدام طريقة apply() لتطبيق أي دالة على مقياس DataFrame أو Panel، هذه الطريقة مثل طرق الإحصاء الوصفي تستخدم معامل axis اختياريًا. افتراضيًا، يتم تنفيذ هذه العملية على الأعمدة، حيث يتم اعتبار كل عمود كشكل من أشكال مصفوفة.

مثال 1

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.apply(np.mean)
 print(df.apply(np.mean))

نتائج التنفيذ:

 col1 -0.288022
 col2 1.044839
 col3 -0.187009
 dtype: float64

باستخدام إدراج معامل axis، يمكنك تنفيذ العمليات على كل سطر.

مثال 2

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.apply(np.mean,axis=1)
 print(df.apply(np.mean))

نتائج التنفيذ:

 col1 0.034093
 col2 -0.152672
 col3 -0.229728
 dtype: float64

مثال 3

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.apply(lambda x: x.max() - x.min())
 print(df.apply(np.mean))

نتائج التنفيذ:

 col1 -0.167413
 col2 -0.370495
 col3 -0.707631
 dtype: float64

تطبيق دالة على مستوى العنصر

ليس كل الدوال يمكن تحويلها (لا يعود NumPy مكونًا مصريًا آخر ولا يعود بأي شيء)، يتمتع طريقة applymap() على DataFrame و map() على Series بنفس القدر من التشابه وتقبل أي دالة تأخذ قيمة واحدة وتعيد قيمة واحدة.

مثال 1

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 # وظيفة مخصصة
 df['col1'].map(lambda x: x*100)
 print(df.apply(np.mean))

نتائج التنفيذ:

 col1 0.480742
 col2 0.454185
 col3 0.266563
 dtype: float64

مثال 2

 import pandas as pd
 import numpy as np
 # وظيفة مخصصة
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.applymap(lambda x: x*100)
 print(df.apply(np.mean))

نتائج التنفيذ:

 col1 0.395263
 col2 0.204418
 col3 -0.795188
 dtype: float64