2016-11-18 1 views
0

일부 텍스트 열 (제한된 가능성 있음)과 csv 형식의 숫자 열로 구성된 데이터 집합이 있습니다. 데이터 열을 np.array으로 변환하기 위해 텍스트 열을 숫자로 자동 변환하는 방법이 있습니까 (예 : A는 0, B는 1 등)?python - 데이터를 numle 배열로 변환 sklearn

이 값은 나중에 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; 
+0

당신이 우리에게 파일 (또는 "텍스트 열")에서 예 (발췌) 줄 수 있도록 우리는 할 수 더 잘 이해하고 있습니까? 'numpy'의'genfromtext'는 시작하기 좋은 곳일 수도 있고 아마도'pandas.read_csv' ... – mgilson

+0

설명에 추가되었습니다. 각 텍스트 컬럼은 3 또는 4 개의 가능한 값을 가질 수 있습니다. – Minoru

답변

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로 인코딩하는 방법입니다. 이 예에서는 난 그냥 파이썬 목록을 전달하고있다 :

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

예, 가능하지만이 방법은 나에게 훨씬 더 단순 해 보입니다. pandas DataFrame으로 데이터를 읽고 위의 절차를 따를 수 있습니다. 후드 sklearn은'labelEncoder()'에서 numpy를 사용합니다. 데이터를 numpy 배열로 읽는다면 똑같은 일을 할 수 있어야한다고 생각합니다. – MhFarahani