我正在使用Ipython Notebook与pyspark应用程序一起使用。我有一个包含大量分类列的CSV文件,以确定收入是否低于或超过50k。我想使用所有输入来执行分类算法,以确定收入范围。我需要建立一个将变量映射到变量的字典,并使用map函数将变量映射到数字以进行处理。本质上,我会将数据集设置为数字格式,以便我可以实施模型。
在数据集中,有分类列,例如教育,婚姻状况,工人阶级等。有人可以告诉我如何将它们转换为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}
我创建了一个示例字典,其中包含工作类的键值对。但是,我不知道如何在地图功能中使用此功能,并将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编写的代码,用于将分类数据转换为数值数据。它工作正常。我想在Spark上下文中进行转换。并且,数据源中有9个类别列。有没有一种方法可以自动执行字典更新过程,以使所有9列都有一个KV对?