Как я могу считать специальный символ как '?' для каждого столбца в моем DataFrame в Pandas? - PullRequest
0 голосов
/ 30 апреля 2020

Это кажется легкой и простой задачей, однако я ищу базовый c и исчерпывающий ответ, чтобы подсчитать мои пропущенные значения в данных, которые они закодировали следующим образом '?' персонаж.

Мои данные: enter image description here

Я хочу, чтобы мой ответ был таким:

drive_wheels 0
engine_location 0
engine_type 0
num_of_cylinders 0
fuel_system 0
bore 4
stroke 4

Я пробовал это:

 for i in data.columns:
           counter = 0
           if data[i].dtype == '?':
                counter += 1
           else:
                counter = 1
 print(i, ' ', str(sum(counter)))

Буду признателен, если кто-нибудь сможет мне помочь. Спасибо!

Ответы [ 2 ]

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

Apply функция для каждого столбца, где ser ie equal ? и сумма True результатов

data.apply(lambda serie: serie.eq('?').sum(), axis=0)

Если по какой-либо причине содержимое не строго равно ? (например, оно содержит дополнительные пробелы), используйте метод contains:

data.apply(lambda serie: serie.str.contains('\?').sum(), axis=0)
0 голосов
/ 01 мая 2020

Вы включили переменную counter в l oop, что означает, что при каждом l oop вы сбрасываете его на 0. Все, что вам нужно сделать, это переместить его за пределы l oop, как это;

counter = 0
for i in data.columns:
    if data[i].dtype == '?'
        counter += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...