كيفية إعادة تشكيل بيانات السلاسل الزمنية في لغة بايثون (مع أمثلة)
تعني إعادة أخذ عينات من بيانات السلاسل الزمنية تلخيص البيانات أو تجميعها خلال فترة جديدة.
يمكننا استخدام بناء الجملة الأساسي التالي لإعادة تشكيل بيانات السلاسل الزمنية في بايثون:
#find sum of values in column1 by month weekly_df[' column1 '] = df[' column1 ']. resample (' M '). sum () #find mean of values in column1 by week weekly_df[' column1 '] = df[' column1 ']. resample (' W '). mean ()
لاحظ أنه يمكننا إعادة تشكيل بيانات السلاسل الزمنية لفترات زمنية مختلفة، بما في ذلك:
- ص : ثواني
- دقيقة : دقائق
- ح : ساعات
- ي : يوم
- ث : اسبوع
- م : شهر
- س : الربع
- ج : سنة
يوضح المثال التالي كيفية إعادة تشكيل بيانات السلاسل الزمنية عمليًا.
مثال: إعادة تشكيل بيانات السلاسل الزمنية في بايثون
لنفترض أن لدينا DataFrame الباندا التالي الذي يوضح إجمالي المبيعات التي تتم كل ساعة بواسطة شركة على مدار عام واحد:
import pandas as pd import numpy as np #make this example reproducible n.p. random . seeds (0) #create DataFrame with hourly index df = pd. DataFrame (index= pd.date_range (' 2020-01-06 ', ' 2020-12-27 ', freq=' h ')) #add column to show sales by hour df[' sales '] = np. random . randint (low=0, high=20, size= len (df. index )) #view first five rows of DataFrame df. head () dirty 2020-01-06 00:00:00 12 2020-01-06 01:00:00 15 2020-01-06 02:00:00 0 2020-01-06 03:00:00 3 2020-01-06 04:00:00 3
إذا قمنا بإنشاء مخطط خطي لتصور بيانات المبيعات، فسيبدو كما يلي:
import matplotlib. pyplot as plt
#plot time series data
plt. plot (df. index , df. sales , linewidth= 3 )
من الصعب تفسير هذا الرسم البياني، لذلك يمكننا تلخيص بيانات المبيعات حسب الأسبوع:
#create new DataFrame
weekly_df = pd. DataFrame ()
#create 'sales' column that summarizes total sales by week
weekly_df[' sales '] = df[' sales ']. resample (' W '). sum ()
#view first five rows of DataFrame
weekly_df. head ()
dirty
2020-01-12 1519
2020-01-19 1589
2020-01-26 1540
2020-02-02 1562
2020-02-09 1614
يُظهر DataFrame الجديد مجموع المبيعات في الأسبوع.
يمكننا بعد ذلك إنشاء مخطط سلسلة زمنية باستخدام هذه البيانات الأسبوعية:
import matplotlib. pyplot as plt
#plot weekly sales data
plt. plot ( weekly_df.index , weekly_df.sales , linewidth= 3 )
من الأسهل قراءة هذا المخطط لأننا نمثل فقط بيانات المبيعات لمدة 51 أسبوعًا فرديًا، مقابل بيانات المبيعات لمدة 8545 ساعة فردية في المثال الأول.
ملاحظة : في هذا المثال، قمنا بتلخيص بيانات المبيعات حسب الأسبوع، ولكن يمكننا أيضًا تلخيصها حسب الشهر أو ربع السنة إذا أردنا رسم نقاط بيانات أقل.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في بايثون:
كيفية رسم سلسلة زمنية في Matplotlib
كيفية رسم سلسلة زمنية في Seaborn
كيفية حساب MAPE من السلاسل الزمنية في بايثون