我希望对我的分类和数值数据进行归一化处理。
cols = df.columns.values.tolist()
df_num = df.drop(CAT_COLUMNS, axis=1)
df_num = df_num.as_matrix()
df_num = preprocessing.StandardScaler().fit_transform(df_num)
df.fillna('NA', inplace=True)
df_cat = df.T.to_dict().values()
vec_cat = DictVectorizer( sparse=False )
df_cat = vec_cat.fit_transform(df_cat)
接下来我需要将两个numpy
数组合并为一个pandas
dataframe,但是下面的方法对我不起作用。
mas = np.hstack((df_num, df_cat))
df = pd.DataFrame(data=mas, columns=cols)
错误信息: ValueError: 传递的值的形状为(475,243),索引指示为(83,243)
另一种方法:
columns = df.columns.values.tolist()
for col in columns:
try:
if col in CAT_COLUMNS:
df[col] = pd.get_dummies(df[col])
else:
df[col] = df[col].apply(preprocessing.StandardScaler().fit)
except Exception, err:
print 'Column: %s and msg=%s' % (col, err.message)
错误信息:
列名:DATE,错误信息:单个元素数组array(1444424400.0)不能被视为有效集合。
列名:QTR_HR_START,错误信息:单个元素数组array(21600000L, dtype=int64)不能被视为有效集合。
...
附注:有没有避免使用NumPy等库的方法?例如,我想利用库。
pandas_ml
,这里所有的计算都基于pandas。 - SpanishBoy