У меня есть pandas фрейм данных, который уже очищен и готов к go, и я пытаюсь создать таблицу с корреляциями Пирсона для списка столбцов, но я делаю что-то не так и не могу кажется, заставить его работать. При запуске scipy.stats.spearmanr
он работает отлично, но я что-то пропускаю pearsonr
, что делает его неудачным.
df:
| | Id | Scale 1 | Scale 2 | Scale 3 | Gender | Scale 4 | Scale 5 |
|---|------|----------|---------|---------|--------|----------|----------|
| 1 | 9954 | 0.000000 | 0.0625 | 0.4 | Male | 0.333333 | 0.3125 |
| 2 | 2245 | 0.142857 | 0.3125 | 0.5 | Female | 0.533333 | 0.533333 |
| 3 | 5645 | 0.428571 | 0.3125 | 0.4 | Female | 0.400000 | 0.428571 |
| 4 | 7845 | 0.000000 | 0.3750 | 0.5 | Male | 0.766667 | 0.0625 |
| 5 | 9654 | 0.000000 | 0.3750 | 0.8 | Male | 0.6 | 0.333333 |
Я пытаюсь создать корреляционную таблицу, содержащую значения r и p для каждой пары столбцов, исключая id и пол (очевидно). С этой целью я создал список столбцов, которые я хочу соотнести
corrs =[f"scale {x}" for x in range(1,6)]
Если я попытаюсь
r, pval = spearmanr(df[corrs])
print(r, pval
, я могу напечатать оба r и pval с правильные результаты, которыми я могу манипулировать столько, сколько хочу.
Однако, когда я пытаюсь
r, pval = pearsonr(df[corrs])
print(r, pval)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-51-0d5fa4dfe4fe> in <module>
----> 1 r, pval = pearsonr(df2[cors])
2 print(r, pval)
TypeError: pearsonr() missing 1 required positional argument: 'y'
, я понимаю, что 'y' является необходимой переменной, но я не уверен, как создать al oop, который позволит мне двигаться попарно через список столбцов.
Я думаю, это было бы что-то вроде
for x in df[corrs]:
for y in df[corrs]:
r, pval = pearsonr(x,y)
Но этот вид oop не сработал для меня.
Любой совет будет оценен.