Ho un CSV che assomiglia a questo:Come fare correlazione di Pearson di colonne selezionate di un frame di dati Pandas
gene,stem1,stem2,stem3,b1,b2,b3,special_col
foo,20,10,11,23,22,79,3
bar,17,13,505,12,13,88,1
qui,17,13,5,12,13,88,3
E come frame di dati che appare così:
In [17]: import pandas as pd
In [20]: df = pd.read_table("http://dpaste.com/3PQV3FA.txt",sep=",")
In [21]: df
Out[21]:
gene stem1 stem2 stem3 b1 b2 b3 special_col
0 foo 20 10 11 23 22 79 3
1 bar 17 13 505 12 13 88 1
2 qui 17 13 5 12 13 88 3
Quello che ho voglio fare è eseguire la correlazione di Pearson dall'ultima colonna (special_col
) con ogni colonna tra la colonna gene
e special column
, ovvero colnames[1:number_of_column-1]
Alla fine del giorno avremo una lunghezza di 6 frame dati.
Coln PearCorr
stem1 0.5
stem2 -0.5
stem3 -0.9999453506011533
b1 0.5
b2 0.5
b3 -0.5
Il valore di cui sopra è calcolato manualmente:
In [27]: import scipy.stats
In [39]: scipy.stats.pearsonr([3, 1, 3], [11,505,5])
Out[39]: (-0.9999453506011533, 0.0066556395400007278)
Come posso fare questo?
Spiacente stai chiedendo di calcolare la correlazione di Pearson tra special_col e una singola colonna o tra special_col e tutti i cols nei tuoi nomi? – EdChum
@EdChum: special_col e tutti in mezzo. Vedi il mio OP aggiornato. – neversaint
Stai cercando ['corr'] (http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.DataFrame.corr.html) – EdChum