Сообщить об ошибке.

Функция to_numeric() модуля pandas в Python

Преобразует аргумент в числовой тип

Синтаксис:

import pandas

pandas.to_numeric(arg, errors='raise', downcast=None, dtype_backend=no_default)

Параметры:

  • arg - аргумент для преобразования. Принимает скаляр, список list, кортеж tuple, 1-d array, или Series.

  • errors='raise - как обрабатывать ошибки преобразования:

    • Если 'raise', то недопустимый синтаксический анализ вызовет исключение.
    • Если 'coerce', то недопустимый синтаксический анализ будет установлен как NaN.
    • Если 'ignore', то неверный синтаксический анализ вернет входные данные.

  • downcast=None - Может быть ‘integer’, ‘signed', ‘unsigned' или 'float'. Если значение не равно None, и если данные были успешно преобразованы в числовой dtype (или если данные изначально были числовыми), то уменьшит результирующие данные до минимально возможного числового dtype в соответствии со следующими правилами:

    • 'integer' или 'signed': наименьший знаковый тип dtype (мин.: np.int8);
    • 'unsigned': наименьший беззнаковый тип dtype (мин.: np.uint8);
    • 'float': наименьший dtype с плавающей точкой (мин.: np.float32).

    Так как это поведение отличается от основного преобразования в числовые значения, то любые ошибки, возникшие во время понижения, будут обнаружены независимо от значения входных данных 'errors'.

    Кроме того, понижающая обработка будет выполняться только в том случае, если размер dtype результирующих данных строго больше, чем dtype, к которому они должны быть преобразованы, поэтому, если ни один из проверенных dtypes не удовлетворяет этой спецификации, то понижающая обработка данных выполняться не будет.

  • dtype_backend=no_default - внутренний тип данных, применяемый к результирующему DataFrame (все еще экспериментальный). Поведение выглядит следующим образом:

    • 'numpy_nullable': возвращает DataFrame с поддержкой null-dtype (по умолчанию).
    • 'pyarrow': возвращает DataFrame ArrowDtype с нулевым значением, поддерживаемый pyarrow.

Описание pandas.to_numeric()

Функция pandas.to_numeric() модуля pandas преобразует аргумент в числовой тип.

Тип возвращаемого значения по умолчанию - float64 или int64, в зависимости от предоставленных данных. Для получения других типов dtypes необходимо использовать аргумент downcast.

Обратите внимание, что при передаче действительно больших чисел может произойти потеря точности. Из-за внутренних ограничений numpy.ndarray(), если передаются числа меньше -9223372036854775808 (np.iinfo(np.int64).min) или больше 18446744073709551615 (np.iinfo(np.uint64).max), то весьма вероятно, что они будут преобразованы в число с плавающей запятой. Эти предупреждения применимы аналогично Series, т.к. он внутренне использует ndarray.

Примеры использования pandas.to_numeric()

Возьмем Series и преобразуем ее данные в различные числовые типы. Обратите внимание на поведение аргументов downcast

>>> import pandas as pd
>>> s = pd.Series(['1.0', '2', -3])
>>> pd.to_numeric(s)
# 0    1.0
# 1    2.0
# 2   -3.0
# dtype: float64

>>> pd.to_numeric(s, downcast='float')
# 0    1.0
# 1    2.0
# 2   -3.0
# dtype: float32

>>> pd.to_numeric(s, downcast='signed')
# 0    1
# 1    2
# 2   -3
# dtype: int8

Поведение аргумента errors

>>> s = pd.Series(['apple', '1.0', '2', -3])
>>> pd.to_numeric(s, errors='coerce')
# 0    NaN
# 1    1.0
# 2    2.0
# 3   -3.0
# dtype: float64

Поддерживается понижающее преобразование dtypes целых чисел с нулевым значением и плавающей запятой:

>>> s = pd.Series([1, 2, 3], dtype="Int64")
>>> pd.to_numeric(s, downcast="integer")
# 0    1
# 1    2
# 2    3
# dtype: Int8

>>> s = pd.Series([1.0, 2.1, 3.0], dtype="Float64")
>>> pd.to_numeric(s, downcast="float")
# 0    1.0
# 1    2.1
# 2    3.0
# dtype: Float32