У меня есть DataFrame с именем data
с некоторыми столбцами. Один из них - Married
, а другой - Gender
. Обе переменные являются категориальными.
>>> print(data[['Gender', 'Married']].dtypes)
Gender category
Married category
dtype: object
Married
не содержит NaN
значений, но Gender
содержит 12 NaN
значений, , которые я хочу вычислить .
>>> print(data['Gender'].isna().sum())
12
Я быстро проанализировал, что если у вас есть Married='Yes'
, то у вас гораздо больше шансов на Gender='Male'
. Поэтому я хочу вменять значения Gender
таким образом:
Married='Yes' -> Gender='Male'
Married='No' -> Gender='Female'
Итак, я создал словарь:
dictionary = {'Yes': 'Male', 'No': 'Female'}
Затем я написал простой код, основанный на fillna()
:
data['Gender'].fillna(data['Married'].map(dictionary), inplace=True)
И это сработало ... совершенно иначе, чем ожидалось. Это изменило весь столбец Gender
! Теперь каждая запись основана на столбце Married
. Посмотрите на эти кросс-таблицы:
До заполнения () :
Married No Yes
Gender
Female 80 31
Male 129 352
После заполнения () :
Married No Yes
Gender
Female 212 0
Male 0 392
Что можно сделать, чтобы заполнить значения NaN Gender
на основе столбца Married
?