2016-11-18 12 views
0

私はいくつかのテキスト列(可能性が限られている)とcsv形式の数値列で構成されるデータセットを持っています。自動的にテキスト列を数値に変換する方法はありますか(たとえば、Aは0、Bは1になるなど)、データセットをnp.arrayに変換しますか?python - sklearnのnumpy配列にデータを変換する

これは後でscikit-learnで使用されるため、すべての処理の最後にnp.arrayにする必要があります。

EDIT:あなたは、各テキスト列にsklearn.preprocessing.labelEncoder()を適用することができます

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; 
+0

はあなたが私たちのファイル(または「テキスト列」)の例(抜粋)を与えることができるように、我々はできますあなたがやっていることをよく理解していますか? 'numpy'の' genfromtext'は良い場所です。おそらく 'pandas.read_csv' ... – mgilson

+0

説明に追加されました。各テキスト列には、3つまたは4つの可能な値があります。 – Minoru

答えて

1

:データセットの1行を追加します。ここに例があります:

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] 
+0

パンダなしでもやってもいいですか?しかし、変換を見て。 – Minoru

+0

はい、可能ですが、この方法は私にとってははるかに簡単です。あなたはパンダのDataFrameとしてあなたのデータを読んで、上記の手順に従うことができます。フードの下では、sklearnは 'labelEncoder()'でnumpyを使います。私はあなたが同じことをすることができるはずの配列をnumpyとしてデータを読んでいると思います。 – MhFarahani

関連する問題