Что выведет код Senior Выборка и фильтрация обновлено

Маска, отрицание и пропуски

Вопрос

Что выведет код? По строке на каждый print.

import pandas as pd
import numpy as np
df = pd.DataFrame({'x': [1, 6, np.nan, 8, 3]})
print(len(df[~(df['x'] > 5)]))
print(len(df[df['x'] <= 5]))
print(len(df[df['x'] != df['x']]))

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 3, 2, 1. Сравнения с NaN дают False.

Что выведет

3
2
1

Разбор

Сравнения с NaN дают False. ~(x > 5) превращает False для NaN в True, поэтому строк три: 1, NaN, 3. x <= 5 для NaN ложно, остаются две. x != x истинно только для NaN (NaN не равен себе), это старый трюк поиска пропусков, понятнее isna().

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме