Почему возникают пропущенные значения?

Конструирование признаков для машинного обучения в Python

Robert O'Callaghan

Director of Data Science, Ordergroove

Причины появления пропусков в данных

  • Данные собраны некорректно
  • Ошибки сбора и обработки данных
  • Данные намеренно исключены
  • Пропуски могут возникать в результате преобразований данных
Конструирование признаков для машинного обучения в Python

Почему это важно?

  • Некоторые модели не работают с пропущенными данными (Null/NaN)
  • Пропуски могут указывать на более серьёзные проблемы с данными
  • Пропущенные значения могут быть полезным признаком
Конструирование признаков для машинного обучения в Python

Обнаружение пропущенных значений

print(df.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 999 entries, 0 to 998
Data columns (total 12 columns):
 #   Column                      Non-Null Count  Dtype  
 --  ------                      --------------  -----  
 0   SurveyDate                  999 non-null    object 
...  ...                         ...             ...
 8   StackOverflowJobsRecommend  487 non-null    float64
 9   VersionControl              999 non-null    object 
 10  Gender                      693 non-null    object 
 11  RawSalary                   665 non-null    object 
dtypes: float64(2), int64(2), object(8)
memory usage: 93.7+ KB
Конструирование признаков для машинного обучения в Python

Поиск пропущенных значений

print(df.isnull())
   StackOverflowJobsRecommend  VersionControl  ... \ 
0                        True           False  ...
1                       False           False  ...
2                       False           False  ...
3                        True           False  ...
4                       False           False  ...

   Gender  RawSalary
0   False       True
1   False      False
2    True       True
3   False      False
4   False      False
Конструирование признаков для машинного обучения в Python

Поиск пропущенных значений

print(df['StackOverflowJobsRecommend'].isnull().sum())
512
Конструирование признаков для машинного обучения в Python

Поиск непропущенных значений

print(df.notnull())
   StackOverflowJobsRecommend  VersionControl  ... \
0                       False            True  ...
1                        True            True  ...
2                        True            True  ...
3                       False            True  ...
4                        True            True  ...

   Gender  RawSalary
0    True      False
1    True       True
2   False      False
3    True       True
4    True       True
Конструирование признаков для машинного обучения в Python

Найдите пропущенные значения!

Конструирование признаков для машинного обучения в Python

Preparing Video For Download...