لفهم كيفية استخدام groupby
مع pct_change
في مكتبة Pandas لحساب التغير في القيم عبر الفترات، يمكننا أولاً التركيز على هيكل البيانات الخاص بك ومطلبك. لديك بيانات مرتبة حسب الشركة (Company)، المجموعة (Group)، والتاريخ (Date)، مع قيم (Value) مقابل كل تاريخ لكل شركة ومجموعة. تريد حساب التغير في القيمة عبر الفترات بناءً على هذه الفئات.
عند استخدام groupby
مع pct_change
، يجب أن نأخذ بعين الاعتبار كيف يتم ترتيب البيانات. بما أنك ترغب في حساب التغير في القيم عبر الفترات (في هذه الحالة، التغير في القيمة مقابل الفترة السابقة) لكل فئة (شركة ومجموعة)، يجب أن يكون لدينا ترتيب مناسب للفترات.
لتحقيق النتيجة المرجوة، يجب تقسيم البيانات أولاً باستخدام groupby
حسب الفئات (Company و Group)، ثم استخدام pct_change
لحساب التغير في القيمة عبر الفترات.
في البداية، يمكننا استيراد مكتبة Pandas وإنشاء إطار بيانات للبيانات الخاصة بك:
pythonimport pandas as pd
data = {
'Company': ['A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
'Group': ['X', 'X', 'X', 'XX', 'XX', 'XX', 'Y', 'Y', 'Y', 'Y', 'YY', 'YY', 'YY', 'YY'],
'Date': ['2015-01', '2015-02', '2015-03', '2015-01', '2015-02', '2015-03', '2015-01', '2015-02', '2015-03', '2015-04', '2015-01', '2015-02', '2015-03', '2015-04'],
'Value': [1, 2, 1.5, 1, 1.5, 0.75, 1, 1.5, 2, 3, 2, 2.5, 3, 3]
}
df = pd.DataFrame(data)
ثم، يمكننا استخدام groupby
مع pct_change
لحساب التغير في القيمة لكل فئة (شركة ومجموعة) عبر الفترات:
pythondf['Value/People'] = df.groupby(['Company', 'Group'])['Value'].pct_change()
هذا الكود يضيف عمودًا جديدًا إلى إطار البيانات يحتوي على التغير في القيمة لكل فئة عبر الفترات. سيكون لدينا NaN في الصفوف الأولى لكل فئة لأنه لا يمكن حساب التغير في القيمة بالنسبة للفترة السابقة.
الآن، بعد تنفيذ هذا الكود، يمكننا الحصول على النتيجة المرجوة، وهي إطار بيانات يحتوي على التغير في القيمة لكل فئة عبر الفترات.
المزيد من المعلومات
بمجرد تنفيذ الكود السابق، سنحصل على إطار بيانات يحتوي على التغير في القيمة لكل فئة عبر الفترات. سنقوم الآن بعرض البيانات بشكل جميل باستخدام مكتبة Pandas لجعل النتائج أكثر قراءة:
pythonprint(df)
نتائج الطباعة ستكون كالتالي:
css Company Group Date Value Value/People
0 A X 2015-01 1.00 NaN
1 A X 2015-02 2.00 1.000000
2 A X 2015-03 1.50 -0.250000
3 A XX 2015-01 1.00 NaN
4 A XX 2015-02 1.50 0.500000
5 A XX 2015-03 0.75 -0.500000
6 B Y 2015-01 1.00 NaN
7 B Y 2015-02 1.50 0.500000
8 B Y 2015-03 2.00 0.333333
9 B Y 2015-04 3.00 0.500000
10 B YY 2015-01 2.00 NaN
11 B YY 2015-02 2.50 0.250000
12 B YY 2015-03 3.00 0.200000
13 B YY 2015-04 3.00 0.000000
يظهر الإطار البيانات الأصلي مع العمود الجديد “Value/People” الذي يحتوي على التغير في القيمة لكل فئة عبر الفترات. كما نرى، تظهر NaN في الصفوف الأولى لكل فئة، وهذا متوقع لأنه لا يوجد قيمة سابقة للقياس.
يمكننا أيضًا تحسين العرض بتنسيق الأعمدة وترتيب البيانات بشكل أفضل باستخدام الدوال في Pandas، مما يسهل قراءة البيانات وفهمها للمستخدمين. على سبيل المثال، يمكن تنسيق الأعمدة بتغيير تنسيق الأرقام لعرضها بأرقام عشرية معينة، وتنسيق التواريخ لعرضها بشكل قابل للقراءة، وتنظيم البيانات بترتيب تصاعدي أو تنازلي حسب الحاجة.
بهذا، يكون المقال قد تم استكماله، وقدمنا معلومات شاملة حول كيفية استخدام groupby
مع pct_change
في Pandas لحساب التغير في القيم عبر الفترات لكل فئة مميزة في البيانات.