2016-07-09 3 views
-3

나는 Cloudera 5.2 VM 및 pandas와 협력합니다. 0.18.0 kmeans를 데이터 프레임에 적용하고 싶습니다. 하지만 str 열이 있습니다.팬더 카테고리 속성으로 작업하는 방법

내 dataframe은 내가 kmeans을 실행하면

adClicksPerTime.head(n=5) 
Out[50]: 
      timestamp adCategory userId totalAdClicks 
0 2016-05-26 15:00:00 automotive  355    1 
1 2016-05-26 15:00:00  clothing 1027    1 
2 2016-05-26 15:00:00 computers 1821    1 
3 2016-05-26 15:00:00 computers 2139    1 
4 2016-05-26 15:00:00 electronics  253    1 

for col in adClicksPerTime: 
    print(col) 
    print(type(adClicksPerTime[col][1])) 


timestamp 
<class 'pandas.tslib.Timestamp'> 
adCategory 
<class 'str'> 
userId 
<class 'numpy.int64'> 
totalAdClicks 
<class 'numpy.int64'> 

나는 숫자 코드

adClicksPerTime.adCategory = pd.Categorical.from_array(adClicksPerTime.adCategory)  

adClicksPerTime.head(n=5) 
Out[54]: 
      timestamp adCategory userId totalAdClicks 
0 2016-05-26 15:00:00 automotive  355    1 
1 2016-05-26 15:00:00  clothing 1027    1 
2 2016-05-26 15:00:00 computers 1821    1 
3 2016-05-26 15:00:00 computers 2139    1 
4 2016-05-26 15:00:00 electronics  253    1 

for col in adClicksPerTime: 
    print(col) 
    print(type(adClicksPerTime[col][1])) 


timestamp 
<class 'pandas.tslib.Timestamp'> 
adCategory 
<class 'str'> 
userId 
<class 'numpy.int64'> 
totalAdClicks 
<class 'numpy.int64'> 
을 할당 할 범주 유형과 후 내 문자열을 변환하려고

ValueError: could not convert string to float: 'automotive' 

오류를 얻을

이 str 필드에 kmeans를 적용하려면 어떻게해야합니까?

+0

k-means는 ** 연속 ** 변수에 대해서만 설계되었습니다. 이런 종류의 데이터에는 사용하지 마십시오! –

답변

1

인형 가져 오기 인형으로 범주가 변경됩니다.

dummies = pd.get_dummies(adClicksPerTime[adCategory]) 
del dummies['automotive'] 
print dummies.columns 

그런 adClicksPerTime dataFrame이 DataFrame 병합, 마지막으로 Kmeans을 적용합니다.

adClicksPerTime.info() 당신에게 dtype을 줄 것입니다.

관련 문제