Ich habe einen Datenrahmen in Pandas und seine Form ist (136, 1445). Ich versuche, Korrelation (Pearson) Matrix für meine 136 Zeilen zu erstellen. Also im Ergebnis brauche ich eine Matrix mit der Größe 136x136.Pearson Korrelation für alle Zeilen in Datenrahmen Pandas
Ich habe zwei verschiedene Möglichkeiten versucht, aber ich kann keine Ergebnisse von ihnen erhalten, oder wenn ich eine 136x136 Korrelationsmatrix erstelle, verlor ich den Spaltennamen des Datenrahmens.
Zuerst
gene_expression = pd.read_csv('padel_all_drug_results_original.csv',dtype='unicode')
gene_expression = gene_expression.convert_objects(convert_numeric=True)
gene_expression.corr()
Dadurch wird die Spalte basierte pearson Korrelationsmatrix gibt (1445 * 1445), und wenn ich versuche, meinen Datenrahmen zu transponieren und dann versuchen, Korrelation zu finden, ist die Struktur des Datenrahmen gebrochen (wie der Spaltenname ist verloren oder ich bin mir nicht einmal sicher, ob die Korrelationen korrekt sind oder nicht).
Zweitens
distance = lambda column1, column2: pearsonr(column1,column2)[0]
result = gene_expression.apply(lambda col1: gene_expression.apply(lambda col2: distance(col1, col2)))
Was soll ich tun 136x136 pearson Korrelationsmatrix zur Berechnung des ursprünglichen Datenrahmen nicht ändern?
Auch habe ich eine 1445 Funktionen und einige der Spalten fast voll von Nullen. Also habe ich diese Spalten fallen gelassen, weil sie laute Spalten sind, aber hast du eine andere Idee, um eine Neuerung zu machen?
Vielen Dank im Voraus
Ich weiß nicht, warum, aber in meinem Datenrahmen der Änderung des Spaltenindex zum 1,2,3,4 .... 135 ist. Aber in jedem Fall ist Ihr Vorschlag richtig, danke. –
Nach set_index auf die erste Spalte meiner Pandas behoben. –