Нет определенного правила для работы с отсутствующими данными.Однако вот некоторые вещи, которые вы можете рассмотреть:
1.Если данные для столбца имеют пропущенные значения более 70%, вы можете удалить этот столбец.
2.Если распределение данных столбца симметрично по своей природе, вы можете рассмотреть возможность замены отсутствующих значений на среднее:
test = pd.DataFrame({'A': [1, 2, np.nan, 3, 4, 7, 11], 'B': [1, 4, 5, 7, 12, 45, 6], 'Group':['c', 'd', 'd', 'c', 'd', 'c', 'd']})
test
A B Group
0 1.0 1 c
1 2.0 4 d
2 NaN 5 d
3 3.0 7 c
4 4.0 12 d
5 7.0 45 c
6 11.0 6 d
test['A'].fillna(test['A'].mean(), inplace=True)
test
A B Group
0 1.000000 1 c
1 2.000000 4 d
2 4.666667 5 d
3 3.000000 7 c
4 4.000000 12 d
5 7.000000 45 c
6 11.000000 6 d
ИЛИ вы можете сгруппировать данные и использовать сгруппированное среднее:
test['A'].fillna(test.groupby('Group')['A'].transform('mean'), inplace=True)
test
A B Group
0 1.000000 1 c
1 2.000000 4 d
2 5.666667 5 d
3 3.000000 7 c
4 4.000000 12 d
5 7.000000 45 c
6 11.000000 6 d
3.Если данные для столбца искажены, вы можете рассмотреть возможность использования медианы для заполнения пропущенных значений.(Замените «среднее» на «медиана» в приведенной выше команде).
4.В качестве альтернативы вы можете также рассмотреть неконтролируемый подход, такой как кластеризация.Здесь, когда ваши данные кластеризованы, вы можете использовать значение режима или среднее значение кластера и соответственно заменить отсутствующие данные.
Надеюсь, это поможет.