Корреляция Пирсона с использованием scipy, способы повышения скорости - PullRequest
1 голос
/ 09 июля 2020

У меня есть фрейм данных из 1222 строк и 33000 столбцов, в котором мне нужно запустить корреляцию между 16000 и оставшимися столбцами в кадре данных. В настоящее время я использую библиотеку scipy.stats из python с использованием метода корреляции Пирсона. Вот функция, которую я пытаюсь:

from scipy.stats import pearsonr
def correlation_analysis(lncRNA_PC_T):
"""
Function for correlation analysis
"""
correlations = pd.DataFrame()
for PC in [column for column in lncRNA_PC_T.columns if '_PC' in column]: 
    for lncRNA in [column for column in lncRNA_PC_T.columns if '_lncRNAs' in column]:
                correlations = correlations.append(pd.Series(pearsonr(lncRNA_PC_T[PC],lncRNA_PC_T[lncRNA]),index=['PCC', 'p-value'],name=PC + '_' +lncRNA))
                
            
return(correlations)

Приведенный выше код выполняет свою работу, однако для моего фрейма данных размером 1222 X 33000 требуется больше 30 минут, чтобы завершить sh работу. . Было бы здорово, если бы кто-нибудь мог предложить способы повышения скорости этой функции для фреймов больших данных. Спасибо

...