用数字和分类缩放数据框

时间:2019-12-30 23:39:53

标签: python python-3.x pandas scikit-learn

我在python中,我的数据框包含两个数值,如下所示

 subject_id     pH              urinecolor         blood pressure                  
    3          1.00                red              high
    3          1.15                red              high
    4          2.00              yellow             low

和categorical。我想缩放和规范化数据帧,但传统缩放给出错误的无法缩放字符串 我尝试以下操作,但是它给了我return as list,我想缩放列并返回整个数据框以进行进一步的操作,任何人都可以帮助我。预先感谢

df= pd.readcsv()
dfTest =df.select_dtypes(include='number')
scaler = StandardScaler(copy=True, with_mean=True, with_std=True)
dftest= df.select_dtypes(include=np.number)
X = scaler.fit_transform(dftest)

1 个答案:

答案 0 :(得分:0)

缩放/归一化仅适用于数字列。对于分类列,还有其他可用的技术,例如label encodingone hot encoding等。这是您可以做的:

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()

# get numeric data
num_d = d.select_dtypes(exclude=['object'])

# update the cols with their normalized values
d[num_d.columns] = sc.fit_transform(num_d)

# convert string variable to One Hot Encoding
d = pd.get_dummies(d)

   subject_id        pH  urinecolor_red  urinecolor_yellow
0   -0.707107 -0.870563               1                  0
1   -0.707107 -0.529908               1                  0
2    1.414214  1.400471               0                  1

希望这给您一些想法。