【发布时间】:2016-03-31 12:53:54
【问题描述】:
我想规范化我的分类值和数值。
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)
之后我需要将 2 个 numpy 数组组合回 pandas 数据帧,但下面的方法对我不起作用。
mas = np.hstack((df_num, df_cat))
df = pd.DataFrame(data=mas, columns=cols)
错误信息:ValueError: Shape of passed values is (475, 243), indices imply (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)
错误信息:
Column: DATE and msg=Singleton array array(1444424400.0) cannot be considered a valid collection.
Column: QTR_HR_START and msg=Singleton array array(21600000L, dtype=int64) cannot be considered a valid collection.
...
PS。有什么办法可以避免 numpy 等?例如,我想利用
pandas_ml库
【问题讨论】:
-
不起作用并不能解释为什么它失败了。为什么它不起作用?它给出了一个错误或者它没有给出预期的输出?
-
我添加了一个如何做这个纯熊猫的例子。不过,如果您的目标是机器学习,那么最好走纯 numpy 路线而不是转换回 pandas。
-
同意,但是我正在研究非常方便的库
pandas_ml,这里所有的计算都是基于pandas的
标签: python python-2.7 numpy pandas scikit-learn