Pandas: convertir des catégories de numéros
Supposons que j'ai un dataframe avec les pays qui va aussi:
cc | temp
US | 37.0
CA | 12.0
US | 35.0
AU | 20.0
Je sais qu'il y a un pd.get_dummies fonction pour convertir le pays de "one-hot "codages'. Cependant, je souhaite convertir des indices de la place telle que je l'aurai cc_index = [1,2,1,3]
à la place.
Je suis en supposant qu'il existe un moyen plus rapide que d'utiliser le get_dummies avec un numpy clause where comme indiqué ci-dessous:
[np.where(x) for x in df.cc.get_dummies().values]
C'est un peu plus facile à faire dans R à l'aide de "facteurs", donc je suis en espérant que les pandas a quelque chose de similaire.
- Voulez-vous dire
cc_index = [0,1,0,2]
? - bien sûr, j'ai oublié les python indice 0
- Catégorique de la Série ou des colonnes dans un DataFrame peut aider.
Vous devez vous connecter pour publier un commentaire.
D'abord, changer le type de la colonne:
Maintenant, les données ressemblent, mais sont stockés d'une manière catégorique. Pour capturer les codes de catégorie:
Maintenant, vous avez:
Si vous ne souhaitez pas modifier votre DataFrame, mais simplement d'obtenir les codes:
Ou utiliser les catégorique de la colonne comme un indice:
Si vous souhaitez seulement de transformer votre série en entier identifiants, vous pouvez utiliser
mp.factoriser
.Remarque cette solution, contrairement à
pd.Categorical
, ne sera pas de tri par ordre alphabétique. Donc le premier pays sera attribué0
. Si vous souhaitez démarrer à partir de1
, vous pouvez ajouter une constante:Si vous souhaitez trier par ordre alphabétique, spécifiez
sort=True
:Si vous utilisez le
sklearn
bibliothèque, vous pouvez utiliserLabelEncoder
. Commepd.Categorical
, les chaînes d'entrée sont triés par ordre alphabétique avant l'encodage.