我正在处理对分类变量进行分箱。我正在处理的列是:
Adult.loc[:,"education"].value_counts()HS-grad 10501Some-college 7291Bachelors 5355Masters 1723Assoc-voc 138211th 1175Assoc-acdm 106710th 9337th-8th 646Prof-school 5769th 51412th 433Doctorate 4135th-6th 3331st-4th 168Preschool 51
我试图将这些变量分成三列:未上高中、高中和大学。我已经运行了以下代码:
Adult.loc[Adult.loc[:,"education"] == "Preschool", "education"]="No Highschool" Adult.loc[Adult.loc[:,"education"] == "1st-4th", "education"]="No Highschool"Adult.loc[Adult.loc[:,"education"] == "5th-6th", "education"]="No Highschool"Adult.loc[Adult.loc[:,"education"] == "7th-8th", "education"]="No Highschool"Adult.loc[Adult.loc[:,"education"] == "Prof-school", "education"]="Highschool"Adult.loc[Adult.loc[:,"education"] == "9th", "education"]="Highschool"Adult.loc[Adult.loc[:,"education"] == "10th", "education"]="Highschool"Adult.loc[Adult.loc[:,"education"] == "11th", "education"]="Highschool"Adult.loc[Adult.loc[:,"education"] == "12th", "education"]="Highschool"Adult.loc[Adult.loc[:,"education"] == "HS-grad", "education"]="Highschool"Adult.loc[Adult.loc[:,"education"] == "Some-college", "education"]="College"Adult.loc[Adult.loc[:,"education"] == "Bachelors", "education"]="College"Adult.loc[Adult.loc[:,"education"] == "Masters", "education"]="College"Adult.loc[Adult.loc[:,"education"] == "Assoc-voc", "education"]="College"Adult.loc[Adult.loc[:,"education"] == "Assoc-acdm", "education"]="College"Adult.loc[Adult.loc[:,"education"] == "Doctorate", "education"]="College"
有没有一种方法可以编写一个函数来对这些分类变量进行分箱?我采取的路线似乎在处理具有许多不同变量的数据集时并不是最佳选择。
回答:
请参考以下示例代码。
df = pd.DataFrame({"x":['a', 'b', 'c', 'a', 'b']})value_dict = {'a':'A', 'b':'A', 'c':'B'}df['x'] = df['x'].replace(value_dict)
您只需定义您的value_dict (例如,{"Preschool":"No Highschool", ... "Doctorate":"College"}