[Python] Hulp/zetje bij verwerken data voor chord diagram

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Sumerechny
  • Registratie: December 2012
  • Laatst online: 14:49

Sumerechny

2 + 2 = 5...or so I'm told.

Topicstarter
Als Python/Pandas oefening ben ik begonnen met het analyseren van een Kaggle dataset waarin verschillende klinische bevindingen zijn beschreven per patiënt. Het kan hierbij ook voorkomen dat er meerdere bevindingen per onderzoek zijn. Mijn doel is om uiteindelijk een chord diagram te maken om de comorbiditeit weer te geven.

Ik begin echter vast te lopen bij de tabel die ik wil vullen om vervolgens het diagram op te bouwen. Het lukt om de tabel te maken maar het vullen krijg ik niet voor elkaar. Wie zou mij een zetje in de juiste richting kunnen geven?

De Kaggle dataset; https://www.kaggle.com/nih-chest-xrays/data/kernels

Mijn huidige script;

Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import os
import pandas as pd

dir_now = os.getcwd()
#Load data
df = pd.read_csv("Data_Entry_2017.csv")

#Filter data
df_filtered = df.iloc[:, 1:6]
df_filtered = df_filtered.drop(df_filtered.columns[[1,2]],axis=1)


#List findings
df_string = df_filtered['Finding Labels']
df_string.str.strip()

findings = []

for finding in df_string:
    finding = finding.split('|')
    for findingX in finding:
        findings.append(findingX)
findingsSolo = list(set(findings))

#df from findings list
df_findings = pd.DataFrame(columns=findingsSolo, index=findingsSolo)

[ Voor 4% gewijzigd door RobIII op 01-10-2019 20:36 . Reden: code tags toegevoegd ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Sumerechny
  • Registratie: December 2012
  • Laatst online: 14:49

Sumerechny

2 + 2 = 5...or so I'm told.

Topicstarter
Indien relevant;

Na enkele dagen schoot de oplossing mij te binnen, voor wie er nog iets aan heeft:
Python:
1
2
3
4
5
6
7
8
9
10
....
df_findings = pd.DataFrame(columns=findings, index=findings).fillna(0)

for finding in df_string:
    finding = finding.split('|')
    finding.sort()
    if len(finding) > 1:
        col_label = finding[0]
        for row_label in finding[1::]:
            df_findings.loc[row_label,col_label] += 1