تم حلها: تملأ الباندا للخلف بعد أخذ العينات

في عالم اليوم ، يعد التلاعب بالبيانات وتحليلها ضروريين لفهم الظواهر المختلفة واتخاذ قرارات مستنيرة. تتمثل إحدى المهام الشائعة في تحليل البيانات في إعادة تجميع بيانات السلاسل الزمنية ، والتي تتضمن تغيير تواتر البيانات ، إما عن طريق الاختزال (زيادة التكرار) أو الاختزال (تقليل التكرار). في هذه المقالة ، سنناقش عملية الملء العكسي أثناء اختزال بيانات السلاسل الزمنية باستخدام مكتبة Python القوية ، Pandas.

رجوع ملء بيانات السلاسل الزمنية

عندما نقوم بتجميع بيانات السلاسل الزمنية ، فإننا نزيد من تكرار نقاط البيانات ، مما ينتج عنه عادةً قيم مفقودة لنقاط البيانات التي تم إنشاؤها حديثًا. لملء هذه القيم المفقودة ، يمكننا استخدام مجموعة متنوعة من الطرق. إحدى هذه الطرق تسمى ملء إلى الوراء، المعروف أيضا باسم ردم. التعبئة العكسية هي عملية ملء القيم المفقودة بالقيمة التالية المتوفرة في السلسلة الزمنية.

مكتبة الباندا

بيثون مكتبة الباندا هي أداة أساسية لمعالجة البيانات ، حيث تقدم مجموعة واسعة من الوظائف لمعالجة هياكل البيانات مثل DataFrames وبيانات السلاسل الزمنية. يحتوي Pandas على ميزات مدمجة تسهل العمل مع بيانات السلاسل الزمنية ، مثل إعادة أخذ العينات وتعبئة القيم المفقودة ، مما يمكننا من أداء الملء العكسي بكفاءة بعد الاختزال.

الحل: الملء الخلفي مع الباندا

لتوضيح عملية تطبيق التعبئة العكسية بعد اختزال بيانات السلاسل الزمنية باستخدام Pandas ، دعنا نفكر في مثال بسيط. سنبدأ باستيراد المكتبات الضرورية وإنشاء نموذج لمجموعة بيانات السلاسل الزمنية.

import pandas as pd
import numpy as np

# Create a sample time series dataset
date_rng = pd.date_range(start='2022-01-01', end='2022-01-10', freq='D')
data = np.random.randint(0, 100, size=(len(date_rng), 1))

df = pd.DataFrame(date_rng, columns=['date'])
df['value'] = data

الآن بعد أن أصبح لدينا بيانات العينة ، سنواصل عملية الاختزال وتطبيق طريقة التعبئة العكسية. في هذا المثال ، سنختزل من التردد اليومي إلى التردد بالساعة:

# Upsample the data to hourly frequency
df.set_index('date', inplace=True)
hourly_df = df.resample('H').asfreq()

# Apply the backward fill method to fill missing values
hourly_df.fillna(method='bfill', inplace=True)

في الكود أعلاه ، قمنا أولاً بتعيين عمود "التاريخ" كفهرس ثم أعدنا تشكيل البيانات إلى تردد كل ساعة باستخدام إعادة تشكيل () وظيفة. يحتوي DataFrame الناتج على قيم مفقودة بسبب زيادة التردد. ثم استخدمنا ملف فيلنا () طريقة مع المعلمة "bfill" لإجراء تعبئة رجعية على القيم المفقودة.

شرح خطوة بخطوة

دعنا نقسم الكود لفهمه بشكل أفضل:

1. قمنا أولاً باستيراد مكتبات Pandas و NumPy:

   import pandas as pd
   import numpy as np
   

2. أنشأنا عينة من مجموعة بيانات السلاسل الزمنية باستخدام نطاق الموعد() وظيفة من Pandas لإنشاء تواريخ يومية وقيم عددية عشوائية:

   date_rng = pd.date_range(start='2022-01-01', end='2022-01-10', freq='D')
   data = np.random.randint(0, 100, size=(len(date_rng), 1))
   df = pd.DataFrame(date_rng, columns=['date'])
   df['value'] = data
   

3. بعد ذلك ، قمنا بتعيين عمود "التاريخ" كمؤشر وأعدنا عينات البيانات إلى تردد كل ساعة باستخدام إعادة تشكيل () و asfreq () المهام:

   df.set_index('date', inplace=True)
   hourly_df = df.resample('H').asfreq()
   

4. أخيرًا ، قمنا بملء القيم المفقودة في DataFrame المضاعف باستخدام امتداد فيلنا () طريقة مع معلمة "bfill" للتعبئة العكسية:

   hourly_df.fillna(method='bfill', inplace=True)
   

وفي الختام

في هذه المقالة ، استكشفنا عملية تعبئة عكسية بعد اختزال بيانات السلاسل الزمنية باستخدام مكتبة Pandas القوية في Python. من خلال فهم هذه التقنيات وتنفيذها ، يمكننا معالجة بيانات السلاسل الزمنية وتحليلها بكفاءة ، واكتشاف رؤى قيمة واتخاذ قرارات مستنيرة.

الوظائف ذات الصلة:

اترك تعليق