[PYTHON] Fonctionnement de base des Pandas

Bonjour, c'est Motty. Depuis que j'ai commencé kaggle récemment, je voudrais résumer le fonctionnement simple du traitement des données à l'aide de Pandas, ce qui est essentiel (''). ・ Site officiel de Kaggle https://www.kaggle.com/ ・ Guide de l'utilisateur Pandas https://pandas.pydata.org/docs/user_guide/index.html

Aperçu

Pandas est une bibliothèque de traitement de données Python. Vous pouvez facilement utiliser les tables, agréger et compléter les valeurs manquantes. Il y a beaucoup d'autres choses, telles que la jonction de colonnes, l'affichage d'une matrice de corrélation et la tabulation croisée.  2020-07-31 18.05.25.png

Données à utiliser

kaggle Classic, mais utilise des données sur la survie du Titanic.

import numpy as np
import matplotlib.pyplot as plt
%matplotlib.inline
import pandas as pd
df_train = pd.read_csv("train.csv")

Confirmation des données

df_train.columns #Liste des articles

Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'], dtype='object')<Figure size 1080x1080 with 0 Axes>

df_train.shape #Taille

(891,12) C'est la taille de la file d'attente. Jetons un coup d'œil aux 5 premières lignes seulement.

df_train.head()

 2020-07-31 18.25.12.png Les données quantitatives et les données qualitatives sont mitigées. (PClass n'est pas lié quantitativement les uns aux autres, il peut donc être considéré comme des données qualitatives!)

Extraction de colonnes / lignes

df_train["Name"] #1 extraction de colonne
df_train.loc[:,["Name","Sex"]] #Extraction multi-colonnes

df_train[10:15] #Extraction de lignes
df_train[10:20:2] #Passer une ligne

df_train[df_train["Age"] < 20] #Spécification de la valeur
df_train[1:300].query('Age < 20 and Sex == "male"') #Spécifiez plusieurs conditions avec une requête

Agrégat

df_train["Pclass"].value_counts()

3 491 1 216 2 184 Name: Pclass, dtype: int64 Il renvoie le résultat agrégé pour chaque élément.

Confirmation des valeurs manquantes

df_train.isnull() #Vrai → Valeur manquante
df_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

Vous pouvez obtenir le nombre total de NaN pour chaque élément de colonne de la liste. Sur cette base, nous établirons une politique pour compléter les valeurs manquantes.

Affichage de la matrice de corrélation

La matrice de corrélation est le coefficient de corrélation entre chaque variable.

df_train.corr() #Affichage du coefficient de corrélation

PassengerId Survived Pclass Age SibSp Parch Fare PassengerId 1.000000 -0.005007 -0.035144 0.036847 -0.057527 -0.001652 0.012658 Survived -0.005007 1.000000 -0.338481 -0.077221 -0.035322 0.081629 0.257307 Pclass -0.035144 -0.338481 1.000000 -0.369226 0.083081 0.018443 -0.549500 Age 0.036847 -0.077221 -0.369226 1.000000 -0.308247 -0.189119 0.096067 SibSp -0.057527 -0.035322 0.083081 -0.308247 1.000000 0.414838 0.159651 Parch -0.001652 0.081629 0.018443 -0.189119 0.414838 1.000000 0.216225 Fare 0.012658 0.257307 -0.549500 0.096067 0.159651 0.216225 1.000000

La composante diagonale est toujours 1 car elle est en corrélation avec elle-même. Cependant, il existe non seulement des données quantitatives, mais aussi des chaînes de caractères (Sex, Embark) et des données qualitatives utilisant des nombres (Pclass), qui doivent être converties en représentations one-hot.

dummy_df = pd.get_dummies(df_train, columns = ["Sex","Embarked","Pclass"]) #Obtenir des variables factices
dummy_df.columns

Index(['PassengerId', 'Survived', 'Name', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Sex_female', 'Sex_male', 'Embarked_C', 'Embarked_Q', 'Embarked_S', 'Pclass_1', 'Pclass_2', 'Pclass_3'], dtype='object')

dummy_df.corr()

Je ne l'écrirai pas car c'est énorme, mais la matrice de corrélation que j'ai mentionnée plus tôt a été omise pour les données de chaîne. Cette fois, une matrice de corrélation avec la variable qualitative remplacée par un mannequin (0,1) est renvoyée.

Visualisation

Regardons la matrice de corrélation en utilisant HeatMap de Seaborn. Pour la palette de couleurs, j'ai choisi une palette de couleurs avec une profondeur de couleur contrastante centrée sur 0.

import seaborn as sns
plt.figure(figsize = (12,10))
sns.heatmap(dummy_df.corr(), cmap = "seismic",vmin = -1 ,vmax = 1, annot = True)

 2020-07-31 18.02.21.png

Ceux qui sont fortement corrélés avec Servived peuvent être considérés comme affectant Servived. La corrélation entre Sex_female et Pclass_1 est élevée. Cela signifie que les personnes qui sont des femmes ou qui ont une classe de chambre de 1 ont un taux de survie élevé. Si vous l'utilisez correctement, vous pouvez définir une star de la politique dans la phase de pré-apprentissage automatique!

Les références

J'ai fait référence à l'article suivant. URL de référence ・ Opération de base Pandas qui apparaît fréquemment dans l'analyse des données https://qiita.com/ysdyt/items/9ccca82fc5b504e7913a · Information additionnelle. Il est temps pour vous d'utiliser la carte thermique Seaborn. de maman https://qiita.com/hiroyuki_kageyama/items/00d0f52724f16ad7cf77 Livre de référence <a target = "_ blank" href = "https://www.amazon.co.jp/gp/product/B07C3JFK3V/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B07C3JFKorgan777V&linkCode=as2cdtag=2c2&tag777&linkCode=as2cry2&tag773V&linkCode=as2cdtag > Prétraitement complet [techniques pratiques SQL / R / Python pour l'analyse des données] <img src = "// ir-jp.amazon-adsystem.com/e/ir?t=organiccrypt-22&l=am2&o" = 9 & a = B07C3JFK3V "width =" 1 "height =" 1 "border =" 0 "alt =" "style =" border: none! Important; margin: 0px! Important; "/> <a target = "_ blank" href = "https://www.amazon.co.jp/gp/product/B084MD5DGG/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B084MD5DGG&linkCode=as2&tag01-2903&tag2clink2 > Peut être utilisé sur le terrain! pandas Introduction au prétraitement des données Méthodes de prétraitement utiles pour l'apprentissage automatique et la science des données <img src = "// ir-jp.amazon-adsystem.com/e/ir?t=organiccrypt-22&l=am2&o=9&a=" B084MD5DGG "width =" 1 "height =" 1 "border =" 0 "alt =" "style =" border: none! Important; margin: 0px! Important; "/>

À la fin

N'est-il pas possible de simplement le mettre dans un tableau Numpy pour le traitement des données? J'ai pensé, mais il est intéressant que le traitement des données puisse être effectué facilement. Au contraire, si vous souhaitez effectuer des calculs avancés pour DataFrame, il peut être préférable de le déplacer une fois dans un tableau ...?

Recommended Posts

Fonctionnement de base des pandas
Fonctionnement de base des Pandas
Résumé de l'utilisation de base de Pandas
Fonctionnement de base de Python Pandas Series et Dataframe (1)
[Python] Mémo d'opération de pandas DataFrame
Mémorandum d'opération Pandas
J'ai écrit le fonctionnement de base de Pandas dans Jupyter Lab (partie 1)
J'ai écrit le fonctionnement de base de Pandas dans Jupyter Lab (partie 2)
[Python] Opération d'énumération
Fonctionnement automatique de Chrome avec Python + Sélénium + pandas
Utilisation basique de flask-classy
Utilisation de base de Jinja2
Liste des opérations de base de Python3 list, tapple, dictionnaire, set
À propos de MultiIndex of Pandas
Utilisation de base de SQL Alchemy
Connaissance de base de Python
Python Basic --Pandas, Numpy-
Application Python: Pandas Partie 1: Basique
Utilisation super basique de pytest
Utilisation de base de l'interface graphique PySimple
Fonctionnement du filtre (Aucun, liste)
Flux de base de détection d'anomalies
Principes de base de XPath (1) - Concept de base de XPath
Graphique de base à une ligne de HoloViews
Comportement de la méthode pandas rolling ()
Utilisation basique de la f-string Python
Index d'utilisation de certains pandas
Le pouvoir des pandas: Python
J'ai écrit le fonctionnement de base de Seaborn dans Jupyter Lab
[Calcul scientifique / technique par Python] Fonctionnement de base du tableau, numpy
J'ai écrit le fonctionnement de base de Numpy dans Jupyter Lab.
J'ai écrit le fonctionnement de base de matplotlib dans Jupyter Lab
Connaissance de base de Linux et des commandes de base
Mémorandum de travail (pymongo) Partie 1. Fonctionnement de base
Résumé des connaissances de base de PyPy Partie 1
Résumé de l'implémentation de base par PyTorch
Caractéristiques de pd.NA dans Pandas 1.0.0 (RC0)
Etosetra lié à Pandas read_csv
Pandas
À propos du type de base de Go
[Mémo] Petite histoire de pandas, stupide
1. Statistiques apprises avec Python 1-1. Statistiques de base (Pandas)
Notifier LINE des informations sur l'exploitation du train
Grammaire de base du système Python3 (dictionnaire)
Mémo de fonctionnement de l'environnement virtuel Conda
Etude de base d'OpenCV avec Python
[Python] Résumé de l'utilisation des pandas
[Linux] Examen des commandes de base fréquemment utilisées 2
Résumé des méthodes fréquemment utilisées chez les pandas
[Etude de conception 1] Etude de conception du système d'automatisation d'exploitation PC 1
Fonctionnement du script de trading automatique de monnaie virtuelle
Un petit examen minutieux de Pandas 1.0 et Dask
Écriture de base de divers langages de programmation (auto-mémo)
Utilisation de base de Btrfs dans Arch Linux