我正在使用 Ipython notebook 来处理 pyspark 应用程序。我有一个包含大量分类列的 CSV 文件,以确定收入是低于还是高于 50k 范围。我想执行一个分类算法,采用所有输入来确定收入范围。我需要为映射变量构建一个变量字典,并使用映射函数将变量映射到数字以进行处理。本质上,我希望我的数据集采用数字格式,以便我可以着手实现模型。
在数据集中,有分类列,如教育、婚姻状况、工人阶级等。有人能告诉我如何将它们转换为 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}
我为工作类创建了一个带有键值对的示例字典。但是,我不知道如何在 map 函数中使用它并将 CSV 文件中的分类数据替换为相应的值。
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)
这是我用普通 python 编写的将分类数据转换为数值数据的代码。它工作正常。我想在火花上下文中进行转换。并且,数据源中有 9 个分类列。有没有办法自动化字典更新过程,让所有 9 列都有一个 KV 对?