2016-03-26 11 views
-1

私はkaggle titanicの災害問題を解決しようとしています。ここに私のデータのピークは、私が「着手」の列と型「オブジェクト」のモードを取得しようとしていますPython 3. +、Scipy Stats Mode関数は、型エラーの順序付け不可能な型を返します。str()> float()

Parch   Ticket  Fare Cabin Embarked 
0  0   A/5 21171 7.2500 NaN  S 
1  0   PC 17599 71.2833 C85  C 
2  0 STON/O2. 3101282 7.9250 NaN  S 
3  0   113803 53.1000 C123  S 
4  0   373450 8.0500 NaN  S 

を設定しています。私はpython3を使用しています。ここでは、コードスニペットは次のとおりです。ここで

modeEmbarked = mode(df.Embarked) 

はエラー・スニペットです:

<ipython-input-39-1b4237d65022> in clean(df) 
    18 
    19  # Cleaning Embarked column 
---> 20  modeEmbarked = mode(df.Embarked) 
    21 #  print(mode(df.Embarked)) 
    22 #  le_embarked = preprocessing.LabelEncoder() 

/home/singhaniya/anaconda3/lib/python3.5/site-packages/scipy/stats/stats.py in mode(a, axis) 
    635  return np.array([]), np.array([]) 
    636 
--> 637  scores = np.unique(np.ravel(a))  # get ALL unique values 
    638  testshape = list(a.shape) 
    639  testshape[axis] = 1 

/home/singhaniya/anaconda3/lib/python3.5/site-packages/numpy/lib/arraysetops.py in unique(ar, return_index, return_inverse, return_counts) 
    196   aux = ar[perm] 
    197  else: 
--> 198   ar.sort() 
    199   aux = ar 
    200  flag = np.concatenate(([True], aux[1:] != aux[:-1])) 

TypeError: unorderable types: str() > float() 

答えて

2
modeEmbarked = mode(df.Embarked.dropna()) 

は、問題を解決します。

1

あなたはdf.Embarkedで種類を混合しているためです。すべてのアイテムが同じタイプ(または比較可能なタイプ)であることを確認してください。

または、複合型を処理できるSeries.mode()を使用してください。

modeEmbarked = mode(df.Embarked) 

のこのinseteadを使用して

+0

はい! NANの値がありますが、私が作業しているチュートリアルでは、何も追加作業をせずに同じ結果が得られます! しかし、私がdropna()で実行すると同じことができます – aks

+1

@AnkitSinghaniya 'scipy.stats.mode()'は、少なくともscipyがインストールされているバージョンの混合型の配列のモードを計算することはできません私のコンピュータで。 pandas版の 'mode()'はそれを行うことができますが、私の編集を参照してください。 – Goyo

+0

あなたは混合値について指摘しています。私はNAN値が問題だと思う。 – aks

関連する問題