[Python] Mémo EDA

Objectif de cet article

Notez le code fréquemment utilisé dans EDA (Exploratory Data Analysis), qui est effectué au début de l'analyse des données. Cette fois, en particulier, nous supposons le cas de problèmes de classification (comme la prédiction de la survie des passagers sur le Titanic).

Commentaire de code

Charge de la bibliothèque

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')

Lire les données

df = sns.load_dataset("titanic")
df = df.replace(float("nan"),np.nan) #Plus tard unique()Pour le calcul de
df

image.png

Vérifiez le contenu de chaque variable

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

image.png

Paramètre de variable d'objectif, définition de type de variable

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


Confirmation de NaN etc.

Voir l'article ici

image.png

Données catégoriques

Si vous souhaitez simplement le vérifier facilement, utilisez les deux types suivants.

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

image.png

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

image.png

De plus, si vous souhaitez connaître NaN et la moyenne, définissez et utilisez la fonction suivante.

def category_plot(x, hue, data, order=[]):
    #NaN en chaîne
    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

Donnees numeriques

Si vous regardez les deux types de tracés suivants, c'est presque OK

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

image.png

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

image.png

référence

seaborn:seaborn.catplot seaborn:seaborn.countplot

Recommended Posts

[Python] Mémo EDA
Mémo Python
mémo python
Mémo Python
mémo python
Mémo Python
Mémo Python
[Python] Mémo sur le dictionnaire
mémo débutant python (9.2-10)
mémo débutant python (9.1)
★ Mémo ★ Python Iroha
Mémo opérateur Python 3
[Mon mémo] python
Mémo de métaclasse Python3
[Python] Mémo de fond de carte
Mémo débutant Python (2)
[Python] Mémo Numpy
Classe Python (mémo d'apprentissage Python ⑦)
installation de python openCV (mémo)
Mémo de visualisation par Python
[Python] Mémo sur les fonctions
mémo d'expression régulière python
Recherche de bisection (python2.7) mémo
[Mon mémo] python -v / python -V
Mémo de type Liste / Dictionnaire Python3
[Mémo] Tri de liste Python3
Astuces Python (mon mémo)
[Python] Mémo sur les erreurs
Mémo de script DynamoDB (Python)
Mémo de base Python - Partie 2
livre de recettes python Memo
Notes de commande de base Python
Mémo du didacticiel Python OpenCV
Mémo de grammaire de base Python
Mémo de l'API TensorFlow (Python)
liens de mémo utiles python
Mémo d'opération de décorateur Python
Mémo de base Python - Partie 1
Élément de mémo Python efficace 3
Mémo Python d'énumération approximative
Mémo Python (pour moi): Array
Gestion des exceptions Python (mémo d'apprentissage Python ⑥)
Mémo graphique Twitter avec Python
[Line / Python] Mémo d'implémentation Beacon
Mémo tranche python et rubis
Mémo de grammaire de base Python (1)
Raspeye + Python + Mémo OpenGL
Grammaire de base Python (divers) Mémo (3)
Mémo int de type immuable Python
mémo python utilisant perl --join
Mémo récapitulatif des types de données Python
Grammaire de base Python (divers) Mémo (2)
[MEMO] [Construction de l'environnement de développement] Python
[Python] mémo de procédure de création virtualenv
Grammaire de base Python (divers) Mémo (4)
Concernant l'accélération de python (Note)
Syntaxe de contrôle Python, fonctions (mémo d'apprentissage Python ②)
Différence entre java et python (mémo)
[Python] Mémo d'opération de pandas DataFrame