- Размер nan что это значит
- Содержание
- Свойства
- См. также
- Примечания
- Ссылки
- Полезное
- Смотреть что такое «NaN» в других словарях:
- Полезный NaN
- TL;DR Все дело в Date
- Not a Number — все о NaN / pd 5
- Присваивание значения NaN
- Фильтрование значений NaN
- Заполнение NaN
- NaN все еще может немного удивить
- Понимание Нан в Numpy и Pandas
- Понимание Нан в Numpy и Pandas
- Нан в Numpy
- 1. Математические операции на NaMy Array с NAN
- 2. Как игнорировать значения NAN при выполнении математических операций на Numpy Array
- 3. Проверка значений NAN
- 4. Приравнять два нанда
- Нан в Pandas DataFrame
- 1. Проверка на NAN ценности
- 2. Замена значения NAN
- 3. Строки падения, содержащие значения NAN
- Заключение
Размер nan что это значит
NaN (англ. Not-a-Number ) — одно из особых состояний числа с плавающей запятой. В соответствии с IEEE 754, такое состояние задаётся через установку показателя степени в зарезервированное значение. Используется во многих математических библиотеках и математических сопроцессорах. Данное состояние может возникнуть в различных случаях, например, когда предыдущая математическая операция завершилась с неопределённым результатом, или если в ячейку памяти попало не удовлетворяющее условиям число.
К операциям, приводящим к появлению NaN в качестве ответа, относятся:
- все математические операции, содержащие NaN в качестве одного из операндов;
- деление ноля на ноль;
- деление бесконечности на бесконечность;
- умножение ноля на бесконечность;
- сложение бесконечности с бесконечностью противоположного знака;
- вычисление квадратного корня отрицательного числа [1] ;
- логарифмирование отрицательного числа.
ball | mug | pen | |
---|---|---|---|
blue | 6.0 | NaN | 6.0 |
green | NaN | NaN | NaN |
red | 2.0 | NaN | 5.0 |
Таким образом чтобы избежать удаления целых строк или колонок нужно использовать параметр how , присвоив ему значение all . Это сообщит функции, чтобы она удаляла только строки или колонки, где все элементы равны NaN .
ball | mug | pen | |
---|---|---|---|
blue | 6.0 | NaN | 6.0 |
red | 2.0 | NaN | 5.0 |
Заполнение NaN
Вместо того чтобы отфильтровывать значения NaN в структурах данных, рискуя удалить вместе с ними важные элементы, можно заменять их на другие числа. Для этих целей подойдет fillna() . Она принимает один аргумент — значение, которым нужно заменить NaN .
ball | mug | pen | |
---|---|---|---|
blue | 6.0 | 0.0 | 6.0 |
green | 0.0 | 0.0 | 0.0 |
red | 2.0 | 0.0 | 5.0 |
Или же NaN можно заменить на разные значения в зависимости от колонки, указывая их и соответствующие значения.
Источник
NaN все еще может немного удивить
Сначала, я подумал, что это очередной вопрос из тех, которые могут задаваться на собеседовании. Наверное, если как следует пораскинуть мозгами, то можно догадаться до того, каким будет результат. Откинувшись на спинку кресла, начал размышлять, включать логику, вспоминать что-нибудь, на что можно опереться в рассуждениях. Но тщетно! Вдруг стало совершенно очевидно, что найти ответ не удается. Но почему? В чем нужно разбираться, чтобы он был найден? В математике? В языке программирования?
Ответ должен быть NaN. Но почему я не уверен в этом? Всю дорогу была уверенность в том, что любые выражения, содержащие NaN, вернут NaN. Ну разве что только если поделить NaN на ноль — в этом случае будет вызвано исключение ZeroDivisionError. Сто процентов NaN!
Ввожу выражение в ячейку блокнота:
В самом деле? Постойте:
То есть, по какой-то причине, единица в степени NaN — это единица, а вот ноль и все остальные числа в степени NaN — это NaN. Где логика? В чем дело?
Так, давайте еще раз:
Может быть я просто из-за отсутствия какой-то практической надобности в глубоких познаниях о NaN, просто о чем-то не подозревал? А может я знал, но забыл? А может еще хуже — я не знал и забыл?
Заходим на Википедию. Там данный вопрос тоже обозначен как проблема, но почему все именно так устроено, никак не объясняется. Зато узнал что:
Хотя, в то же время:
Что, согласитесь, тоже немного странно.
Ладно, с Википедии отправляемся в C99 на 182 страницу и наконец-то получаем логическое объяснение, почему pow(x, 0) возвращает 1 для любых x, даже для x равного NaN:
Если функция возводится в степень
и при этом
стремится к 0, то в результате получится 1, вне зависимости от того, какое значение имеет
.
А если результат не зависит от числового значения функции , то 1 — является подходящим результатом, даже для NaN. Однако это по-прежнему не объясняет, почему 1 в степени NaN равна 1.
Отыскиваем еще один C99 и на 461 странице не видим никаких объяснений, просто требование того, что pow(+1, y) должно возвращать 1 для всех y, даже равных NaN. Все.
С другой стороны, объяснение, почему pow(NaN, 0)=1 является более предпочтительным, чем pow(NaN, 0)=NaN все-таки наталкивает на мысль о том, что NaN не стоит воспринимать буквально, как Not-a-Number. Допустим, в результате каких- то вычислений мы получили число, превышающее размер памяти, выделенный под данный тип чисел, например:
В результате мы получили inf, что именно это за число мы не знаем, но все же это какое-то число. Затем мы снова что-то вычислили и снова получили слишком большое число:
Разность a и b вернет NaN:
Единственная причина, по которой мы можем считать c не числом, заключается в том, что мы использовали недостаточно точные вычисления. Однако, в c под NaN все же скрывается какое-то значение. О том, что это за значение, мы не знаем. Но все же это число, а раз это число, то нет ничего удивительного в том, что pow(1, NaN)=1.
Почему же тогда pow(0, NaN)=NaN? Дело в том, что если возвести 0 в любую степень, то мы действительно получим ноль. Кроме одного единственного случая — когда степень равна 0:
Из-за чего в выражении pow(0, NaN) появляется неопределенность с конкретным значением NaN. Конечно, вероятность того, что под NaN может скрываться 0 — исчезающе мала и можно было бы принять, что pow(0, NaN)=0. Но все же лучше перестраховаться, мало ли к чему это может привести. Возможно, так и рассуждали, когда создавались стандарты.
Даже не знаю, что еще сказать… если вы заранее знали ответ, то скорее всего вам можно позавидовать, ведь сферы, где могут пригодиться такие познания, наверняка, переполнены интересными задачами. А может и наоборот. Напишите об этом в комментариях.
P.S. Поскольку NaN относится к числам с плавающей точкой, оно может быть ключом словаря:
Имеет ли смысл использовать такое на практике? Думаю, что лучше не стоит.
Источник
Понимание Нан в Numpy и Pandas
Нан короткая для не числа. Он используется для представления записей, которые не определены. Он также используется для представления отсутствующих значений в наборе данных.
Автор: Pankaj Kumar
Дата записи
Понимание Нан в Numpy и Pandas
Нан короткая для Не число Отказ Он используется для представления записей, которые не определены. Он также используется для представления отсутствующих значений в наборе данных.
Концепция Нэна существовала даже до того, как был создан Python. Стандарт IEEE для арифметики с плавучей точкой (IEEE 754) ввел НАН в 1985 году.
NAN – это специальное значение с плавающей точкой, которое не может быть преобразовано в любой другой тип, чем поплавок.
В этом уроке мы рассмотрим, как NAN работает в Pands и Numpy.
Нан в Numpy
Давайте посмотрим, как работает NAN под Numpy. Для наблюдения за свойствами NAN давайте создадим NAN-массив с значениями NAN.
1. Математические операции на NaMy Array с NAN
Давайте попробуем вызвать некоторые основные функции на Numpy Array.
Давайте попробуйте найти максимум от массива:
К счастью, Numpy предлагает методы, которые игнорируют значения NAN при выполнении математических операций.
2. Как игнорировать значения NAN при выполнении математических операций на Numpy Array
Numpy предлагает вам методы, такие как NP.NANSUM () и NP.NANMAX (), чтобы рассчитать сумму и MAX после игнорирования значений NAN в массиве.
Если у вас есть автозаполнение в своей IDE, вы увидите следующий список опций во время работы с NP.NAN:
3. Проверка значений NAN
Чтобы проверить значения NAN в NAMPY MARY, вы можете использовать метод NP.ISNAN ().
Это выводит логическую маску размера, которая из исходного массива.
Выходной массив имеет True для индексов, которые являются Nans в исходном массиве и ложь для остальных.
4. Приравнять два нанда
Две назы, равные друг другу?
Это может быть запутанным вопросом. Давайте попробуем ответить на него, запустив код Python.
Эти два утверждения инициализируют две переменные, A и B с NAN. Попробуем приравнивать два.
В Python у нас также есть это оператор. Давайте попробуем использовать это, чтобы сравнить две переменные.
Причина этого является то, что сравнивает значения как операндов, так и проверки на равенство стоимости. это оператор С другой стороны, проверяет ли оба операнды к одному и тому же объекту или нет.
На самом деле, вы можете распечатать идентификаторы как A и B и увидеть, что они относятся к одному и тому же объекту.
Нан в Pandas DataFrame
Pandas DataFrames – это обычный способ импорта данных в Python. Давайте посмотрим, как мы можем иметь дело с NAN ценностями в PandaS DataFrame.
Давайте начнем с создания DataFrame.
1. Проверка на NAN ценности
Вы можете проверить значения NAN, используя Isnull () Метод Отказ Выходной вывод будет логической маской с размерами, что из исходного DataFrame.
2. Замена значения NAN
Существует несколько способов заменить значения NAN в DataFrame PandaS. Наиболее распространенный способ сделать это является использованием .fillna () метод.
Этот метод требует, чтобы вы укажете значение, чтобы заменить назы.
В качестве альтернативы вы также можете упомянуть значения значений столбца. Это означает, что все Nans под один столбец будут заменены с тем же значением.
Вы также можете использовать интерполяцию для заполнения пропущенных значений в кадре данных. Интерполяция – это слегка продвинутый метод по сравнению с .Fillna ().
Интерполяция – это техника, с которой вы можете оценить неизвестные точки данных между двумя известными точками данных.
3. Строки падения, содержащие значения NAN
Чтобы бросить ряды или столбцы назами, вы можете использовать .DROPNA () метод.
Чтобы бросить строки с помощью Nans:
Чтобы опустить колонны с помощью Nans:
Заключение
Этот учебник был о назах в Python. Мы высоко сосредоточены на том, чтобы иметь дело с называющимисями в Nanpy и Pandas. Надеюсь, вы веселились с нами.
Источник