الباندا: كيفية إعادة تشكيل السلاسل الزمنية باستخدام groupby ()


إن إعادة تشكيل بيانات السلاسل الزمنية تعني تجميع البيانات خلال فترة جديدة.

إذا كنت تريد إعادة تشكيل سلسلة زمنية في الباندا باستخدام عامل التشغيل groupby ، فيمكنك استخدام بناء الجملة الأساسي التالي:

 group = df. groupby ([pd. Group (freq=' W '), ' store '])

result = group[' sales ']. sum (). unstack (' store '). fillna (0) 

يقوم هذا المثال تحديدًا بتجميع صفوف DataFrame حسب عمود المتجر ، ثم يعيد تشكيل السلسلة الزمنية حسب الأسبوع ( freq=’W’ )، ثم يحسب مجموع القيم في عمود المبيعات .

لاحظ أنه يمكننا إعادة تشكيل بيانات السلاسل الزمنية لفترات زمنية مختلفة، بما في ذلك:

  • ص : ثواني
  • دقيقة : دقائق
  • ح : ساعات
  • ي : يوم
  • ث : اسبوع
  • م : شهر
  • س : الربع
  • ج : سنة

يوضح المثال التالي كيفية إعادة تشكيل بيانات السلاسل الزمنية باستخدام عملية التجميع عمليًا.

مثال: إعادة تشكيل سلسلة زمنية باستخدام التجميع في Pandas

لنفترض أن لدينا DataFrame الباندا التالي الذي يوضح إجمالي المبيعات التي تتم كل يوم في متجرين مختلفين:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' sales ': [13, 14, 17, 17, 16, 22, 28, 10, 17, 10, 11],
                   ' store ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B']} ,
                   index=pd. date_range ('2023-01-06', '2023-01-16', freq='d'))

#view DataFrame
print (df)

            sales store
2023-01-06 13 A
2023-01-07 14 A
2023-01-08 17 A
2023-01-09 17 A
2023-01-10 16A
2023-01-11 22 B
2023-01-12 28 B
2023-01-13 10 B
2023-01-14 17 B
2023-01-15 10 B
2023-01-16 11 B

لنفترض أننا نريد تجميع الصفوف حسب المتجر ، ثم إعادة تشكيل السلسلة الزمنية حسب الأسبوع، ثم حساب مجموع القيم في عمود المبيعات .

يمكننا استخدام بناء الجملة التالي للقيام بذلك:

 #group by store and resample time series by week
group = df. groupby ([pd. Group (freq=' W '), ' store '])

#calculate sum of sales each week by store
result = group[' sales ']. sum (). unstack (' store '). fillna (0)

#view results
print (result)

store AB
2023-01-08 14.0 0.0
2023-01-15 16.5 17.0
2023-01-22 0.0 11.0

ومن النتيجة يمكننا أن نرى:

  • مجموع المبيعات للأسبوع المنتهي في 01/08/2023 في المتجر أ هو 14 .
  • مجموع المبيعات للأسبوع المنتهي في 01/08/2023 في المتجر ب هو 0 .

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

لاحظ أننا في هذا المثال اخترنا حساب مجموع القيم في عمود المبيعات .

ومع ذلك، يمكننا اختيار مقاييس أخرى مثل العدد والمتوسط والوسيط والحد الأدنى والحد الأقصى وما إلى ذلك.

ما عليك سوى استبدال sum() في الكود أعلاه بـ count() و Mean() و Median() وما إلى ذلك. لحساب المقياس الذي تختاره.

مصادر إضافية

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

كيفية رسم سلسلة زمنية في Matplotlib
كيفية رسم سلسلة زمنية في Seaborn
كيفية حساب MAPE من السلاسل الزمنية في بايثون

Add a Comment

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