HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>При работе с данными часто возникает необходимость найти элементы по определенному условию. С точки зрения поиска ошибок в данных критерии поиска могут быть разными, например:</p>
1 <p>При работе с данными часто возникает необходимость найти элементы по определенному условию. С точки зрения поиска ошибок в данных критерии поиска могут быть разными, например:</p>
2 <ul><li>Отрицательные значения в графе "Количество продаж"</li>
2 <ul><li>Отрицательные значения в графе "Количество продаж"</li>
3 <li>Буквы вместо цифр в графе "Номер телефона"</li>
3 <li>Буквы вместо цифр в графе "Номер телефона"</li>
4 <li>Нереалистично большие числа в графе "Сумма сделки"</li>
4 <li>Нереалистично большие числа в графе "Сумма сделки"</li>
5 </ul><p>В стандартном Python искать и фильтровать значения можно с помощью функции filter(). В Numpy есть схожая функциональность, которую мы рассмотрим в этом уроке. Вы узнаете, как получить элементы по заданному условию при работе с массивами numpy.ndarray.</p>
5 </ul><p>В стандартном Python искать и фильтровать значения можно с помощью функции filter(). В Numpy есть схожая функциональность, которую мы рассмотрим в этом уроке. Вы узнаете, как получить элементы по заданному условию при работе с массивами numpy.ndarray.</p>
6 <h2>Как создать булеву маску</h2>
6 <h2>Как создать булеву маску</h2>
7 <p>Для фильтрации значений массива numpy.ndarray по определенному условию используют<strong>булевы маски</strong>- массивы значений True и False. Каждый элемент проходит фильтрацию через булеву маску и распределяется в зависимости от значения маски:</p>
7 <p>Для фильтрации значений массива numpy.ndarray по определенному условию используют<strong>булевы маски</strong>- массивы значений True и False. Каждый элемент проходит фильтрацию через булеву маску и распределяется в зависимости от значения маски:</p>
8 <ul><li>Если на той же позиции в маске стоит значение True, элемент добавляется в итоговый массив</li>
8 <ul><li>Если на той же позиции в маске стоит значение True, элемент добавляется в итоговый массив</li>
9 <li>Если на позиции стоит значение False, то элемент не будет включен в итоговый массив</li>
9 <li>Если на позиции стоит значение False, то элемент не будет включен в итоговый массив</li>
10 </ul><p>Существует три способа работы с булевой маской:</p>
10 </ul><p>Существует три способа работы с булевой маской:</p>
11 <ul><li>Создать массив значений True и False вручную</li>
11 <ul><li>Создать массив значений True и False вручную</li>
12 <li>Использовать операторы сравнения над элементами исходного массива</li>
12 <li>Использовать операторы сравнения над элементами исходного массива</li>
13 <li>Применить логическое отрицание к текущей маске - поменять True на False и наоборот</li>
13 <li>Применить логическое отрицание к текущей маске - поменять True на False и наоборот</li>
14 </ul><p>Так все три способа выглядят в коде:</p>
14 </ul><p>Так все три способа выглядят в коде:</p>
15 <p>Первый способ на практике встречается редко, потому что на ручное создание маски уходит слишком много времени, особенно при большом размере массива:</p>
15 <p>Первый способ на практике встречается редко, потому что на ручное создание маски уходит слишком много времени, особенно при большом размере массива:</p>
16 <h2>Как применять маску</h2>
16 <h2>Как применять маску</h2>
17 <p>Чтобы применить булеву маску к исходному массиву, достаточно подставить ее в качестве индекса:</p>
17 <p>Чтобы применить булеву маску к исходному массиву, достаточно подставить ее в качестве индекса:</p>
18 <p>Как мы говорили выше, в Python реализована функция filter(), которая применяется для итеративной фильтрации значений списка по условию:</p>
18 <p>Как мы говорили выше, в Python реализована функция filter(), которая применяется для итеративной фильтрации значений списка по условию:</p>
19 <p>Для итеративной фильтрации элементов массива numpy.ndarray используется другой способ - метод numpy.fromiter():</p>
19 <p>Для итеративной фильтрации элементов массива numpy.ndarray используется другой способ - метод numpy.fromiter():</p>
20 <p>На практике часто требуется не только убирать значения из исходного массива, но и заменять их. Для этого используется метод numpy.where():</p>
20 <p>На практике часто требуется не только убирать значения из исходного массива, но и заменять их. Для этого используется метод numpy.where():</p>
21 <p>Если для фильтрации мы используем составное условие, лучше инициализировать маску отдельно. Это упрощает поддержку и делает код более читабельным:</p>
21 <p>Если для фильтрации мы используем составное условие, лучше инициализировать маску отдельно. Это упрощает поддержку и делает код более читабельным:</p>
22 <p>В реальных данных регулярно возникают пропущенные значения. Это может происходить из-за человеческого фактора, сбоя в работе сервисов или ошибки при записи в базу данных. Для таких случаев в Numpy существует отдельный тип данных numpy.nan (not a number):</p>
22 <p>В реальных данных регулярно возникают пропущенные значения. Это может происходить из-за человеческого фактора, сбоя в работе сервисов или ошибки при записи в базу данных. Для таких случаев в Numpy существует отдельный тип данных numpy.nan (not a number):</p>
23 <p>Для корректной работы программ необходимо обнаруживать пропуски, чистить данные от них или заменять на значение по умолчанию.</p>
23 <p>Для корректной работы программ необходимо обнаруживать пропуски, чистить данные от них или заменять на значение по умолчанию.</p>
24 <p>Рассмотрим на примере. Сначала нужно обнаружить пропуски:</p>
24 <p>Рассмотрим на примере. Сначала нужно обнаружить пропуски:</p>
25 <p>Затем чистим данные от пропусков:</p>
25 <p>Затем чистим данные от пропусков:</p>
26 <p>Теперь заменяем пропуски на некоторое значение:</p>
26 <p>Теперь заменяем пропуски на некоторое значение:</p>
27 <h2>Как применять маску с двумерными массивами</h2>
27 <h2>Как применять маску с двумерными массивами</h2>
28 <p>Выше мы рассмотрели фильтрацию значений на примере одномерного массива. Те же принципы применимы и в работе с двумерными массивами. Рассмотрим пример задачи - подготовим сырые данные продаж магазина ноутбуков по следующим шагам:</p>
28 <p>Выше мы рассмотрели фильтрацию значений на примере одномерного массива. Те же принципы применимы и в работе с двумерными массивами. Рассмотрим пример задачи - подготовим сырые данные продаж магазина ноутбуков по следующим шагам:</p>
29 <ul><li>Сначала обнаружим выбросы двух типов - значения выше 200 и отрицательные значения. Число 200 выбрано потому, что именно столько ноутбуков хранится на складе. Менеджер магазина знает, что в день не бывает более 200 продаж</li>
29 <ul><li>Сначала обнаружим выбросы двух типов - значения выше 200 и отрицательные значения. Число 200 выбрано потому, что именно столько ноутбуков хранится на складе. Менеджер магазина знает, что в день не бывает более 200 продаж</li>
30 <li>Затем заменим выбросы и пропуски на среднее значение продаж</li>
30 <li>Затем заменим выбросы и пропуски на среднее значение продаж</li>
31 </ul><p>Мы проводим эти операции, чтобы подготовить сырые данные к более глубокому анализу с применением методов статистики и машинного обучения:</p>
31 </ul><p>Мы проводим эти операции, чтобы подготовить сырые данные к более глубокому анализу с применением методов статистики и машинного обучения:</p>
32 <p>Чтобы отфильтровать значения, нужно создать маски:</p>
32 <p>Чтобы отфильтровать значения, нужно создать маски:</p>
33 <p>Чтобы найти средние значения, нужно оставить только стандартные значения продаж. Сделать это можно маской, объединяющей логические отрицания сформированных масок:</p>
33 <p>Чтобы найти средние значения, нужно оставить только стандартные значения продаж. Сделать это можно маской, объединяющей логические отрицания сформированных масок:</p>
34 <p>Далее остается только заменить нестандартные значения на величину среднего:</p>
34 <p>Далее остается только заменить нестандартные значения на величину среднего:</p>
35 <h2>Выводы</h2>
35 <h2>Выводы</h2>
36 <p>В этом уроке мы разобрали методы поиска и отбора значений по определенному условию, которые часто применяются при работе с данными. Мы узнали, как искать элементы, неудовлетворяющие некоторому условию, а также отсутствующие элементы и пропуски. Это самые частые случаи при работе с реальными данными, поэтому важно знать, как с ним работать.</p>
36 <p>В этом уроке мы разобрали методы поиска и отбора значений по определенному условию, которые часто применяются при работе с данными. Мы узнали, как искать элементы, неудовлетворяющие некоторому условию, а также отсутствующие элементы и пропуски. Это самые частые случаи при работе с реальными данными, поэтому важно знать, как с ним работать.</p>
37 <p>Все рассмотренные методы применимы к массивам различной размерности. На примере матрицы заказов мы продемонстрировали подходы по поиску и исправлению некорректных значений в данных.</p>
37 <p>Все рассмотренные методы применимы к массивам различной размерности. На примере матрицы заказов мы продемонстрировали подходы по поиску и исправлению некорректных значений в данных.</p>