كيفية حساب الإزاحة لكل مجموعة في الباندا


يمكنك استخدام الطرق التالية لحساب القيم المتغيرة للمجموعة في Pandas DataFrame:

الطريقة الأولى: حساب الإزاحة بواسطة مجموعة

 df[' lagged_values '] = df. groupby ([' group '])[' values ']. shift ( 1 )

الطريقة الثانية: حساب الإزاحة بواسطة مجموعات متعددة

 df[' lagged_values '] = df. groupby ([' group1 ', ' group2 '])[' values ']. shift ( 1 )

لاحظ أن قيمة الدالة Shift() تشير إلى عدد القيم التي سيتم حساب الإزاحة لها.

توضح الأمثلة التالية كيفية استخدام كل طريقة عمليًا.

مثال 1: حساب الإزاحة بواسطة مجموعة

لنفترض أن لدينا DataFrame الباندا التالي الذي يوضح المبيعات التي أجراها متجران في أيام متتالية:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' sales ': [18, 10, 14, 13, 19, 24, 25, 29]})
#view DataFrame
print (df)

  blind sales
0 to 18
1 to 10
2 to 14
3 to 13
4 B 19
5 B 24
6 B 25
7 B 29

يمكننا استخدام الصيغة التالية لإنشاء عمود إزاحة يعرض مبيعات اليوم السابق لكل متجر:

 #add column that displays lag of sales column by store
df[' lagged_sales '] = df. groupby ([' store '])[' sales ']. shift ( 1 )

#view updated DataFrame
print (df)

  store sales lagged_sales
0 to 18 NaN
1 to 10 18.0
2 A 14 10.0
3 A 13 14.0
4 B 19 NaN
5 B 24 19.0
6 B 25 24.0
7 B 29 25.0

وإليك كيفية تفسير النتيجة:

  • القيمة الأولى في عمود الإزاحة هي NaN نظرًا لعدم وجود قيمة سابقة في عمود المبيعات للمتجر أ.
  • القيمة الثانية في عمود الإزاحة هي 18 لأنها القيمة السابقة في عمود المبيعات للمتجر أ.

وما إلى ذلك وهلم جرا.

مثال 2: حساب الإزاحة بواسطة مجموعات متعددة

لنفترض أن لدينا DataFrame الباندا التالية التي تعرض المبيعات التي أجراها موظفو متجرين في أيام متتالية:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' employee ':['O', 'O', 'R', 'R', 'O', 'O', 'R', 'R'],
                   ' sales ': [18, 10, 14, 13, 19, 24, 25, 29]})
#view DataFrame
print (df)

  store employee sales
0 AO 18
1 AO 10
2 AR 14
3 AR 13
4 BO 19
5 BO 24
6 BR 25
7 BR 29

يمكننا استخدام الصيغة التالية لإنشاء عمود إزاحة يعرض مبيعات اليوم السابق لكل موظف في كل متجر:

 #add column that displays lag of sales column by store and employee
df[' lagged_sales '] = df. groupby ([' store ',' employee '])[' sales ']. shift ( 1 )

#view updated DataFrame
print (df)

  store employee sales lagged_sales
0 AO 18 NaN
1 AO 10 18.0
2 AR 14 NaN
3 AR 13 14.0
4 BO 19 NaN
5 BO 24 19.0
6 BR 25 NaN
7 BR 29 25.0

يعرض عمود lalag_sales الجديد مبيعات اليوم السابق لكل موظف في كل متجر.

ملاحظة : في هذا المثال، قمنا بالتجميع حسب عمودين، ولكن يمكنك التجميع حسب أي عدد تريده من الأعمدة عن طريق تضمين أي عدد تريده من أسماء المتغيرات في الدالة groupby() .

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في الباندا:

كيفية حذف الأعمدة في الباندا
كيفية استبعاد الأعمدة في الباندا
كيفية تطبيق دالة على الأعمدة المحددة في Pandas
كيفية تغيير ترتيب الأعمدة في Pandas DataFrame

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *