我有一个数据集,由一些文本列(有限的可能性)和一些csv格式的数字列组成。是否有任何方法可以自动将文本列转换为数字(例如:A将为0,B将为1等)以将数据集转换为np.array
?
稍后将在scikit-learn
上使用,因此在所有处理结束时,它需要是np.array
。
编辑:添加一行数据集:
ENABLED;ENABLED;10;MANUAL;ENABLED;ENABLED;1800000;OFF;0.175;5.0;0.13;OFF;NEITHER;ENABLED;-65;2417;"wifi01";65;-75;DISCONNECTED;NO;NO;2621454;432477;3759;2.2436838539123705E-6;
您可以对每个文本列应用sklearn.preprocessing.labelEncoder()
。下面是一个例子:
import pandas as pd
df = pd.DataFrame({'col1': [1,2,3,4,5],
'col2': ['ON','ON','OFF','OFF','ON']})
from sklearn.preprocessing import LabelEncoder
lb = LabelEncoder()
df['encoded'] = lb.fit_transform(df.col2)
df
col1 col2 encoded
0 1 ON 1
1 2 ON 1
2 3 OFF 0
3 4 OFF 0
4 5 ON 1
我只是在另一列中添加了数值,但您可以替换它们。此外,您可以将它们转换为numpy数组:
df.as_matrix()
array([[1, 'ON', 1],
[2, 'ON', 1],
[3, 'OFF', 0],
[4, 'OFF', 0],
[5, 'ON', 1]], dtype=object)
下面是如何使用numpy进行编码。在这个例子中,我只是传递一个python列表:
alist = ['ON','ON','OFF','OFF','ON']
uniqe_values , y = np.unique(alist, return_inverse=True)
print uniqe_values
print y
结果如下:
['OFF' 'ON']
[1 1 0 0 1]