[PYTHON] Prenez note de la liste des utilisations de base de Pandas

Prenez note de la liste des utilisations de base de Pandas

Pandas est un incontournable pour les travaux liés à l'apprentissage automatique utilisant Python, mais j'oublie souvent comment l'utiliser, j'ai donc noté comment utiliser les fonctions fréquemment utilisées. À l'avenir, j'aimerais mettre à jour les opérations que j'ai apprises en utilisant Pandas dans un article séparé. J'espère que cela sera utile pour ceux qui ont commencé à utiliser Pandas et ceux qui veulent vérifier un peu le fonctionnement.

Puisqu'il s'agit d'un mémorandum pour débutant, il est possible que le contenu soit incorrect. Si vous constatez des erreurs, nous vous serions reconnaissants de bien vouloir nous contacter.

Environnement d'exploitation

Contenu de l'opération présenté dans l'article

Les méthodes de fonctionnement suivantes sont décrites dans cet article.

  1. Fonctionnement de base de Pandas
  1. Utilisez Pandas facilement

Résumé

Voici un résumé des fonctionnalités que j'utilise souvent dans Pandas. Cependant, bien que ce qui suit fonctionne pour le moment, je l'utilise toujours avec une compréhension de mauvaise humeur, donc je vais l'étudier et le résumer à un autre moment.

1. Fonctionnement de base de Pandas

<Importer la bibliothèque>

Importez la bibliothèque Pandas.

import pandas as pd 

Utilisez la méthode read_csv pour lire le fichier csv en tant qu'objet DataFrame. Cette fois, je lis un fichier appelé "student.csv" dans mon répertoire de travail.

data = pd.read_csv("student.csv")
display(data.head(5))

スクリーンショット 2020-01-05 20.36.47.png

[** Supplément 1: lors de la lecture de csv sans en-tête **] Si le fichier csv ne contient pas d'en-têtes ("sexe", "âge", "taille", "poids"), les premières données (NaN, 13, 151.7, 59.1) seront lues comme des en-têtes. Puisqu'il finira, spécifiez * header = None *.

Pour écrire un objet DataFrame dans un fichier csv, utilisez la méthode to_csv. Dans l'exemple, il est enregistré dans le répertoire de travail avec le nom de fichier "student_out.csv".

data.to_csv("student_out.csv", index=False)

Spécifiez * index = False * pour éviter d'enregistrer l'index (étiquette des données) lors de l'enregistrement. Si vous ne savez pas ce que c'est, vous pouvez vérifier le fichier csv généré sans * index = False *.

<Vérifiez le type de données>

Pour voir les types de données contenus dans un DataFrame, regardez l'attribut dtypes de l'objet DataFrame.

display(data.dtypes)

Le résultat est le suivant.

スクリーンショット 2020-01-05 20.38.53.png

Pour obtenir le type de données pour chaque étiquette:

display(data["age"].dtype )

スクリーンショット 2020-01-05 20.40.20.png

<Afficher le nombre de données>

Utilisez la méthode de comptage pour afficher le nombre de données. Le nombre de données est de 1 000, mais le «sexe» est inférieur à 1 000 car les données manquantes ne sont pas comptées.

display(data.count())

スクリーンショット 2020-01-05 20.42.07.png

[** Supplément 1: Obtenez le nombre de données pour chaque libellé **] Pour obtenir le nombre de données pour chaque étiquette, procédez comme suit.

display(data["sex"].count())

スクリーンショット 2020-01-05 20.43.13.png

<Vérifiez le nombre de données manquantes>

Pour vérifier le nombre de données manquantes, utilisez la méthode isnull et la méthode sum.

display(data.isnull().sum())

スクリーンショット 2020-01-05 20.44.05.png

[** Supplément 1: Fonctionnement de la méthode isnull **] Selon la documentation officielle, la méthode isnull renvoie un objet DataFrame de la même taille que le DataFrame d'origine, avec ** None ** et ** numpy.NaN ** définis sur True et les autres sur False.

display(data.isnull().head(5))

スクリーンショット 2020-01-05 20.45.03.png

[** Supplément 2: Fonctionnement de la méthode de somme **] La méthode sum renvoie la valeur totale dans la direction d'axe spécifiée. En Python, True est traité comme 1 et False est traité comme 0, donc la valeur totale est le nombre de True (le nombre de données manquantes). Ce qui suit est une citation de la référence 4. La citation est Python 3.8.1, mais je pense que c'est la même chose pour les autres vers. .. .. Peut-être. .. .. Je ne l'ai pas confirmé. .. ..

Les valeurs booléennes sont deux objets constants False et True. Celles-ci sont utilisées pour représenter les valeurs de vérité (bien que d'autres valeurs soient également considérées comme fausses ou vraies). ** Dans un contexte de traitement numérique (par exemple, lorsqu'ils sont utilisés comme argument d'un opérateur arithmétique), ils se comportent de la même manière que 0 et 1, respectivement. ** Pour toute valeur, si elle peut être interprétée comme une valeur de vérité, la fonction intégrée bool () est utilisée pour convertir la valeur en valeur booléenne (voir la section sur la détermination de la vérité ci-dessus).

[référence]

  1. Document officiel Pandas isnull ()
  2. Document officiel de Pandas sum ()
  3. Comptez le nombre d'éléments qui remplissent certaines conditions avec note.nkmk.me pandas
  4. Type intégré de document officiel Python

<Vérifiez les statistiques de base des données>

Utilisez la méthode describe pour afficher les données statistiques approximatives des données contenues dans le DataFrame. La méthode describe est exécutée en ignorant NaN.

display(data.describe(include="all"))

スクリーンショット 2020-01-05 20.49.08.png

[** Supplément 1: agrégats autres que les données numériques **] Par défaut, seules les données numériques sont agrégées, donc ** include = "all" ** est également spécifié pour "sex". Veuillez également noter que le contenu des statistiques agrégées diffère entre les données numériques et les autres données.

Référence 1: document officiel pandas describe ()

<Effectuer un encodage à chaud pour les données de catégorie>

Utilisez la méthode get_dummies pour effectuer un encodage à chaud. Ce qui suit est un exemple d'exécution d'un codage à chaud pour "sexe".

# one-hot-Effectuer l'encodage.
dummydf_sex = pd.get_dummies(data, columns=["sex"], dummy_na=True)

#Données d'origine
display(data.head(5))
# one-hot-encodage des données
display(dummydf_sex.head(5))

スクリーンショット 2020-01-05 20.50.28.png

De cette façon, quand un encodage à chaud est exécuté, de nouvelles étiquettes ("sex_male", "sex_female", "sex_nan") des données "sex" ("male", "female", "Nan") sont créées. Et 0 montre quelles étaient les données d'origine.

[** Supplément 1: traiter les données manquantes comme un libellé **] Par défaut, les données manquantes (NaN) sont ignorées, mais comme "données manquantes" sont également de bonnes informations, spécifiez * dummy_na = True * dans l'argument de la méthode get_dummies et également "NaN" Un codage à chaud est effectué comme une seule donnée.

[référence]

  1. Document officiel Pandas get_dummies ()

<Ajouter une étiquette et des données>

Essayez d'ajouter de nouvelles étiquettes et données à l'objet DataFrame. Créons une étiquette IMC comme exemple. Un moyen simple consiste à (étape 1) créer une liste de données et (étape 2) l'ajouter en tant que nouvelle étiquette, comme indiqué ci-dessous.

#Étape 1: Créez une liste d'IMC. Cela n'a rien à voir avec les opérations de Pandas.
bmi = [ w * (h / 100)**2 for w, h in zip(data["weight"], data["height"]) ]

#Étape 2: Listez l'IMC"bmi"Ajoutez-le en tant que données d'étiquette.
data["bmi"] = bmi

Affiche le résultat.

display(data.head(5))

スクリーンショット 2020-01-05 20.53.23.png

Vous pouvez voir que l'étiquette "bmi" et les données ont été ajoutées au DataFrame.

[** Supplément 1: Comment utiliser la méthode d'affectation **] Vous pouvez également ajouter des étiquettes à l'aide de la méthode d'affectation. Dans la méthode d'affectation, vous pouvez également créer des données avec une fonction de création de données. Essayons d'ajouter une étiquette pour le poids approprié (poids_propre).

data = data.assign(proper_weight = lambda x : (x.height / 100.0)**2 * 22)
display(data.head(5))

スクリーンショット 2020-01-05 20.54.46.png

[référence]

  1. Paramètre du didacticiel du document officiel Pandas
  2. Document officiel de Pandas assign ()

<Supprimer l'étiquette>

Supprimez l'étiquette et les données qu'elle contient. Pour supprimer le "bmi" ajouté par <Ajouter une étiquette et des données>, procédez comme suit.

#Retirez l'étiquette
data.drop(columns=["bmi"], inplace=True)

Montrons le résultat.

スクリーンショット 2020-01-05 20.56.53.png

[** Supplément 1: Refléter les modifications dans le DataFrame d'origine **] Par défaut, la méthode drop renvoie un objet DataFrame et n'apporte aucune modification à l'objet DataFrame d'origine. Vous pouvez refléter les modifications dans l'objet DataFrame d'origine en spécifiant * place = True *.

[référence]

  1. Pandas Official Document drop ()

<Remplissez les données manquantes avec la valeur spécifiée>

Utilisez la méthode fillna pour remplir les données manquantes avec la valeur spécifiée. Remplissons la partie manquante de «sexe» par «inconnu».

data.fillna(value={"sex": "unknown"}, inplace=True)

Vérifions le résultat.

display(data.head(5))

スクリーンショット 2020-01-05 20.58.49.png

J'ai pu confirmer que «inconnu» était entré dans la partie manquante du sexe.

[référence]

  1. Document officiel de Pandas fillna ()

2. Utilisez Pandas facilement

<Extraire les données en spécifiant les conditions>

Spécifiez les conditions et essayez d'extraire les données qui correspondent aux conditions. À titre d'exemple, créons un nouvel objet DataFrame (data_over) en extrayant des données qui pèsent plus que le poids approprié (proper_weight).

data_over = data[data.weight > data.proper_weight]
display(data_over.head(5))

スクリーンショット 2020-01-05 20.59.55.png

[référence]

  1. Pandas Official Document Tutorial Boolean Indexing
  2. Indexation des documents officiels de Pandas et sélection des données

<Modifier les données en spécifiant les conditions>

Spécifiez une condition pour modifier uniquement les données qui correspondent à la condition. À titre d'exemple, définissons le poids des données avec une hauteur de 150 ou moins à 0.

data_over["weight"][data_over.height <= 150] = 0
display(data_over.head(5))

スクリーンショット 2020-01-05 21.01.12.png

J'ai fait ce que je voulais faire pour le moment, mais je reçois un avertissement. J'ai fait une recherche rapide à ce sujet, mais je ne pouvais pas le comprendre pleinement, alors j'aimerais l'étudier et écrire un article à une date ultérieure.

Utilisez la méthode group by lorsque vous souhaitez traiter des données qui correspondent aux conditions en tant que groupe en unités de groupe. À titre d'exemple, sortons la valeur moyenne pour chaque sexe.

display(data.groupby("sex").mean())

スクリーンショット 2020-01-05 21.07.07.png

[référence]

  1. Document officiel de Pandas groupby ()
  2. Pandas Official Document GroupBy Object
  3. Qiita: Comment utiliser Pandas groupby

Référence: Pandas Official Document

Document officiel de Pandas

Recommended Posts

Prenez note de la liste des utilisations de base de Pandas
Copiez la liste en Python
Résumé de l'utilisation de base de Pandas
Remarques sur la personnalisation de la classe de liste de dict
Écrire une note sur la version python de python virtualenv
Fonctionnement de base des pandas
Utilisation basique de flask-classy
Utilisation de base de Jinja2
Fonctionnement de base des Pandas
Utilisation de base de SQL Alchemy
Un jeune ingénieur a réussi le test G, alors notez ce que vous avez appris
Créez un BOT qui raccourcit l'URL Discord
[Introduction à Python] Utilisation basique de la bibliothèque matplotlib
Note Python: Le mystère de l'attribution d'une variable à une variable
Utilisation super basique de pytest
Utilisation de base de l'interface graphique PySimple
Utilisation basique de la f-string Python
Index d'utilisation de certains pandas
Le pouvoir des pandas: Python
Remarque sur le comportement par défaut de collate_fn dans PyTorch
[Python] Comment créer une liste de chaînes de caractères caractère par caractère
Obtenez l'identifiant d'un GPU avec une faible utilisation de la mémoire
Obtenez le nombre d'éléments spécifiques dans la liste python
Combinez des listes dans un DataFrame avec des pandas
[Note] Importation de fichiers dans le répertoire parent en Python
Extraire la valeur de dict ou list sous forme de chaîne de caractères
Comment connecter le contenu de la liste dans une chaîne de caractères
Notez ce que vous voulez faire à l'avenir avec Razpai
[Note] Un script shell qui vérifie l'utilisation du processeur d'un processus spécifique dans une boucle while.
jour de course des dockers (note)
Un chercheur d'une société pharmaceutique a résumé les règles de description de base de Python
pandas Récupère le nom d'une colonne contenant un caractère spécifique
Si vous donnez une liste avec l'argument par défaut de la fonction ...
Un petit exemple de note de list_head
python / Créer un dict à partir d'une liste.
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
[Python] Faire de la fonction une fonction lambda
À propos du type de base de Go
J'ai écrit le fonctionnement de base de Pandas dans Jupyter Lab (partie 1)
Creusez le répertoire et créez une liste de chemins de répertoire + noms de fichiers
python Remarque: map -faire la même chose pour chaque élément de la liste
Comment créer un robot - Basic
Note addictive: max (max (list)) ne doit pas être utilisé lors de la maximisation de la valeur d'un tableau à deux dimensions
Générer une liste de caractères consécutifs
À propos de la liste de base des bases de Python
Un mémorandum concernant l'acquisition de l'examen de base de certification d'ingénieur Python3
J'ai écrit le fonctionnement de base de Pandas dans Jupyter Lab (partie 2)
[python] Une note que j'ai commencé à comprendre le comportement de matplotlib.pyplot
L'histoire de l'exportation d'un programme
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
[Fabric] J'étais accro à l'utilisation de booléen comme argument, alors notez les contre-mesures.
Faites une liste de "Hobunsha 70th Anniversary Campaign" avec Selenium sur Amazon
Générez une liste contenant le nombre de jours du mois en cours.
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
[Linux] Une commande pour obtenir une liste des commandes exécutées dans le passé
Je souhaite trier une liste dans l'ordre des autres listes
Recevez une liste des résultats du traitement parallèle en Python avec starmap
Une note sur les fonctions de la bibliothèque Linux standard qui gère le temps
Créez DNN-CRF avec Chainer et reconnaissez la progression des accords de la musique
J'ai fait une erreur en récupérant la hiérarchie avec MultiIndex of pandas