Как найти корреляцию Пирсона между строками в двух фреймах данных - PullRequest
0 голосов
/ 18 июня 2020

У меня есть фрейм данных, который я разделил на два фрейма данных с одинаковым количеством столбцов и строк (df1 и df2). Я хочу написать функцию, которая будет go проходить через каждую строку и передавать их значения в функцию scipy.stats.pearsonr (). Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Если вам просто нужна функция, попробуйте следующее:

import pandas as pd
from scipy.stats import pearsonr

df1 = pd.DataFrame(
    {
        'A': [0,2,3,4,5],
        'B': [2,3,4,5,6],
        'C': [5,6,7,8,9],
    }
)

df2 = pd.DataFrame(
    {
        'A': [2,1,3,4,5],
        'B': [3,2,4,5,6],
        'C': [7,7,7,3,3],
    }
)


def pandas_pearsonr(df1, df2):
    assert len(df1)==len(df2)
    coefs = []
    for i in range(0, len(df1)):
        coefs.append(pearsonr(df1.iloc[i].values, df2.iloc[i].values))
    print(coefs)
    return pd.DataFrame(index=df1.index, data=coefs, columns=['coef', 'p-value'])

pandas_pearsonr(df1, df2)

Результат выглядит так:

    coef    p-value
0   0.976221    0.139109
1   0.996271    0.054996
2   1.000000    0.000000
3   -0.720577   0.487754
4   -0.838628   0.366717

Но я думаю, это может быть больше pythoni c. И, возможно, вы можете использовать pandas.DataFrame.corr

0 голосов
/ 18 июня 2020

Примерно так:

for index, row in d1.iterrows():
    print(scipy.stats.pearsonr(df1.loc[index], df2.loc[index]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...