J'ai une liste de noms de villes que je veux catégoriser en fonction de leurs fréquences. J'ai d'abord voulu utiliser le binning, mais comme cela nécessitait un espacement monotone, j'ai renoncé à cela. Une prochaine approche, peut-être même meilleure, consisterait à créer des catégories basées sur des quantiles basés sur les fréquences utilisant pandas.qcut. Mais ayant les quantiles, je n'ai aucune idée de comment créer une colonne supplémentaire basée sur leur quantile. Exemple:Comment classer une colonne de texte en fonction des fréquences
import numpy as np
import pandas as pd
np.random.seed(0)
cities = np.random.choice(['Ontario', 'Ottawa', 'Vancouver','Edmonton',
'Winnipeg', 'Churchill'], 500)
# Create fake data and their frequencies
df = pd.DataFrame (cities, columns=['City'])
freq = df['City'].value_counts()
print (freq)
# Create quantiles
qc = pd.qcut (freq, 3)
print (qc)
# And now? I have the quantiles but how to assign a categorie to each City?
category_for_each_city = df['City'] in qC# does not work, but many other things neither
J'ai essayé beaucoup de choses mais rien de tout cela n'a fonctionné. Je devrais pouvoir écrire une boucle pour ceci mais je ne peux pas imaginer que c'est la manière de Python. J'ai essayé de trouver des transformateurs Sklearn mais je n'ai pas trouvé de solution spécifique. Toute aide serait grandement appréciée.
En outre, j'ai beaucoup de distributions asymétriques, une solution qui peut être étendue à par exemple une transformation de journal serait d'une grande aide.
C'est facile en effet. J'essayais quelque chose comme 'qc.category_for_each_city.codes [df ['City']]' mais votre solution est beaucoup plus simple. Merci beaucoup pour votre aide! – Arnold