[PYTHON] Erstellt eine Methode zur automatischen Auswahl und Visualisierung eines geeigneten Diagramms für Pandas DataFrame

Einführung

Ich frage mich oft, welches Diagramm ich zur Visualisierung von Daten verwenden soll. Daher habe ich beim letzten Mal die Diagramme zusammengefasst, die für jeden Typ von erklärender Variable und objektiver Variable geeignet sind (Erklärende Variable, Visualisierungsmethode von Daten nach objektiver Variable). Ich dachte jedoch, ich schreibe "Ich werde das bald vergessen!" Aus diesem Grund habe ich eine Methode erstellt, die den Variablentyp automatisch ermittelt und ein geeignetes Diagramm zeichnet.

Letzte Zusammenfassung

Die geeignete Seaborn-Methode für jede Art von erklärender Variable und objektiver Variable (ob es sich um eine diskrete Größe handelt oder nicht) ist wie folgt. Einzelheiten finden Sie im vorherigen Artikel über den obigen Link. sns_summary.png

Methodeninhalt

Unten ist der Code für meine eigene Methode.

import matplotlib.pyplot as plt
import seaborn as sns

def visualize_data(data, target_col):
    
    for key in data.keys():
        
        if key==target_col:
            continue
            
        length=10
        subplot_size=(length, length/2)
        
        if is_categorical(data, key) and is_categorical(data, target_col):

            fig, axes=plt.subplots(1, 2, figsize=subplot_size)
            sns.countplot(x=key, data=data, ax=axes[0])
            sns.countplot(x=key, data=data, hue=target_col, ax=axes[1])
            plt.tight_layout()
            plt.show()

        elif is_categorical(data, key) and not is_categorical(data, target_col):

            fig, axes=plt.subplots(1, 2, figsize=subplot_size)
            sns.countplot(x=key, data=data, ax=axes[0])
            sns.violinplot(x=key, y=target_col, data=data, ax=axes[1])
            plt.tight_layout()
            plt.show()

        elif not is_categorical(data, key) and is_categorical(data, target_col):

            fig, axes=plt.subplots(1, 2, figsize=subplot_size)
            sns.distplot(data[key], ax=axes[0], kde=False)
            g=sns.FacetGrid(data, hue=target_col)
            g.map(sns.distplot, key, ax=axes[1], kde=False)
            axes[1].legend()
            plt.tight_layout()
            plt.close()
            plt.show()

        else:

            sg=sns.jointplot(x=key, y=target_col, data=data, height=length*2/3)
            plt.show()            

Die is_categorical lautet wie folgt.

def is_categorical(data, key):
    
    col_type=data[key].dtype
    
    if col_type=='int':
        
        nunique=data[key].nunique()
        return nunique<6
    
    elif col_type=="float":
        return False
    
    else:
        return True

Der Umriss ist

Es ist geworden. Wenn der Datentyp int ist, wenn es 6 oder mehr Arten von Werten gibt, ist es eine kontinuierliche Größe, und wenn es nur 5 oder weniger Arten von Werten gibt, ist es eine diskrete Größe. Um ehrlich zu sein, gibt es hier Raum für Verbesserungen im Urteil.

Anwenden

Wenden Sie es auf Titandaten an (nur eine Kopie, da das Ergebnis lang ist).

import pandas as pd

data=pd.read_csv("train.csv")
data=data.drop(["PassengerId", "Name", "Ticket", "Cabin"], axis=1) #Schließt eindeutige Werte aus

visualize_data(data, "Survived")

visualize_data.png Ich konnte für jeden Typ automatisch ein passendes Diagramm zeichnen!

Am Ende

In dem zuvor veröffentlichten GitHub zusammen mit Methode, um einen Überblick über Daten mit Pandas zu erhalten angehoben. Bitte benutzen Sie es! Ich möchte in Zukunft verschiedene Vorverarbeitungen automatisieren.

Recommended Posts

Erstellt eine Methode zur automatischen Auswahl und Visualisierung eines geeigneten Diagramms für Pandas DataFrame
[Python] Ich habe ein Skript erstellt, das Dateien auf dem lokalen PC automatisch ausschneidet und auf eine externe SSD einfügt.
Ich habe ein Tool erstellt, um automatisch ein Zustandsübergangsdiagramm zu generieren, das sowohl für die Webentwicklung als auch für die Anwendungsentwicklung verwendet werden kann
[Python] So fügen Sie einer Tabelle Zeilen und Spalten hinzu (pandas DataFrame)
Ich habe ein POST-Skript erstellt, um ein Problem in Github zu erstellen und es im Projekt zu registrieren
Ich habe einen Docker-Container erstellt, um JUMAN ++, KNP, Python (für pyKNP) zu verwenden.
Ich habe ein Tool zum automatischen Durchsuchen mehrerer Websites mit Selenium (Python) erstellt.
So erhalten Sie mit pandas DataFrame einen bestimmten Spaltennamen und Indexnamen
[Python / Tkinter] Suche nach Pandas DataFrame → Erstellen Sie ein einfaches Suchformular zur Anzeige
Ein Hinweis bei der Suche nach einer Alternative zu Pandas, die für ein bewegliches Fenster rollen
Ich habe ein Netzwerk erstellt, um Schwarzweißbilder in Farbbilder umzuwandeln (pix2pix)
Ich habe eine Chrome-Erweiterung erstellt, die ein Diagramm auf der Amedas-Seite anzeigt
Ich habe ein Programm erstellt, um einzugeben, was ich gegessen habe, und um Kalorien und Zucker anzuzeigen
Ich habe ein Dash-Docset für Holoviews erstellt
So teilen und speichern Sie einen DataFrame
Ich habe ein alternatives Modul für japandas.DataReader erstellt
[Pandas_flavor] Fügen Sie eine Methode von Pandas DataFrame hinzu
Ich habe ein Skript erstellt, um Piktogramme anzuzeigen
Ich habe ein System erstellt, das automatisch entscheidet, ob es morgen mit Python ausgeführt wird, und es zu Google Kalender hinzufügt.
Ich habe eine Bibliothek für versicherungsmathematische Versicherungen erstellt
Ich habe ein Tool erstellt, um Slack über Connpass-Ereignisse zu informieren, und es zu Terraform gemacht
Ich habe gerade ein Tool erstellt, mit dem Daten mithilfe der GUI-Operation einfach als Diagramm angezeigt werden können
Ich möchte ein Element mit numpy in eine Datei schreiben und es überprüfen.
Ich habe einen Appdo-Befehl erstellt, um Befehle im Kontext der App auszuführen
Ich habe ein Bildklassifizierungsmodell erstellt und versucht, es auf dem Handy zu verschieben
[Für Anfänger] Ich habe mit Raspberry Pi einen menschlichen Sensor erstellt und LINE benachrichtigt!
Was ich dachte und lernte, 100 Tage an einer Programmierschule zu studieren
Ich habe mit Yocto ein Bild für Qemu gemacht, aber ich habe versagt und von vorne angefangen
Ich habe ein Paket erstellt, um eine ausführbare Datei aus dem Hy-Quellcode zu erstellen
Ich habe in Python ein Tool erstellt, das mit der rechten Maustaste auf eine Excel-Datei klickt und diese für jedes Blatt in Dateien unterteilt.
Ich habe versucht, eine Super-Resolution-Methode / ESPCN zu erstellen
Ich habe einen Ersatz2-Algorithmus für uWSGI billiger gemacht
Ich habe ein nützliches Tool für Digital Ocean erstellt
Ich möchte einen DataFrame in MSSQL einfügen
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe einen Downloader für wortverteilte Ausdrücke erstellt
Ich habe ein Tool erstellt, um Hy nativ zu kompilieren
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe ein Tool erstellt, um neue Artikel zu erhalten
Ich habe mit Numpy eine Grafik mit Zufallszahlen erstellt
Wir haben ein Peeping-Prevention-Produkt für die Telearbeit entwickelt.
Ich habe ein Docker-Image erstellt, das RSS liest und automatisch regelmäßig twittert, und es veröffentlicht.
Ich habe vergessen, VIM zu bedienen, also habe ich ein Video zum Auswendiglernen gemacht. 3 Videos nach Level
Ich habe einen Befehl gegeben, auf den Start von Django zu warten, bis die Datenbank bereit ist
Ich wandelte die Zeit in eine ganze Zahl um, zerlegte sie in Primfaktoren und machte einen Bot, um das Ergebnis zu twittern (xkcd story)