Не удалось преобразовать строку в число с плавающей запятой (Pandas) - PullRequest
0 голосов
/ 26 мая 2020

Я хотел бы читать строки данных из файла .csv, и всякий раз, когда я запускаю свой код, появляется эта ошибка. Понятия не имею, как решить эту проблему. Я просмотрел несколько похожих сообщений, но все еще не могу решить.

Вот мой код:

def getThreshold(dataSet, Attributes, isNumeric):
    '''
        Calculates median threshold from train dataset
    '''
    thresholds = []
    for x in Attributes:
        indx = Attributes.index(x)
        numeric = isNumeric[indx]
        if numeric:
            listAtt = []
            for row in dataSet:
                listAtt.append(float(row[indx]))     
            # calculate median a numeric attribute column
            median = statistics.median(listAtt)
            thresholds.append(median)
    return thresholds

Вот мои образцы данных (без кавычек)

41,management,single,secondary,no,764,no,no,cellular,12,jun,230,2,-1,0,unknown,no
39,blue-collar,married,secondary,no,49,yes,no,cellular,14,may,566,1,370,2,failure,no
60,retired,married,primary,no,0,no,no,telephone,30,jul,130,3,-1,0,unknown,no
31,entrepreneur,single,tertiary,no,247,yes,yes,unknown,2,jun,273,1,-1,0,unknown,no

Проблема обнаружена в первом столбце, который представляет собой возраст, обозначенный как строка. Проблема в файле или коде csv?

1 Ответ

0 голосов
/ 26 мая 2020

Преобразование переменных в число с плавающей запятой может вызвать ValueError, если это невозможно. Изменил свой код, чтобы проверить это.

def getThreshold(dataSet, Attributes, isNumeric):
    '''
        Calculates median threshold from train dataset
    '''
    thresholds = []
    for x in Attributes:
        indx = Attributes.index(x)
        numeric = isNumeric[indx]
        if numeric:
            listAtt = []
            for row in dataSet:
                value = row[indx]
                # Try to convert value to float, if it fails then it keeps the original type
                try:
                    value = float(value)
                except ValueError:
                    pass
                listAtt.append(value)
            # calculate median a numeric attribute column
            median = statistics.median(listAtt)
            thresholds.append(median)
    return thresholds

В качестве примечания: все переменные должны начинаться с нижнего регистра. Только определения классов должны начинаться с верхнего регистра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...