में 2 तर्कों की आवश्यकता है। मैं रोलूली का उपयोग ऐसे फॉर्मूला के साथ करने की कोशिश कर रहा हूं जिसके लिए 2 तर्क की आवश्यकता है। मेरी जानकारी के लिए एक ही रास्ता करने के लिए, केंडल ताऊ सहसंबंध की गणना करने के साथ मानक टाई सुधार शामिल हैं (जब तक आप स्क्रैच से फ़ॉर्मूला बना) है:एक फ़ंक्शन के साथ rolling_apply का उपयोग करना जिसके लिए पांडस
>>> import scipy
>>> x = [5.05, 6.75, 3.21, 2.66]
>>> y = [1.65, 26.5, -5.93, 7.96]
>>> z = [1.65, 2.64, 2.64, 6.95]
>>> print scipy.stats.stats.kendalltau(x, y)[0]
0.333333333333
मैं भी rollapply और दो तर्क लेने के साथ समस्या से अवगत हूँ के रूप में यहाँ प्रलेखित:
फिर भी, मैं रोलिंग आधार पर एकाधिक कॉलम के साथ डेटाफ्रेम पर केंडलटौ गणना करने का कोई तरीका खोजने के लिए संघर्ष कर रहा हूं।
:मेरे dataframe इस
A = pd.DataFrame([[1, 5, 1], [2, 4, 1], [3, 3, 1], [4, 2, 1], [5, 1, 1]],
columns=['A', 'B', 'C'], index = [1, 2, 3, 4, 5])
की तरह कुछ एक समारोह है कि मैं इस तरह समारोह को परिभाषित करने के विचार का मनोरंजन एक बहुत ही प्रारंभिक दृष्टिकोण में इस
In [1]:function(A, 3) # A is df, 3 is the rolling window
Out[2]:
A B C AB AC BC
1 1 5 2 NaN NaN NaN
2 2 4 4 NaN NaN NaN
3 3 3 1 -0.99 -0.33 0.33
4 4 2 2 -0.99 -0.33 0.33
5 5 1 4 -0.99 0.99 -0.99
करता है बनाने के लिए कोशिश कर रहा है
def tau1(x):
y = np.array(A['A']) # keep one column fix and run it in the other two
tau, p_value = sp.stats.kendalltau(x, y)
return tau
A['AB'] = pd.rolling_apply(A['B'], 3, lambda x: tau1(x))
ऑफ कोर्स यह काम नहीं करता है। मुझे मिला:
ValueError: all keys need to be the same shape
मुझे समझ में आता है कि यह एक छोटी सी समस्या नहीं है। मैं किसी भी इनपुट की सराहना करता हूं।
कमाल अर्जित करता है। बहुत बहुत धन्यवाद!। क्या मुझे कॉलम की संख्या में कोई सीमा है जो मुझे ध्यान में रखना चाहिए? ये itertools कार्य किसी भी अतिरिक्त बुद्धिमान प्रश्न पूछने के लिए ... मेरे स्तर से ऊपर भयानक और रास्ता हैं। – hernanavella
संयोजनों की संख्या 'एन ** 2' की तरह बढ़ती है, इसलिए 'एम ** 2 * एम' बार के आदेश पर' ताउ 'कहा जाता है जहां' m = len (ए) '। तो इसमें कुछ समय लग सकता है, खासकर यदि आपके पास बहुत सारे कॉलम हैं। ['Itertools' का उपयोग]] (https://docs.python.org/2/library/itertools.html) वास्तव में काफी मजेदार है; सीखना मुश्किल नहीं है और समय के लायक है। – unutbu
60 के पंक्तियां x 4 कॉलम ~ 7min – hernanavella