[Python] EDA-Memo

Zweck dieses Artikels

Notieren Sie sich häufig verwendeten Code in EDA (Exploratory Data Analysis), der zu Beginn der Datenanalyse ausgeführt wird. Insbesondere diesmal nehmen wir den Fall von Klassifizierungsproblemen an (wie die Vorhersage des Überlebens der Passagiere auf der Titanic).

Codekommentar

Bibliothekslast

import numpy as np
import pandas as pd
pd.set_option('display.max_columns', 100)

import seaborn as sns
import matplotlib.pyplot as plt
import japanize_matplotlib

import os
from tqdm import tqdm
import warnings
warnings.filterwarnings('ignore')

Daten lesen

df = sns.load_dataset("titanic")
df = df.replace(float("nan"),np.nan) #Später einzigartig()Zur Berechnung von
df

image.png

Überprüfen Sie den Inhalt jeder Variablen

for colname in df.columns:
    uni = len(df[colname].unique())
    print("{0:<20} : {1}".format(colname, uni))

image.png

Objektive Variableneinstellung, Variablentypdefinition

target="survived"
cate_list = ["pclass", "sex", "sibsp", "parch", "embarked", "class", 
                 "who", "adult_male", "deck", "embark_town", "alone"] #Lebendig ignorieren
num_list = ["age", "fare"]
all_list = cate_list + num_list


Bestätigung von NaN etc.

Siehe den Artikel hier

image.png

Kategoriale Daten

Wenn Sie es nur einfach überprüfen möchten, verwenden Sie die folgenden zwei Typen.

sns.countplot(x="pclass", hue=target, data=df)

image.png

sns.catplot(x="pclass", hue=target, data=df,kind="count")

image.png

Wenn Sie mehr über NaN und den Durchschnitt erfahren möchten, definieren und verwenden Sie die folgende Funktion.

def category_plot(x, hue, data, order=[]):
    #NaN zu string
    flag_nan = False
    data[x] = data[x].astype("str").replace("nan","NaN")
    if "NaN" in data[x].values:
        flag_nan = True

    x_unique_list = sorted(data[x].unique())
    x_unique_len = len(x_unique_list)
    x_unique_len_dropna = x_unique_len-1 if flag_nan else x_unique_len

    hue_unique_list = sorted(data[hue].unique())
    hue_unique_len = len(hue_unique_list)

    if order==[]:
        if flag_nan:
            order = x_unique_list
            order.remove("NaN")
            order = order + ["NaN"]
        else:
            order = x_unique_list
    else:
        pass
    
    colors = plt.get_cmap("tab10").colors

    sns.countplot(x=x, hue=hue, data=data, order=order,hue_order=hue_unique_list)

    for i,ui in enumerate(hue_unique_list):
        h = data.loc[data[hue]==ui,:].shape[0] / x_unique_len_dropna
        plt.plot([0-0.5,x_unique_len_dropna-1+0.5],[h,h],color=colors[i], linestyle="dashed", label="{0} (average)".format(ui))
    plt.legend()
    plt.show()

category_plot(x="pclass", hue=target, data=df)

image.png

category_plot(x="embarked", hue=target, data=df)

image.png

category_plot(x="deck", hue=target, data=df)

image.png

Numerische Daten

Wenn Sie sich die folgenden zwei Arten von Plots ansehen, ist dies fast in Ordnung

sns.catplot(x=target, y="age", data=df,kind="swarm")

image.png

sns.catplot(x=target, y="age", data=df,kind="violin")

image.png

Referenz

seaborn:seaborn.catplot seaborn:seaborn.countplot

Recommended Posts

[Python] EDA-Memo
Python-Memo
Python-Memo
Python-Memo
Python-Memo
Python-Memo
Python-Memo
Python-Anfänger-Memo (9.2-10)
Python-Anfänger-Memo (9.1)
★ Memo ★ Python Iroha
Python 3-Operator-Memo
[Mein Memo] Python
Python3-Metaklassen-Memo
[Python] Grundkarten-Memo
Python-Anfänger-Memo (2)
[Python] Numpy Memo
Python-Klasse (Python-Lernnotiz ⑦)
Python OpenCV Installation (Memo)
Visualisierungsnotiz von Python
[Python] Memo über Funktionen
Python-Memo für reguläre Ausdrücke
Memo zur Bisektionssuche (python2.7)
[Mein Memo] Python -v / Python -V
Python3-Memo vom Typ Liste / Wörterbuch
[Memo] Python 3-Listensortierung
Python-Tipps (mein Memo)
[Python] Memo Über Fehler
DynamoDB Script Memo (Python)
Python-Grundnotiz - Teil 2
Python-Rezeptbuch Memo
Grundlegende Python-Befehlsnotizen
Python OpenCV Tutorial Memo
Python grundlegende Grammatik Memo
TensorFlow API-Memo (Python)
Python nützliche Memo-Links
Python-Dekorator-Operationsnotiz
Python-Grundnotiz - Teil 1
Effektives Python-Memo Punkt 3
Ungefähre Aufzählung Python-Memo
Python-Memo (für mich): Array
Behandlung von Python-Ausnahmen (Python-Lernnotiz ⑥)
Twitter-Grafiknotiz mit Python
[Line / Python] Beacon-Implementierungsnotiz
Python und Ruby Slice Memo
Python-Grammatik-Grundnotiz (1)
Raspeye + Python + OpenGL-Memo
Python-Grundgrammatik (Verschiedenes) Memo (3)
Unveränderlicher Python-Typ int memo
Python-Memo mit Perl --join
Python-Datentyp-Zusammenfassungsnotiz
Python-Grundgrammatik (Verschiedenes) Memo (2)
[MEMO] [Entwicklung der Entwicklungsumgebung] Python
Memo zur Erstellungsprozedur von [Python] virtualenv
Python-Grundgrammatik (Verschiedenes) Memo (4)
In Bezug auf die Beschleunigung von Python (Hinweis)
Python-Steuerungssyntax, Funktionen (Python-Lernnotiz ②)
Unterschied zwischen Java und Python (Memo)
[Python] Operationsnotiz von Pandas DataFrame