English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
مثال على عملية إعادة بناء مؤشر 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 اختياريًا. افتراضيًا، يتم تنفيذ هذه العملية على الأعمدة، حيث يتم اعتبار كل عمود كشكل من أشكال مصفوفة.
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، يمكنك تنفيذ العمليات على كل سطر.
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
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 بنفس القدر من التشابه وتقبل أي دالة تأخذ قيمة واحدة وتعيد قيمة واحدة.
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
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