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).
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')
df = sns.load_dataset("titanic")
df = df.replace(float("nan"),np.nan) #Plus tard unique()Pour le calcul de
df
for colname in df.columns:
uni = len(df[colname].unique())
print("{0:<20} : {1}".format(colname, uni))
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
Voir l'article ici
Si vous souhaitez simplement le vérifier facilement, utilisez les deux types suivants.
sns.countplot(x="pclass", hue=target, data=df)
sns.catplot(x="pclass", hue=target, data=df,kind="count")
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)
category_plot(x="embarked", hue=target, data=df)
category_plot(x="deck", hue=target, data=df)
Si vous regardez les deux types de tracés suivants, c'est presque OK
sns.catplot(x=target, y="age", data=df,kind="swarm")
sns.catplot(x=target, y="age", data=df,kind="violin")
seaborn:seaborn.catplot seaborn:seaborn.countplot
Recommended Posts