[PYTHON] Grundlegende Visualisierungstechniken, die aus Kaggle Titanic-Daten gelernt wurden

Einführung

[Von Zeit zu Zeit aktualisiert] EDA- / Feature-Quantity-Engineering-Snippets, die im Kaggle-Tabellendatenwettbewerb verwendet werden hauptsächlich unter Verwendung von Snippets, [Kaggle-Titanic-Daten] Verwenden Sie (https://www.kaggle.com/c/titanic/data), um grundlegende Daten zu visualisieren.

Annahme

import numpy as np 
import pandas as pd
import pandas_profiling as pdp
import matplotlib.pyplot as plt
import seaborn as sns
import warnings

warnings.filterwarnings('ignore')
cmap = plt.get_cmap("tab10")
plt.style.use('fivethirtyeight')
%matplotlib inline

pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option("display.max_colwidth", 10000)
target_col = "Survived"
data_dir = "/kaggle/input/titanic/"

Überprüfen Sie den Ordner

!ls -GFlash /kaggle/input/titanic/
total 100K
4.0K drwxr-xr-x 2 nobody 4.0K Jan  7  2020 ./
4.0K drwxr-xr-x 5 root   4.0K Jul 12 00:15 ../
4.0K -rw-r--r-- 1 nobody 3.2K Jan  7  2020 gender_submission.csv
 28K -rw-r--r-- 1 nobody  28K Jan  7  2020 test.csv
 60K -rw-r--r-- 1 nobody  60K Jan  7  2020 train.csv

Daten lesen

train = pd.read_csv(data_dir + "train.csv")
test = pd.read_csv(data_dir + "test.csv")
submit = pd.read_csv(data_dir + "gender_submission.csv")

Überprüfen Sie die Daten

train.head()
スクリーンショット 2020-07-12 9.17.32.png

Überprüfen Sie die Anzahl der Datensätze und Spalten

print("{} rows and {} features in train set".format(train.shape[0], train.shape[1]))
print("{} rows and {} features in test set".format(test.shape[0], test.shape[1]))
print("{} rows and {} features in submit set".format(submit.shape[0], submit.shape[1]))
891 rows and 12 features in train set
418 rows and 11 features in test set
418 rows and 2 features in submit set

Überprüfen Sie die Anzahl der Fehler für jede Spalte

Überprüfen Sie, wie viele Fehler in jeder Spalte vorhanden sind.

train.isnull().sum()
PassengerId      0
Survived         0
Pclass           0
Name             0
Sex              0
Age            177
SibSp            0
Parch            0
Ticket           0
Fare             0
Cabin          687
Embarked         2
dtype: int64

Visualisierung fehlender Werte

Überprüfen Sie, ob der Defekt regelmäßig ist.

plt.figure(figsize=(18,9))
sns.heatmap(train.isnull(), cbar=False)
スクリーンショット 2020-07-12 10.52.09.png

Überprüfen Sie die Zusammenfassungsstatistik für jede Spalte

Überprüfen Sie die zusammenfassenden Statistiken wie Mittelwert, Standardabweichung, Maximalwert, Minimalwert und häufigster Wert für jede Spalte, um eine ungefähre Vorstellung von den Daten zu erhalten.

train.describe()
スクリーンショット 2020-07-12 11.58.21.png

Aggregieren Sie die Anzahl (Häufigkeit) der Daten

Überprüfen Sie den Zielprozentsatz

sns.countplot(x=target_col, data=train)
スクリーンショット 2020-07-12 11.44.12.png

Überprüfen Sie den Prozentsatz der Kategoriewerte

col = "Pclass"
sns.countplot(x=col, data=train)
スクリーンショット 2020-07-12 12.41.46.png

Überprüfen Sie den Prozentsatz einer Spalte für jeden Zielwert

col = "Pclass"
sns.countplot(x=col, hue=target_col, data=train)
スクリーンショット 2020-07-12 10.32.41.png
col = "Sex"
sns.countplot(x=col, hue=target_col, data=train)
スクリーンショット 2020-07-12 10.35.00.png

Histogramm

Die vertikale Achse ist die Frequenz und die horizontale Achse ist die Klasse, die die Verteilung der Daten visualisiert. Versuchen Sie einige, um unterschiedliche Dateneigenschaften für verschiedene Behältergrößen anzuzeigen.

col = "Age"
train[col].plot(kind="hist", bins=10, title='Distribution of {}'.format(col))
スクリーンショット 2020-07-12 10.15.22.png
col = "Fare"
train[col].plot(kind="hist", bins=50, title='Distribution of {}'.format(col))
スクリーンショット 2020-07-12 11.01.08.png

Histogramm nach Kategorie

f, ax = plt.subplots(1, 3, figsize=(15, 4))
sns.distplot(train[train['Pclass']==1]["Fare"], ax=ax[0])
ax[0].set_title('Fares in Pclass 1')
sns.distplot(train[train['Pclass']==2]["Fare"], ax=ax[1])
ax[1].set_title('Fares in Pclass 2')
sns.distplot(train[train['Pclass']==3]["Fare"], ax=ax[2])
ax[2].set_title('Fares in Pclass 3')
plt.show()
スクリーンショット 2020-07-12 11.15.58.png

Spaltenhistogramm für jede Zielkategorie

col = "Age"
fig, ax = plt.subplots(1, 2, figsize=(15, 6))
train[train[target_col]==1][col].plot(kind="hist", bins=50, title='{} - {} 1'.format(col, target_col), color=cmap(0), ax=ax[0])
train[train[target_col]==0][col].plot(kind="hist", bins=50, title='{} - {} 0'.format(col, target_col), color=cmap(1), ax=ax[1])
plt.show()
スクリーンショット 2020-07-12 9.51.20.png

Ein Histogramm einer Spalte für jeden Zielwert (bei Überlappung)

col = "Age"
train[train[target_col]==1][col].plot(kind="hist", bins=50, alpha=0.3, color=cmap(0))
train[train[target_col]==0][col].plot(kind="hist", bins=50, alpha=0.3, color=cmap(1))
plt.title("histgram for {}".format(col))
plt.xlabel(col)
plt.show()
スクリーンショット 2020-07-12 12.19.53.png

Schätzung der Kerneldichte

Grob gesagt handelt es sich um eine gekrümmte Version des Histogramms. Sie können Y für X erhalten.

sns.kdeplot(label="Age", data=train["Age"], shade=True)
スクリーンショット 2020-07-12 13.06.27.png

Kreuztabelle

Berechnen Sie die Anzahl der Vorkommen jeder Kategorie von Kategoriedaten.

pd.crosstab(train["Sex"], train["Pclass"])
スクリーンショット 2020-07-12 12.06.55.png
pd.crosstab([train["Sex"], train["Survived"]], train["Pclass"])
スクリーンショット 2020-07-12 12.10.17.png

Schwenktisch

Durchschnitt der quantitativen Daten nach Kategorien

pd.pivot_table(index="Pclass", columns="Sex", data=train[["Age", "Fare", "Survived", "Pclass", "Sex"]])
スクリーンショット 2020-07-12 15.37.00.png

Mindestwert der quantitativen Daten für jede Kategorie

pd.pivot_table(index="Pclass", columns="Sex", data=train[["Age", "Fare", "Pclass", "Sex"]], aggfunc=np.min)
スクリーンショット 2020-07-12 15.41.22.png

Streudiagramm

Überprüfen Sie die Beziehung zwischen den beiden Spalten.

Streudiagramm

sns.scatterplot(x="Age", y="Fare", data=train)
スクリーンショット 2020-07-12 12.29.39.png

Streudiagramm (farbcodiert nach Kategorie)

sns.scatterplot(x="Age", y="Fare", hue=target_col, data=train)
スクリーンショット 2020-07-12 12.30.53.png

Streudiagramm-Matrix

sns.pairplot(data=train[["Fare", "Survived", "Age", "Pclass"]], hue="Survived", dropna=True)
スクリーンショット 2020-07-12 16.11.47.png

Box Whisker

Visualisieren Sie die Datenvariabilität.

Box Whisker nach Kategorie

Überprüfen Sie die Variation der Daten für jede Kategorie.

sns.boxplot(x='Pclass', y='Age', data=train)
スクリーンショット 2020-07-12 12.57.48.png

Streifendiagramm

Die Zahl, die die Daten durch einen Punkt darstellt. Es wird verwendet, wenn eine der beiden Daten kategorisch ist.

sns.stripplot(x="Survived", y="Fare", data=train)
スクリーンショット 2020-07-12 10.58.21.png
sns.stripplot(x='Pclass', y='Age', data=train)
スクリーンショット 2020-07-12 13.15.33.png

Wärmekarte

Wärmekarte des Korrelationskoeffizienten für jede Spalte

sns.heatmap(train.corr(), annot=True)
スクリーンショット 2020-07-12 11.09.56.png

Referenz

Recommended Posts

Grundlegende Visualisierungstechniken, die aus Kaggle Titanic-Daten gelernt wurden
Python-Anwendung: Datenvisualisierung Teil 1: Grundlegend
Überprüfen Sie die Rohdaten mit Kaggles Titanic (kaggle ⑥)
[Kaggle] Vom Lesen der Daten bis zur Vorverarbeitung und Codierung
Maschinelles Lernen von Grund auf neu (maschinelles Lernen mit Kaggle)
Überblick über maschinelle Lerntechniken, die aus Scikit-Learn gelernt wurden
Fordern Sie die Kaggle Titanic heraus
Datenanalyse Titanic 1