2 개의 인수가 필요한 수식과 함께 rollapply를 사용하려고합니다. , 켄달의 타우 상관 관계를 계산 표준 넥타이 보정 포함으로하는 (당신이 처음부터 수식을 만들 경우 제외) 내 지식 유일한 방법에 :Pandas에서 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 두 개의 인수를 복용 문제를 알고 있어요 여기에 설명 된대로 :
여전히 여러 개의 열이있는 데이터 프레임에서 kendalltau 계산을 수행하는 방법을 찾기 위해 고심하고 있습니다.
:내 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
조합 수는'n ** 2 '와 같이 증가하므로'm = len (A) '인'n ** 2 * m' 번 순서로'tau'가 호출됩니다. 이렇게하려면 시간이 오래 걸릴 수 있습니다. 특히 많은 열이있는 경우에 특히 그렇습니다. [itertools'를 사용하여] (https://docs.python.org/2/library/itertools.html) 정말 재미 있습니다. 그것을 배우는 것이 어렵지 않고 시간을 충분히 지킬 가치가 있습니다. – unutbu
60K 행 x 4 열 ~ 7 분 – hernanavella