mode () не работает в scipy / numpy - PullRequest
0 голосов
/ 01 мая 2018

Я запускаю Python 3.6 в Windows 10.

Я использую данные поезда, найденные здесь: https://datahack.analyticsvidhya.com/contest/practice-problem-loan-prediction-iii/

Я пытаюсь вычислить режим столбца. Мой код:

from scipy.stats import mode
import pandas as pd

data = pd.read_csv('Loan3_train.csv')
mode(data['Gender'])[0]

This returns a warning and an exception:

C:\ProgramData\Anaconda3\lib\site-packages\scipy\stats\stats.py:253: RuntimeWarning: The input array could not be properly checked for nan values. nan values will be ignored.
  "values. nan values will be ignored.", RuntimeWarning)

TypeError: '>' not supported between instances of 'str' and 'float'

Не могли бы вы помочь мне понять эти сообщения и адресовать их?

Ваш совет будет оценен.

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Из-за ошибки некоторые данные не являются числовыми. Там также могут быть нулевые значения.

Вам нужно найти примеры нечисловых данных и обработать их.

Вы можете использовать df.applymap(np.isreal), чтобы найти проблемы. Когда у вас есть исходящие строки, вам нужно продумать карту, чтобы применить их, чтобы сделать их числовыми, если это возможно.

В качестве альтернативы, если вы обнаружите, что у вас есть данные типа «3+» или аналогичные, вы можете обработать их astype('category'), чтобы найти режим, если у вас нет нулевых значений.

0 голосов
/ 01 мая 2018

Это ошибка несоответствия типов данных! Режим ожидает, что столбец будет с плавающей точкой, а то, что вы передаете - String. Используйте astype для преобразования Float в str как data['Gender'] = data['Gender'].astype(float)

...