Używam notatnika Ipython do pracy z aplikacjami pyspark. Mam plik CSV z dużą ilością podzielonych na kategorie kolumn, aby ustalić, czy dochód mieści się w przedziale 50k, czy powyżej. Chciałbym wykonać algorytm klasyfikacji, biorąc wszystkie dane wejściowe w celu ustalenia zakresu dochodów. Muszę zbudować słownik zmiennych do mapowanych zmiennych i użyć funkcji mapowania do mapowania zmiennych na liczby w celu przetworzenia. Zasadniczo chciałbym, aby mój zestaw danych był w formacie liczbowym, aby móc pracować nad implementacją modeli.
W zestawie danych znajdują się podzielone na kategorie kolumny, takie jak edukacja, stan cywilny, klasa robotnicza itp. Czy ktoś może mi powiedzieć, jak przekonwertować je na kolumny liczbowe w 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}
Stworzyłem przykładowy słownik z parami kluczowych wartości dla klasy robotniczej. Ale nie wiem, jak tego użyć w funkcji mapy i zastąpić dane kategoryczne w pliku CSV odpowiednią wartością.
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)
To jest kod, który napisałem w normalnym pythonie, aby przekonwertować dane kategoryczne na dane liczbowe. To działa dobrze. Chcę dokonać konwersji w kontekście iskry. W źródle danych znajduje się 9 kategorycznych kolumn. Czy istnieje sposób na zautomatyzowanie procesu aktualizacji słownika w celu uzyskania pary KV dla wszystkich 9 kolumn?