[PYTHON] [Kaggle] Vom Lesen der Daten bis zur Vorverarbeitung und Codierung

0. Zuerst

Beim Versuch, Daten mit maschinellem Lernen zu analysieren, plötzlich aus den erhaltenen CSV-Daten
"OK! Lass uns zurück gehen!" "OK! Lass uns klassifizieren!"
Auf diese Weise kommt es selten vor, dass es plötzlich in die Modellgenerierung aufgenommen wird. Vielmehr sind die Hindernisse bis zu diesem Punkt für Anfänger recht hoch. Diesmal habe ich also die Datenvorverarbeitung zusammengefasst.

1. Daten lesen

Diesmal habe ich Daten von der Titanic of Kaggle ausgeliehen. Ich benutze übrigens Jupyter. (Wenn jemand weiß, wie man die Eingabe und Ausgabe von Jupyter in Qiita kombiniert, lass es mich wissen ...)

In[1]


%matplotlib inline
import matplotlib as plt
import pandas as pd
import numpy as np
import seaborn as sns

df = pd.read_csv('./train.csv')
df = df.set_index('PassengerId') #Setzen Sie eindeutige Spalten auf Index
print(df.shape)
df.head()

image.png

2. Löschen Sie Spalten, die für die Analyse nicht benötigt werden

In[2]


df = df.drop(['Name', 'Ticket'], axis=1) #
df.head()

image.png

3. Überprüfen Sie den Datentyp und den Verlust

In[3]


print(df.info())
#print(df.dtypes) #Klicken Sie hier, wenn Sie nur den Datentyp überprüfen möchten
df.isnull().sum(axis=0)
#df.isnull().any(axis=0) #Klicken Sie hier, um nur das Vorhandensein oder Fehlen von Null zu überprüfen

out[3]


<class 'pandas.core.frame.DataFrame'>
Int64Index: 891 entries, 1 to 891
Data columns (total 9 columns):
Survived    891 non-null int64
Pclass      891 non-null int64
Sex         891 non-null object
Age         714 non-null float64
SibSp       891 non-null int64
Parch       891 non-null int64
Fare        891 non-null float64
Cabin       204 non-null object
Embarked    889 non-null object
dtypes: float64(2), int64(4), object(3)
memory usage: 69.6+ KB
None
Survived      0
Pclass        0
Sex           0
Age         177
SibSp         0
Parch         0
Fare          0
Cabin       687
Embarked      2
dtype: int64

4. Zählen Sie die Elementtypen auf der Nennskala

In[4]


#Zählen Sie die Elementtypen auf der Nennskala
import collections
c = collections.Counter(df['Sex'])
print('Sex:',c)
c = collections.Counter(df['Cabin'])
print('Cabin:',len(c))
c = collections.Counter(df['Embarked'])
print('Embarked:',c)

out[4]


Sex: Counter({'male': 577, 'female': 314})
Cabin: 148
Embarked: Counter({'S': 644, 'C': 168, 'Q': 77, nan: 2})

5. Fehler löschen / ergänzen

In[5]


df = df.drop(['Cabin'], axis=1) #Gelöscht, da die Analyse schwierig zu sein scheint
df = df.dropna(subset = ['Embarked']) #Die Kabine weist nur wenige Mängel auf. Löschen Sie sie daher mit dropna in einer Zeile
df = df.fillna(method = 'ffill') #Andere Spalten ergänzen frühere Daten
print(df.isnull().any(axis=0))
df.shape

out[5]


Survived    False
Pclass      False
Sex         False
Age         False
SibSp       False
Parch       False
Fare        False
Embarked    False
dtype: bool
(889, 8)

Konvertiert Daten vom Typ Objekt (Zeichen) in numerische Daten vom Typ (numerisch) mithilfe der Etikettencodierung.

In[6]


from sklearn.preprocessing import LabelEncoder
for column in ['Sex','Embarked']:
    le = LabelEncoder()
    le.fit(df[column])
    df[column] = le.transform(df[column])
df.head()

image.png

Sie können sehen, dass es eine Etikettencodierung für Sex and Embarked gibt.

Durch die Etikettencodierung können Sie auch die Umrisse der Daten mithilfe des Paardiagramms von Seaborn usw. anzeigen.

sns.pairplot(df);

Ich denke, es ist gut, nur kontinuierliche Variablen auszuwählen und sie anzuzeigen. (Obwohl das Folgende einige enthält, die keine streng kontinuierlichen Variablen sind ...)

df_continuous = df[['Age','SibSp','Parch','Fare']]
sns.pairplot(df_continuous);

image.png

7. Eine Hot-Codierung

One-Hot-Codierung von numerischen Daten und anderen nominalen Skalendaten unter Verwendung von One-Hot-Codierung. Ich wusste nicht, wie man den OneHotEncoder von scikitlearn gut benutzt, also habe ich get_dummies von Pandas verwendet.

In[7]


df = pd.get_dummies(df, columns = ['Pclass','Embarked'])
df.head()

image.png

Sie können sehen, dass es eine Hot-Codierung für Pclass und Embarked gibt.

8. Zusammenfassung

Ich denke, dieser Trend ist vielen Datenanalysen gemeinsam. Bitte beachten Sie den Ablauf der Vorbehandlung.

Wir suchen nach Kommentaren, Artikelmaterial usw.

Recommended Posts

[Kaggle] Vom Lesen der Daten bis zur Vorverarbeitung und Codierung
SIGNATE Quest ① Vom Lesen der Daten bis zur Vorverarbeitung
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
Datenvorverarbeitung (2) Ändern Sie die Daten von "Kategorisch" in "Numerisch".
Abrufen von Daten von MacNote3 und Migrieren zu Write
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Encoding) zu verarbeiten.
Von der Installation von Elasticsearch bis zur Dateneingabe
Scraping, Vorverarbeitung und Schreiben in postgreSQL
Von Python bis zur Verwendung von MeCab (und CaboCha)
Python: Lesen von JSON-Daten von der Web-API
Portieren und Ändern des Doublet-Solvers von Python2 auf Python3.
Speichern Sie SQLite3-Daten und migrieren Sie zu MySQL
Komprimieren Sie Python-Daten und schreiben Sie in SQLite
OpenFOAM-Zeitreihendaten lesen und Daten einstellen
[Python] Von der morphologischen Analyse von CSV-Daten bis zur CSV-Ausgabe und Diagrammanzeige [GiNZA]
[Von Zeit zu Zeit aktualisiert] LetCode-Algorithmus und Bibliothek
Studie aus Python Lesen und Schreiben von Hour9-Dateien
[Python] Datenanalyse, maschinelles Lernen (Kaggle) -Datenvorverarbeitung-
[Python] Fluss vom Web-Scraping zur Datenanalyse
Datenbereinigung 3 Verwendung von OpenCV und Vorverarbeitung von Bilddaten
Datenbereinigung Umgang mit fehlenden und Ausreißern
Grundlegende Visualisierungstechniken, die aus Kaggle Titanic-Daten gelernt wurden
[AWS] Migrieren Sie Daten von DynamoDB nach Aurora MySQL
Summe von 1 bis 10
Geben Sie Breiten- und Längengradpunktsequenzdaten an und versuchen Sie, die Straße anhand von OpenStreetMap-Daten zu identifizieren
Lesen des Qiskit-Quellcodes ~ Terra: Lesen von der Schaltungserstellung bis zum Hinzufügen von Gates und Messungen
Automatische Datenmigration vom Yahoo Root Lab nach Strava
Python - Lesen Sie Daten aus einer numerischen Datendatei und berechnen Sie die Kovarianz
Senden Sie Protokolldaten vom Server an Splunk Cloud
Lesehinweis: Einführung in die Datenanalyse mit Python
Senden Sie Daten von Python über die Socket-Kommunikation an Processing
Versuchen Sie, Twitter-Daten in SPAM und HAM zu unterteilen
DataNitro, Implementierung einer Funktion zum Lesen von Daten aus dem Blatt
Ich habe versucht, Daten aus einer Datei mit Node.js zu lesen.
Ich möchte sagen, dass es eine Datenvorverarbeitung gibt ~
Überblick über die Verarbeitung natürlicher Sprache und ihre Datenvorverarbeitung
Python - Lesen Sie Daten aus einer numerischen Datendatei, um die verteilte, gemeinsam verteilte Matrix, Eigenwerte und Eigenvektoren zu finden
Kanonische Python-Notation: So ermitteln und extrahieren Sie nur gültige Datumsausdrücke aus Eingabedaten
Lesen von Notizen (in Python und Stan) zur Einführung in die statistische Modellierung für die Datenanalyse (Midorimoto)
[Python / Ruby] Mit Code verstehen Wie man Daten aus dem Internet abruft und in CSV schreibt