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.
Les méthodes de fonctionnement suivantes sont décrites dans cet article.
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.
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))
[** 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 *.
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.
Pour obtenir le type de données pour chaque étiquette:
display(data["age"].dtype )
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())
[** 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())
Pour vérifier le nombre de données manquantes, utilisez la méthode isnull et la méthode sum.
display(data.isnull().sum())
[** 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))
[** 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]
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"))
[** 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 ()
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))
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]
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))
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))
[référence]
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.
[** 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]
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))
J'ai pu confirmer que «inconnu» était entré dans la partie manquante du sexe.
[référence]
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))
[référence]
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))
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())
[référence]
Recommended Posts