[PYTHON] [Kaggle] De la lecture des données au prétraitement et au codage

0. Premier

Lorsque vous essayez d'analyser des données à l'aide de l'apprentissage automatique, soudainement à partir des données csv obtenues
"OK! Revenons en arrière!" "OK! Classifions!"
De cette manière, il est rare de le mettre soudainement dans la génération de modèles. Au contraire, les barrières jusqu'à ce point sont assez élevées pour les débutants. Donc, cette fois, j'ai résumé le prétraitement des données.

1. Lire les données

Cette fois, j'ai emprunté des données au Titanic of Kaggle. Au fait, j'utilise jupyter. (Si quelqu'un sait comment combiner l'entrée et la sortie de jupyter dans Qiita, faites-le moi savoir ...)

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') #Définir des colonnes uniques à indexer
print(df.shape)
df.head()

image.png

2. Supprimez les colonnes qui ne sont pas nécessaires pour l'analyse

In[2]


df = df.drop(['Name', 'Ticket'], axis=1) #Supprimer les colonnes qui ne sont pas nécessaires pour l'analyse
df.head()

image.png

3. Vérifiez le type de données et la perte

In[3]


print(df.info())
#print(df.dtypes) #Cliquez ici si vous souhaitez vérifier uniquement le type de données
df.isnull().sum(axis=0)
#df.isnull().any(axis=0) #Cliquez ici pour vérifier uniquement la présence ou l'absence de null

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. Comptez les types d'éléments sur l'échelle nominale

In[4]


#Compter les types d'éléments sur l'échelle nominale
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. Supprimer / compléter les défauts

In[5]


df = df.drop(['Cabin'], axis=1) #Supprimé car il semble difficile à utiliser pour l'analyse
df = df.dropna(subset = ['Embarked']) #La cabine a peu de défauts, alors supprimez-la avec dropna dans une ligne
df = df.fillna(method = 'ffill') #D'autres colonnes complètent les données précédentes
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)

6. Codage des étiquettes

Convertit les données de type objet (caractère) en données de type numérique (numérique) à l'aide du codage d'étiquette.

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

Vous pouvez voir qu'il existe un encodage d'étiquette pour Sex and Embarked.

Grâce au codage des étiquettes, vous pouvez également voir le contour des données en utilisant le diagramme de paires de seaborn, etc.

sns.pairplot(df);

Je pense qu'il est également bon de sélectionner uniquement des variables continues et de les afficher. (Bien que ce qui suit en inclue certaines qui ne sont pas des variables strictement continues ...)

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

image.png

7. Un encodage à chaud

Codage à chaud des données numériques et autres données d'échelle nominale à l'aide du codage à chaud. Je ne savais pas comment bien utiliser OneHotEncoder de scikitlearn, j'ai donc utilisé get_dummies de pandas.

In[7]


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

image.png

Vous pouvez voir qu'il existe un encodage à chaud pour Pclass et Embarked.

8. Résumé

Je pense que cette tendance est commune à de nombreuses analyses de données. Veuillez vous référer au déroulement du prétraitement.

Nous recherchons des commentaires, des articles, etc.

Recommended Posts

[Kaggle] De la lecture des données au prétraitement et au codage
SIGNATURE Quête ① De la lecture des données au prétraitement
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Prétraitement des données (2) Changez les données de catégorielles à numériques.
Récupération des données de MacNote3 et migration vers Write
Essayez de traiter les données Titanic avec la bibliothèque de prétraitement DataLiner (encodage)
De l'installation d'Elasticsearch à la saisie des données
Scraping, prétraitement et écriture dans postgreSQL
De Python à l'utilisation de MeCab (et CaboCha)
Python: lecture de données JSON à partir de l'API Web
Portage et modification du solveur de doublets de python2 vers python3.
Vider les données SQLite3 et migrer vers MySQL
Compressez les données python et écrivez sur sqlite
Lecture des données de séries chronologiques OpenFOAM et des ensembles de données
[Python] De l'analyse morphologique des données CSV à la sortie CSV et à l'affichage graphique [GiNZA]
[Mis à jour de temps en temps] Algorithme et bibliothèque LetCode
Étude à partir de Python Lecture et écriture de fichiers Hour9
[Python] Analyse de données, pratique du machine learning (Kaggle) -Prétraitement des données-
[Python] Flux du scraping Web à l'analyse des données
Nettoyage des données 3 Utilisation d'OpenCV et prétraitement des données d'image
Nettoyage des données Comment gérer les valeurs manquantes et aberrantes
Techniques de visualisation de base apprises à partir des données de Kaggle Titanic
[AWS] Migrer les données de DynamoDB vers Aurora MySQL
Somme de 1 à 10
Donnez les données de séquence de points de latitude et de longitude et essayez d'identifier la route à partir des données d'OpenStreetMap
Lecture du code source Qiskit ~ Terra: lecture de la création du circuit à l'ajout de portes et de mesures
Migration automatique des données de Yahoo Root Lab vers Strava
Python --Lire les données d'un fichier de données numériques et calculer la covariance
Envoyer les données du journal du serveur vers Splunk Cloud
Note de lecture: Introduction à l'analyse de données avec Python
Envoyer des données de Python au traitement via une communication socket
Essayez de diviser les données Twitter en SPAM et HAM
DataNitro, implémentation de la fonction de lecture des données de feuille
J'ai essayé de lire les données d'un fichier en utilisant Node.js.
Je veux dire qu'il y a un prétraitement des données ~
Vue d'ensemble du traitement du langage naturel et de son prétraitement des données
Python --Lisez des données à partir d'un fichier de données numériques pour trouver des matrices, des valeurs propres et des vecteurs propres distribués co-distribués
Notation canonique Python: comment déterminer et extraire uniquement les expressions de date valides des données d'entrée
Notes de lecture (en Python et Stan) pour une introduction à la modélisation statistique pour l'analyse de données (Midorimoto)
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV