python - 将数据转换为sklearn的numpy数组

时间:2016-11-18 00:15:38

标签: python numpy scikit-learn

我有一些数据集由一些文本列(具有有限的可能性)和一些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;

1 个答案:

答案 0 :(得分:1)

您可以将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]