[Python] Was machen Sie mit der Visualisierung von 4 oder mehr Variablen?

Zweck dieses Artikels

Was ist, wenn Sie die Beziehungen zwischen vielen Variablen gleichzeitig in einer Datenanalyse sehen möchten?

Ich denke, Paarplot ist typisch,Mehr Pack! Ich habe mich gefragt, ob ich es kürzlich zusammenstellen könnte, **Sankey Diagram**Ich wusste das, also habe ich es gezeichnet.



 ** Nachtrag: **
 <font color = "red"> Bitte lesen Sie zuerst den zusätzlichen Teil am Ende des Artikels. </ Font>


# Verwendung von Plotly Sankey Diagram


#### **`Wenn Sie Plotly verwenden, können Sie es aufrufen.,Als allererstes[Offizielle Seite](https://plot.ly/python/sankey-diagram/)Kopieren Sie den Beispielcode von,Ich werde prüfen, ob es funktioniert. `**
import plotly.graph_objects as go

fig = go.Figure(data=[go.Sankey(
    node = dict(
      pad = 15,
      thickness = 20,
      line = dict(color = "black", width = 0.5),
      label = ["A1", "A2", "B1", "B2", "C1", "C2"],
      color = "blue"
    ),
    link = dict(
      source = [0, 1, 0, 2, 3, 3], # indices correspond to labels, eg A1, A2, A2, B1, ...
      target = [2, 3, 3, 4, 4, 5],
      value = [8, 4, 2, 8, 4, 2]
  ))])

fig.update_layout(title_text="Basic Sankey Diagram", font_size=10)
fig.show()

image.png

Es funktionierte! Es ist gut, die Details dieses Teils zu sehen, wenn Sie mit der Maus darüber fahren!

Der Code ist lang und schwierig im Vergleich zu Matplotlib und Seaborn,Die wichtigen Teile sind:.



```python
label = ["A1", "A2", "B1", "B2", "C1", "C2"],
source = [0, 1, 0, 2, 3, 3], 
target = [2, 3, 3, 4, 4, 5],
value = [8, 4, 2, 8, 4, 2]

Zum Beispiel entspricht im obigen Sankey-Diagramm "Quelle: A1, Ziel: B2, 2.00" dem orangefarbenen Teil der drei Listen im folgenden Link. Dies bedeutet, dass "nur" 2 "von" Label [0] "zu" Label [3] "fließt.

image01.png

Wenn Sie eine Liste erstellen können, die den Start- und Endpunkt eines Knotens und die Menge des durch ihn fließenden Flusses angibt, können Sie ein Sankey-Diagramm zeichnen!

Zeichnen Sie ein Sankey-Diagramm aus einem Datenrahmen

Beginnen wir also mit der Erstellung des Sankey-Diagramms aus dem Datenrahmen des Hauptthemas.

Um die Ergebnisse zuerst zu zeigen, habe ich diesmal die folgende Abbildung mit den Daten der Titanic erstellt.

image.png

Kommentar

Laden Sie die Bibliothek.

import numpy as np
import pandas as pd
import plotly.graph_objects as go

Ich werde die Daten herunterladen.

!wget https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv

Lesen Sie die Daten, diesmal werden nur die Kategorievariablen und Ganzzahlwertvariablen angezeigt. Grenzen Sie daher die Variablennamen ein.

filename = "/content/titanic.csv"
df = pd.read_csv(filename, encoding='utf-8')

cate_list = ["Survived", "Pclass", "Sex", "Siblings/Spouses Aboard", "Parents/Children Aboard"]

n = len(cate_list)

Dann erstellen Sie eine `` `label_list```.

label_list = []
source_list = []
target_list = []
value_list = []

for cate in cate_list:
    tmp_label_list=[]
    for v in df[cate].unique():
        lab = "{0}={1}".format(cate, v)
        tmp_label_list.append(lab)
        tmp_label_list.sort()
    label_list.extend(tmp_label_list)

Erstellen Sie drei Listen mit Linkinformationen.

for i in range(n-1):
    source_cate = cate_list[i]
    target_cate = cate_list[i+1]

    for sc in df[source_cate].unique():
        for tc in df[target_cate].unique():

            v = sum((df[source_cate]==sc) & (df[target_cate]==tc))
            source_lab = "{0}={1}".format(source_cate, sc)
            target_lab = "{0}={1}".format(target_cate, tc)

            source_list.append(source_lab)
            target_list.append(target_lab)
            value_list.append(v)

Schließlich müssen `source_list``` und` target_list``` durch den Index angegeben werden, also

label_Siehe Liste zum Konvertieren.



```python
source_list = [label_list.index(si) for si in source_list]
target_list = [label_list.index(ti) for ti in target_list]

Jetzt müssen Sie nur noch denselben Code wie das Beispiel ausführen.

fig = go.Figure(data=[go.Sankey(
    node = dict(
      pad = 15,
      thickness = 20,
      line = dict(color = "black", width = 0.5),
      label = label_list,
      color = "blue"
    ),
    link = dict(
      source = source_list,
      target = target_list,
      value = value_list
  ))])

fig.update_layout(title_text="Basic Sankey Diagram", font_size=10)
fig.show()

image.png

das ist alles!

Codeliste

Liste anzeigen
import numpy as np
import pandas as pd

!wget https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv

filename = "/content/titanic.csv"
df = pd.read_csv(filename, encoding='utf-8')

cate_list = ["Survived", "Pclass", "Sex", "Siblings/Spouses Aboard", "Parents/Children Aboard"]

n = len(cate_list)

label_list = []
source_list = []
target_list = []
value_list = []

for cate in cate_list:
    tmp_label_list=[]
    for v in df[cate].unique():
        lab = "{0}={1}".format(cate, v)
        tmp_label_list.append(lab)
        tmp_label_list.sort()
    label_list.extend(tmp_label_list)


for i in range(n-1):
    source_cate = cate_list[i]
    target_cate = cate_list[i+1]

    for sc in df[source_cate].unique():
        for tc in df[target_cate].unique():

            v = sum((df[source_cate]==sc) & (df[target_cate]==tc))
            source_lab = "{0}={1}".format(source_cate, sc)
            target_lab = "{0}={1}".format(target_cate, tc)

            source_list.append(source_lab)
            target_list.append(target_lab)
            value_list.append(v)

source_list = [label_list.index(si) for si in source_list]
target_list = [label_list.index(ti) for ti in target_list]

fig = go.Figure(data=[go.Sankey(
    node = dict(
      pad = 15,
      thickness = 20,
      line = dict(color = "black", width = 0.5),
      label = label_list,
      color = "blue"
    ),
    link = dict(
      source = source_list,
      target = target_list,
      value = value_list
  ))])

fig.update_layout(title_text="Basic Sankey Diagram", font_size=10)
fig.show()

Nachwort

Eigentlich habe ich bemerkt, als ich den Code selbst geschrieben habe, aber diese Abbildung zeigt nur die Beziehung zwischen den Variablen vor und nach einer bestimmten Variablen. Im obigen Beispiel, auch wenn Sie die Beziehung zwischen Survived``` und Pclass und `` `Pclass und Sex kennen Ich kenne Survived und `` `Sex``` nicht. Es scheint, dass bis zu 3 Variablen durch Farbe usw. ausgedrückt werden können, aber es scheint unmöglich, wenn es mehr wird.

(Oh, das ist keine Visualisierung von 4 Dimensionen oder mehr ...?)

Wenn Sie einen besseren Weg kennen, teilen Sie uns dies bitte in den Kommentaren mit.

Nachtrag

Ich habe oben viel getan, aber wenn ich die Dokumentation gelesen habe, gab es einen einfacheren Weg.

fig = px.parallel_categories(df, dimensions=cate_list, color='Survived')
fig.show()

plot03.gif

Es ist erstaunlich, die Reihenfolge der Variablen und die Reihenfolge der Elemente verschieben zu können! !!

das ist alles!

Referenz

Plotly:Sankey Diagram in Python Plotly:basic-parallel-category-diagram-with-plotlyexpress CS109:A Titanic Probability

Recommended Posts

[Python] Was machen Sie mit der Visualisierung von 4 oder mehr Variablen?
Python | Was Sie mit Python machen können
Was Sie mit hstack oder vstack mit dstack nicht machen können
Was tun, wenn Sie pyaudio nicht mit pip #Python installieren können?
Was Sie mit API Vol.1 tun können
Empfehlung von Altair! Datenvisualisierung mit Python
Was Sie mit Programmierkenntnissen machen können
Was tun, wenn Sie mit Python keine E-Mail an Yahoo senden konnten?
Was vergleichst du mit Python und ==?
Was verwenden Sie beim Testen mit Python?
Sie werden in 100 Tagen Ingenieur - Tag 35 - Python - Was Sie mit Python tun können
Was tun, wenn bei der Installation von Python mit pyenv eine Fehlermeldung angezeigt wird?
Mach Houdini mit Python3! !! !!
Visualisierung der Logistik mit Python
Links, um mit Sublime Text zu tun, was Sie wollen
Was Sie mit Tensorflow 2.x tun können und was nicht
Wie viel kennen Sie die Grundlagen von Python?
Was tun, wenn bei der Installation von Python 2 mit pyenv ein OpenSSL-Fehler auftritt?
Was tun, wenn Sie Python auf IntelliJ ausführen und mit einem Fehler beenden?
[AWS] Was tun, wenn Sie mit Lambda pfeifen möchten?
Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Notieren Sie sich, was Sie in Zukunft mit Razpai machen möchten
Mach Django mit CodeStar (Python3.8, Django2.1.15)
Was tun, wenn Sie keine Dateien mit Indizes sortieren können?
[Python] Extrahieren Sie Textdaten aus XML-Daten von 10 GB oder mehr.
Beachten Sie, was Sie getan haben, um Flycheck mit Python zu verwenden
Was tun, wenn in Python minus Null angezeigt wird?
Was tun, wenn bei der Pip-Installation ein Unicode-Dekodierungsfehler auftritt?
[Sprechen Sie über die Zeichnungsstruktur von plotly] Dynamische Visualisierung mit plotly [Python]
Was tun, wenn Sie mit Maven kein Projekt erstellen können?
Was soll ich denn mit der Python-Verzeichnisstruktur machen?
[Python] Was ist eine with-Anweisung?
Was tun mit der Installation von Magics?
[ns3-30] Aktivieren Sie die Visualisierung von Python-Skripten
Schön dich mit Python zu treffen
Benötigen Sie Python re.compile?
Führen Sie mruby mit Python oder Blender aus
So verwenden Sie das Python-Visualisierungspaket ordnungsgemäß
Erste Schritte mit Python Grundlagen von Python
Schwanzrekursion mit Python2 durchführen
Lebensspiel mit Python! (Conways Spiel des Lebens)
10 Funktionen von "Sprache mit Batterie" Python
Lassen Sie uns mit Python Image Scraping durchführen
Visualisieren Sie Ihre Daten ganz einfach mit Python Seaborn.
Bis Python auf Apache läuft
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Koexistenz von Python2 und 3 mit CircleCI (1.0)
[Python] Erbt eine Klasse mit Klassenvariablen
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Grundlegendes Studium von OpenCV mit Python
Was tun, wenn bei Verwendung von Python mit der NetBeans-IDE die Warnung "Falsche Python-Plattform" angezeigt wird?
Was tun, wenn Sie sich über "Wertefehler: unbekannt lokal: UTF-8" in python manage.py syncdb ärgern?
Was tun, wenn die Option -f von grep nicht funktioniert?
Wie viele Arten von Python haben Sie in Ihrem Windows 10? Ich hatte 5 Typen.
Was tun, wenn PDO nicht in Laravel oder CakePHP gefunden wird?
Was tun, wenn ipython und python mit unterschiedlichen Versionen starten?
Was tun, wenn Sie sich mit FileNotFoundError in der Dateireferenz verlieren?
Es ist neuer, aber ich wollte die BMI-Berechnung mit Python ausprobieren.
Was tun, wenn der Server nicht mit dem Runserver python manage.py startet?