0

我正在尝试解决 kaggle 泰坦尼克号灾难问题,特别是使用众数/平均值/中位数来输入缺失值。这是我的数据集的一个峰值

   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  

我正在尝试获取“Embarked”列的模式并输入“Object”。我正在使用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()
4

2 回答 2

2

这是因为您在df.Embarked. 确保所有项目都是同一类型(或可以比较的类型)。

或者使用Series.mode(),它可以处理混合类型。

于 2016-03-26T20:12:32.143 回答
2
modeEmbarked = mode(df.Embarked.dropna())

使用这个代替

modeEmbarked = mode(df.Embarked)

解决了这个问题。

于 2016-03-29T13:42:48.397 回答