मैं सोच रहा हूं कि एक निश्चित श्रृंखला के साथ पायथन में चल रहे सहसंबंध को करने का कोई तेज़ तरीका है या नहीं? मैंने पंडों का उपयोग करने की कोशिश की है और उदाहरण के लिए: df1.rolling(4).corr(df2)। हालाँकि, इसके लिए समान लंबाई के दो डेटाफ़्रेम की आवश्यकता होती है। क्या उपरोक्त पंडों के उदाहरण के समान करने का कोई तरीका है, लेकिन एक डेटाफ़्रेम को ठीक किया जा रहा है?
स्पष्ट करने के लिए, मैं नीचे df2 और df1 में मानों के बीच सहसंबंध गुणांक की गणना करना चाहता हूं।
उदाहरण: df2 और df1.loc के बीच पहला सहसंबंध [0:3] df2 और df1.loc के बीच दूसरा सहसंबंध [1:4]
आदि।
मैंने लूप बनाकर ऐसा करने में कामयाबी हासिल की है। हालांकि, बड़े डेटाफ्रेम के साथ काम करते समय मुझे यह अक्षम लगता है।
df1 = pd.DataFrame([1,3,2,4,5,6,3,4])
df2 = pd.DataFrame([1,2,3,2])
1 उत्तर
आप pandas.DataFrame.rolling
< का इस्तेमाल कर सकते हैं /a>जो लौटता है pandas.core.window.Rolling
जिसमें लागू करें विधि। फिर आप apply()
किसी भी फ़ंक्शन को पास कर सकते हैं जो आपके इच्छित सुधार की गणना करता है।
उदाहरण
- मान लें कि आप पियर्सन सहसंबंध गुणांक में रुचि रखते हैं। इसकी गणना scipy.stats.pearsonrका उपयोग करके की जा सकती है। ए>।
import pandas as pd
from scipy.stats import pearsonr
import numpy as np
df1 = pd.DataFrame([1,3,2,4,5,6,3,4,1,2,3,2,2,3,2,5,1,2,1,2,8,8,8,8,8,8,8])
df2 = pd.DataFrame([1,2,3,2])
CORR_VALS = df2[0].values
def get_correlation(vals):
return pearsonr(vals, CORR_VALS)[0]
df1['correlation'] = df1.rolling(window=len(CORR_VALS)).apply(get_correlation)
- ध्यान दें कि
df1.rolling()
मेंwindow
तर्क की लंबाई उसी सरणी के समान होनी चाहिए, जिसके विरुद्ध आप सहसंबंध की गणना कर रहे हैं।
यह आउटपुट
In [5]: df1['correlation'].values
Out[5]:
array([ nan, nan, nan, 0.31622777, 0.31622777,
0.71713717, 0.63245553, -0.63245553, -0.39223227, -0.63245553,
-0.63245553, 1. , 0. , -0.70710678, 0.81649658,
0. , 0.47809144, -0.23570226, -0.64699664, 0. ,
0. , 0.7570333 , 0.76509206, 0.11043153, -0.77302068,
-0.11043153, 0.86164044])
जो इस तरह दिखेगा:
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।