Sto usando il notebook Ipython per lavorare con le applicazioni pyspark. Ho un file CSV con molte colonne categoriche per determinare se il reddito rientra o supera l'intervallo 50k. Vorrei eseguire un algoritmo di classificazione prendendo tutti gli input per determinare l'intervallo di reddito. Ho bisogno di costruire un dizionario di variabili su variabili mappate e utilizzare una funzione di mappatura per mappare le variabili in numeri per l'elaborazione. In sostanza, vorrei che il mio set di dati fosse in un formato numerico in modo da poter lavorare sull'implementazione dei modelli.
Nel set di dati, ci sono colonne categoriche come istruzione, stato civile, classe lavoratrice ecc. Qualcuno può dirmi come convertirle in colonne numeriche in 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}
Ho creato un dizionario di esempio con coppie chiave-valore per la classe di lavoro. Ma non so come usarlo in una funzione di mappa e sostituire i dati categorici nel file CSV con il valore corrispondente.
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)
Questo è il codice che ho scritto in Python normale per convertire i dati categorici in dati numerici. Funziona bene Voglio fare la conversione in un contesto spark. E ci sono 9 colonne categoriche nell'origine dati. C'è un modo per automatizzare il processo di aggiornamento del dizionario per avere una coppia KV per tutte e 9 le colonne?