पायथन में मूविंग एवरेज की गणना कैसे करें


मूविंग एवरेज एक ऐसी तकनीक है जिसका उपयोग डेटा में “शोर” को कम करने और पैटर्न और रुझानों को अधिक आसानी से पहचानने के लिए समय श्रृंखला डेटा को सुचारू बनाने के लिए किया जा सकता है।

चलती औसत के पीछे का विचार किसी निश्चित अवधि के लिए “चलती औसत” पर पहुंचने के लिए पिछली कई अवधियों का औसत लेना है।

यह ट्यूटोरियल बताता है कि पायथन में मूविंग एवरेज की गणना कैसे करें।

उदाहरण: पायथन में मूविंग एवरेज

मान लीजिए कि हमारे पास निम्नलिखित तालिका है जो 10 अवधियों में एक निश्चित कंपनी की कुल बिक्री दिखाती है:

 x = [50, 55, 36, 49, 84, 75, 101, 86, 80, 104]

विधि 1: कमसम() फ़ंक्शन का उपयोग करें।

चलती औसत की गणना करने का एक तरीका कमसम () फ़ंक्शन का उपयोग करना है:

 import numpy as np

#define moving average function
def moving_avg(x, n):
    cumsum = np.cumsum(np.insert(x, 0, 0)) 
    return (cumsum[n:] - cumsum[:-n]) / float(n)

#calculate moving average using previous 3 time periods
n = 3
moving_avg(x, n):

array([47, 46.67, 56.33, 69.33, 86.67, 87.33, 89, 90])

यहां परिणाम की व्याख्या करने का तरीका बताया गया है:

  • तीसरी अवधि का मूविंग औसत 47 है। इसकी गणना पहले तीन अवधियों के औसत के रूप में की जाती है: (50+55+36)/3 = 47
  • चौथी अवधि के लिए चलती औसत 46.67 है। इसकी गणना पिछली तीन अवधियों के औसत के रूप में की जाती है: (55+36+49)/3 = 46.67

और इसी तरह।

विधि 2: पांडा का प्रयोग करें।

चलती औसत की गणना करने का दूसरा तरीका पांडा-आधारित फ़ंक्शन लिखना है:

 import pandas as pd

#define array to use and number of previous periods to use in calculation
x = [50, 55, 36, 49, 84, 75, 101, 86, 80, 104]
n=3

#calculate moving average
pd.Series(x).rolling(window=n).mean().iloc[n-1:].values

array([47, 46.67, 56.33, 69.33, 86.67, 87.33, 89, 90])

यह विधि पिछली विधि के समान ही परिणाम देती है, लेकिन यह बड़े सरणियों पर तेजी से चलती है।

ध्यान दें कि आप चलती औसत गणना में उपयोग करने के लिए पिछली अवधियों की कोई भी संख्या निर्दिष्ट कर सकते हैं। उदाहरण के लिए, आप n=5 का उपयोग करना पसंद कर सकते हैं:

 #use 5 previous periods to calculate moving average
n=5

#calculate moving average
pd.Series(x).rolling(window=n).mean().iloc[n-1:].values

array([54.8, 59.8, 69., 79., 85.2, 89.2])

चलती औसत की गणना करने के लिए आप जितनी अधिक अवधियों का उपयोग करेंगे, चलती औसत रेखा उतनी ही अधिक “सुचारू” होगी।

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *