#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