J'utilise le bloc-notes Ipython pour travailler avec des applications pyspark. J'ai un fichier CSV avec beaucoup de colonnes catégorielles pour déterminer si le revenu tombe sous ou au-dessus de la plage 50k. Je voudrais effectuer un algorithme de classification prenant toutes les entrées pour déterminer la plage de revenu. J'ai besoin de construire un dictionnaire de variables pour les variables mappées et d'utiliser une fonction de carte pour mapper les variables aux nombres pour le traitement. Essentiellement, je voudrais que mon ensemble de données soit dans un format numérique afin que je puisse travailler sur la mise en œuvre des modèles.
Dans l'ensemble de données, il y a des colonnes catégorielles comme l'éducation, l'état matrimonial, la classe ouvrière, etc. Quelqu'un peut-il me dire comment les convertir en colonnes numériques dans pyspark?
workclass = {'?':0,'Federal-gov':1,'Local-gov':2,'Never- worked':3,'Private':4,'Self-emp-inc':5,'Self-emp-not-inc':6,'State-gov':7,'Without-pay':8}
J'ai créé un exemple de dictionnaire avec des paires de valeurs clés pour la classe de travail. Mais, je ne sais pas comment utiliser cela dans une fonction de carte et remplacer les données catégorielles dans le fichier CSV par la valeur correspondante.
wc = pd.read_csv('PATH', usecols = ['Workclass'])
df = pd.DataFrame(wc)
wcdict = {' ?':0,' Federal-gov':1,' Local-gov':2,' Never-worked':3,' Private':4,' Self-emp-inc':5,' Self-emp-n-inc':6,' State-gov':7,' Without-pay':8}
df_new = df.applymap(lambda s: wcdict.get(s) if s in wcdict else s)
print(df_new)
C'est le code que j'ai écrit en python normal pour convertir les données catégorielles en données numériques. Ça fonctionne bien. Je veux faire la conversion dans un contexte spark. Et, il y a 9 colonnes catégorielles dans la source de données. Existe-t-il un moyen d'automatiser le processus de mise à jour du dictionnaire pour avoir une paire KV pour les 9 colonnes?