Génération de fonctionnalités avec pandas group par

Je souhaite créer une quantité de fonctionnalités avec le groupe pandas en

Lorsque vous souhaitez ajouter des statistiques pour chaque attribut de colonne à une fonctionnalité, il existe de nombreux cas où vous n'avez pas besoin de créer quelque chose comme dict avec des collections ou group by et de les fusionner. C'est facile si vous ne faites que publier des statistiques, mais j'ai eu du mal à utiliser pandas.DataFrame.groupby lorsque je voulais l'ajouter à l'enregistrement en tant que fonctionnalité, je vais donc le laisser comme un mémo.

Ce que je veux dire, c'est que groupby.transform est pratique.

Exemple de données

import pandas as pd
df = pd.DataFrame({
     "site":["A","A","A","B","B","C"],
     "dat":[15,30,30,30,10,50]
})
site dat
0 A 15
1 A 30
2 A 30
3 B 30
4 B 10
5 C 50

Statistiques de base telles que moyenne, maximum et minimum pour chaque attribut

Les fonctionnalités peuvent être générées directement en modifiant l'argument de transformation en np.max ou np.min. Il en va de même pour la médiane, la var, etc. Le code pour calculer la valeur moyenne de chaque site est indiqué ci-dessous.

import numpy as np
df["site_mean"] = df.groupby("site").transform(np.mean)
site dat site_mean
0 A 15 25
1 A 30 25
2 A 30 25
3 B 30 20
4 B 10 20
5 C 50 50

Count Encoding La méthode permettant de faire du nombre d'occurrences d'entités (de catégorie) d'une certaine colonne une nouvelle caractéristique est appelée encodage de comptage. En combinant avec groupby, il est possible de caractériser quelque chose comme la rareté dans un certain attribut. Vous pouvez le faire avec collections.Counter, mais cela se termine également par une transformation.

Le code à convertir en nombre d'occurrences de la paire site et dat s'affiche. (30 apparitions sur le site A sont 2 fois)

df["count_site_dat"] = df.groupby(["site","dat"]).transform(np.size)
site dat site_mean count_size_dat
0 A 15 25 1
1 A 30 25 2
2 A 30 25 2
3 B 30 20 1
4 B 10 20 1
5 C 50 50 1

Classement

Calculez les plus grandes données d'une certaine caractéristique parmi les données ayant une certaine caractéristique.

df["site_rank"] = df.groupby("site")["dat"].rank(method="dense")
site dat site_mean count_size_dat site_rank
0 A 15 25 1 1
1 A 30 25 2 2
2 A 30 25 2 2
3 B 30 20 1 2
4 B 10 20 1 1
5 C 50 50 1 1

La modification de l'argument de rang change principalement la méthode d'expression de la même valeur (même rang). Pour plus de détails, reportez-vous à la méthode de classement par rang pandas.DataFrame, Series.

Recommended Posts

Génération de fonctionnalités avec pandas group par
Standardisez par groupe avec les pandas
Manipuler des chaînes avec un groupe pandas par
Créez une tranche d'âge avec les pandas
Pandas: groupby () pour compléter la valeur par groupe
Comparaison de vitesse lors du changement de groupe par pandas
Trier par pandas
Dessinez un graphique en traitant avec Pandas groupby
Visualisez rapidement avec les pandas
Échantillonnage bootstrap avec Pandas
Traitement des ensembles de données avec des pandas (2)
Fusionner les ensembles de données avec les pandas
Extraire N échantillons pour chaque groupe avec Pandas DataFrame
Pandas apprenant avec la chimioinfomatique
Mémo de génération de fonction de date
Visualisation des données avec les pandas
07. Génération de déclaration par modèle
Manipulation des données avec les Pandas!
Sélection des fonctionnalités par sklearn.feature_selection
Mélangez les données avec les pandas
Génération d'images JPEG en spécifiant la qualité avec Python + OpenCV
Génération automatique de quiz avec COTOHA
pandas Matplotlib Résumé par utilisation
Lire csv avec des pandas python
Charger json imbriqué avec des pandas
Génération artificielle de données avec numpy
Sélection des caractéristiques par algorithme génétique
Génération de phrases avec GRU (keras)
Mémorandum (pseudo Vlookup par pandas)
[Python] Changer de type avec les pandas
Sélection de fonctionnalités par importances nulles
Génération de légende d'image avec Chainer
Empêchez les omissions avec l'impression de pandas
Conseils de traitement des données avec Pandas