Je me demande souvent quel graphique utiliser pour visualiser des données. C'est pourquoi, la dernière fois, j'ai résumé les graphiques adaptés à chaque type de variable explicative et de variable objective (Variable explicative, méthode de visualisation des données par variable objective). Cependant, je pensais que j'écrivais "J'oublierai ça bientôt!" Par conséquent, j'ai créé une méthode qui détermine automatiquement le type de variable et dessine un graphique approprié.
La méthode Seaborn appropriée pour chaque type de variable explicative et de variable objective (qu'il s'agisse d'une quantité discrète ou non) est la suivante. Pour plus de détails, veuillez vous référer à l'article précédent à partir du lien ci-dessus.
Voici le code de ma propre méthode.
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()
Le is_categorical est le suivant.
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
Le contour est
-Passez les données que vous souhaitez visualiser (pandas.DataFrame) aux données et la clé de la variable objective à target_col. -Utiliser la méthode is_categorical pour déterminer si les variables explicatives et objectives sont discrètes ou continues, et les visualiser avec la méthode seaborn appropriée.
Il est devenu. Lorsque le type de données est int, s'il y a 6 types de valeurs ou plus, c'est une quantité continue, et s'il n'y a que 5 types de valeurs ou moins, c'est une quantité discrète. Pour être honnête, il y a place à l'amélioration dans le jugement ici.
Appliquez-le aux données titanesques (une seule copie car le résultat est long).
import pandas as pd
data=pd.read_csv("train.csv")
data=data.drop(["PassengerId", "Name", "Ticket", "Cabin"], axis=1) #Exclut les valeurs uniques
visualize_data(data, "Survived")
J'ai pu dessiner automatiquement un graphique approprié pour chaque type!
Dans le [GitHub] précédemment publié (https://github.com/mr16048/AUTOMATE_ML) avec Méthode pour obtenir un aperçu des données avec Pandas soulevé. Veuillez l'utiliser! Je souhaite automatiser divers prétraitements à l'avenir.