Процент значений NaN для соответствующих значений в столбце

#python #pandas #percentage

#python #pandas #процент

Вопрос:

Новичок Python здесь

Есть два столбца; «Номер проекта» (проект 1, проект 2, проект 3 … и т.д.) и «Ожидаемая дата» (ДД / ММ / ГГГГ), и многие значения «Ожидаемой даты» равны NaN, и я хочу рассчитать процент NaN для каждого номера проекта, т. Е. Проекта1 имеет 29% NaN, проект 2 — 55%, проект 3 — 40% и т.д.

Я знаю, что для процентов отдельного столбца вы можете использовать приведенный ниже код, но я изо всех сил пытаюсь понять, как сделать это выше?

 df['Date Expected'].value_counts(normalize=True)*100
 

Заранее спасибо за любую помощь

Ответ №1:

Попробуйте:

 nan_pers = df.groupby("Project Number")["Date Expected"]
             .value_counts(normalize=True, dropna=False)
             .reset_index(level="Date Expected", name="NaN percentage") * 100

nan_pers = nan_pers[nan_pers["Date Expected"].isna()].drop(columns="Date Expected")
 

Переход dropna=False к value_counts указывает на то, что он также должен сообщать NaN о количестве сообщений. Затем у нас есть многоиндексный фрейм данных, и поэтому мы reset_index переходим на "Date Expected" уровень и переименовываем его значения (которые являются нормализованными значениями) в be NaN percentage , и он становится самостоятельным столбцом. Во второй строке мы отбрасываем значения, не являющиеся NaN значениями, вместе со столбцом, который имеет уникальные Date Expected значения, так что мы остаемся со структурой, подобной

                 NaN percentage
Project Number
Project 1       50.0
Project 2       20.0
Project 3       40.0