Series
На этой странице представлен обзор всех публичных методов Series.
-
Series представляет один столбец в DataFrame Polars.
- Параметры:
-
-
namestr, default None -
Имя Series. Будет использоваться как имя столбца при использовании в DataFrame. Если не указано, имя задаётся пустой строкой.
-
valuesArrayLike, default None -
Одномерные данные в различных форматах. Поддерживаются: Sequence, Series, массив pyarrow и ndarray numpy.
-
dtypeDataType, default None -
Тип данных результирующей Series. Если задано
None(значение по умолчанию), тип данных выводится из входных данныхvalues. Стратегия вывода типа данных зависит от параметраstrict:- Если
strictустановлено в True (значение по умолчанию), выведенный тип данных соответствует первому ненулевому значению илиNull, если все значения равны null. - Если
strictустановлено в False, выведенный тип данных является супертипом значений илиObject, если супертип определить не удалось. ПРЕДУПРЕЖДЕНИЕ: Для определения супертипа требуется полный проход по значениям. - Если значения не переданы, результирующий тип данных —
Null.
- Если
-
strictbool, default True -
Вызывать ошибку, если какое-либо значение не соответствует в точности заданному или выведенному типу данных. Если задано
False, значения, не соответствующие типу данных, приводятся к этому типу или, если приведение невозможно, заменяются на null. -
nan_to_nullbool, default False -
Если для создания этой Series используется массив numpy, указывает, как обрабатывать значения np.nan. (Для данных, не являющихся данными numpy, этот параметр ничего не делает.)
-
Примеры
Создание Series с указанием имени и значений в позиционном порядке:
>>> s = pl.Series("a", [1, 2, 3]) >>> s shape: (3,) Series: 'a' [i64] [ 1 2 3 ]Обратите внимание, что тип данных автоматически выводится как polars Int64:
>>> s.dtype Int64
Создание Series с указанием конкретного типа данных:
>>> s2 = pl.Series("a", [1, 2, 3], dtype=pl.Float32) >>> s2 shape: (3,) Series: 'a' [f32] [ 1.0 2.0 3.0 ]Series можно создать, указав значения в качестве первого позиционного аргумента. Такой синтаксис считается антипаттерном, но может быть полезен в некоторых случаях. Все остальные аргументы необходимо указывать по ключевым словам.
>>> s3 = pl.Series([1, 2, 3]) >>> s3 shape: (3,) Series: '' [i64] [ 1 2 3 ]Методы:
class polars.Series(
name: str_ | ArrayLike | None = None,
values: ArrayLike | None = None,
dtype: PolarsDataType | None = None,
*,
strict: bool = True,
nan_to_null: bool = False,
) Вычислить абсолютные значения.
Переименовать Series.
Проверить, являются ли все значения в столбце
True.Проверить, является ли хотя бы одно из значений в столбце
True.Добавить Series к этой Series.
Приблизительное количество уникальных значений.
Вычислить значение арккосинуса для каждого элемента.
Вычислить значение гиперболического арккосинуса для каждого элемента.
Вычислить значение арксинуса для каждого элемента.
Вычислить значение гиперболического арксинуса для каждого элемента.
Вычислить значение арктангенса для каждого элемента.
Вычислить значение гиперболического арктангенса для каждого элемента.
Получить индекс максимального значения.
Получить индекс минимального значения.
Получить индексы, которые задают порядок сортировки этой Series.
Получить индексы, для которых значения булевой Series равны True.
Получить уникальные индексы в виде Series.
Заполнить пропущенные значения следующими ненулевыми значениями.
Выполнить агрегацию побитовых операций AND.
Подсчитать количество установленных битов.
Подсчитать количество неустановленных битов.
Подсчитать количество старших установленных битов до первого неустановленного бита.
Подсчитать количество старших неустановленных битов до первого установленного бита.
Выполнить агрегацию побитовых операций OR.
Подсчитать количество младших установленных битов до первого неустановленного бита.
Подсчитать количество младших неустановленных битов до первого установленного бита.
Выполнить агрегацию побитовых операций XOR.
Вернуть
kнаименьших элементов.Вернуть
kнаименьших элементов столбцаby.Преобразовать один тип данных в другой.
Вычислить кубический корень элементов.
Округлить вверх до ближайшего целого значения.
Получить длину каждого отдельного фрагмента.
Создать пустую копию текущей Series с количеством элементов от нуля до 'n'.
Заменить значения за пределами заданных границ соответствующими граничными значениями.
Создать копию этой Series.
Вычислить значение косинуса для каждого элемента.
Вычислить значение гиперболического косинуса для каждого элемента.
Вычислить значение котангенса для каждого элемента.
Вернуть количество ненулевых элементов в столбце.
Вернуть накопительное количество ненулевых значений в столбце.
Получить массив с накопительным максимумом, вычисленным для каждого элемента.
Получить массив с накопительным минимумом, вычисленным для каждого элемента.
Получить массив с накопительным произведением, вычисленным для каждого элемента.
Получить массив с накопительной суммой, вычисленной для каждого элемента.
Выполнить выражение в скользящем окне, которое на каждой итерации увеличивается на
1слот.Разбить непрерывные значения на дискретные категории.
Преобразовать радианы в градусы.
Краткая сводка статистических показателей Series.
Вычислить первую дискретную разность между сдвинутыми элементами.
Вычислить скалярное (внутреннее) произведение двух Series.
Удалить все значения NaN с плавающей точкой.
Удалить все значения null.
Вычислить энтропию.
Эквивалент метода для выражения оператора
series == other.Эквивалент метода для оператора равенства
series == other, гдеNone == None.Проверить, равна ли эта Series другой Series.
Вернуть приблизительный размер общей выделенной памяти (в куче) для Series.
Вычислить экспоненциально взвешенное скользящее среднее.
Вычислить экспоненциально взвешенное скользящее среднее на основе времени.
Вычислить экспоненциально взвешенное скользящее стандартное отклонение.
Вычислить экспоненциально взвешенную скользящую сумму.
Вычислить экспоненциально взвешенную скользящую сумму на основе времени.
Вычислить экспоненциально взвешенную скользящую дисперсию.
Вычислить экспоненту для каждого элемента.
Развернуть Series со списками.
Расширить память, выделенную для этой Series, значениями из другой Series.
Очень быстрый метод расширения Series на 'n' копий значения.
Заполнить значение NaN с плавающей точкой заданным значением.
Заполнить значения null указанным значением или способом.
Отфильтровать элементы с помощью булевой маски.
Получить первый элемент Series.
Округлить вниз до ближайшего целого значения.
Заполнить пропущенные значения последними ненулевыми значениями.
Извлечь значения по индексам.
Взять каждое n-е значение Series и вернуть результат в виде новой Series.
Эквивалент метода для выражения оператора
series >= other.Получить фрагменты этой Series в виде списка Series.
Эквивалент метода для выражения оператора
series > other.Проверить, содержит ли Series одно или несколько значений null.
Проверить, содержит ли Series одно или несколько значений null.
Вычислить хеш Series.
Получить первые
nэлементов.Разбить значения на интервалы и подсчитать количество попаданий в каждый из них.
Сгруппировать значения в список.
Получить индекс первого вхождения значения или
None, если оно не найдено.Интерполировать промежуточные значения.
Интерполировать промежуточные значения, используя координаты x из другого столбца.
Получить булеву маску значений, находящихся между заданными нижней и верхней границами.
Получить булеву маску значений, близких к соответствующим значениям другой Series.
Получить маску всех повторяющихся значений.
Проверить, пуста ли Series.
Вернуть булеву Series, указывающую, какие значения являются конечными.
Вернуть булеву маску, указывающую на первое вхождение каждого уникального значения.
Проверить, содержатся ли элементы этой Series в другой Series.
Вернуть булеву Series, указывающую, какие значения являются бесконечными.
Вернуть булеву маску, указывающую на последнее вхождение каждого уникального значения.
Вернуть булеву Series, указывающую, какие значения являются NaN.
Вернуть булеву Series, указывающую, какие значения не являются NaN.
Вернуть булеву Series, указывающую, какие значения не являются null.
Вернуть булеву Series, указывающую, какие значения являются null.
Проверить, отсортирована ли Series.
Получить маску всех уникальных значений.
Вернуть Series как скаляр или вернуть элемент с заданным индексом.
Вычислить эксцесс набора данных (по Фишеру или Пирсону).
Получить последний элемент Series.
Эквивалент метода для выражения оператора
series <= other.Вернуть количество элементов в Series.
Получить первые
nэлементов.Вычислить логарифм с заданным основанием.
Поэлементно вычислить десятичный логарифм входного массива.
Поэлементно вычислить натуральный логарифм суммы значения входного массива и единицы.
Вернуть нижнюю границу типа данных этой Series в виде Series из одного элемента.
Эквивалент метода для выражения оператора
series < other.Применить пользовательскую функцию (UDF) к элементам этой Series.
Получить максимальное значение этой Series.
Получить максимальное значение этой Series, упорядоченное по выражению.
Свести эту Series к среднему значению.
Получить медиану этой Series.
Получить минимальное значение этой Series.
Получить минимальное значение этой Series, упорядоченное по выражению.
Вычислить наиболее часто встречающееся значение или значения.
Получить количество фрагментов в этой Series.
Подсчитать количество уникальных значений в этой Series.
Получить максимальное значение, распространяя или сохраняя эффект встретившихся значений NaN.
Получить минимальное значение, распространяя или сохраняя эффект встретившихся значений NaN.
Эквивалент метода для выражения оператора
series != other.Эквивалент метода для оператора равенства
series != other, гдеNone == None.Создать новую Series, заполненную значениями по заданному индексу.
Инвертировать булеву Series.
Подсчитать количество null-значений в этой Series.
Вычислить процентное изменение между значениями.
Получить булеву маску локальных пиков максимума.
Получить булеву маску локальных пиков минимума.
Возвести в степень, заданную показателем.
Свести эту Series к значению произведения.
Разбить непрерывные значения на дискретные категории на основе их квантилей.
Получить значение квантиля этой Series.
Преобразовать градусы в радианы.
Присвоить данным ранги, корректно обрабатывая совпадения.
Создать единый фрагмент памяти для этой Series.
Интерпретировать базовые биты как целое число со знаком/без знака или число с плавающей точкой.
Переименовать эту Series.
Повторить элементы этой Series в соответствии с заданным выражением.
Заменить значения другими значениями того же типа данных.
Заменить все значения другими значениями.
Изменить форму этой Series, преобразовав её в плоскую Series или Series типа Array.
Вернуть Series в обратном порядке.
Сжать данные Series с помощью кодирования длин серий.
Получить уникальный целочисленный идентификатор для каждой серии одинаковых значений.
Вычислить скользящий эксцесс.
Вычислить пользовательскую функцию для скользящего окна.
Вычислить скользящий максимум для значений этого массива.
Вычислить скользящий максимум на основе другой серии.
Вычислить скользящее среднее для значений этого массива.
Вычислить скользящее среднее на основе другой серии.
Вычислить скользящую медиану.
Вычислить скользящую медиану на основе другой серии.
Вычислить скользящий минимум для значений этого массива.
Вычислить скользящий минимум на основе другой серии.
Вычислить скользящий квантиль.
Вычислить скользящий квантиль на основе другой серии.
Вычислить скользящий ранг.
Вычислить скользящий ранг на основе другого столбца.
Вычислить скользящую асимметрию.
Вычислить скользящее стандартное отклонение.
Вычислить скользящее стандартное отклонение на основе другой серии.
Вычислить скользящую сумму для значений этого массива.
Вычислить скользящую сумму на основе другой серии.
Вычислить скользящую дисперсию.
Вычислить скользящую дисперсию на основе другой серии.
Округлить исходные значения с плавающей точкой до
decimalsзнаков.Округлить до заданного количества значащих цифр.
Выбрать выборку из этой Series.
Задать значения в указанных индексах.
Найти индексы, в которые следует вставить элементы, чтобы сохранить порядок.
Задать значения, выбранные маской.
Пометить Series как «отсортированную».
Сдвинуть значения на заданное количество индексов.
Уменьшить размер числовых столбцов до минимально необходимого типа данных.
Уменьшить объём памяти, используемой Series.
Перемешать содержимое этой Series.
Поэлементно вычислить знак для числовых типов.
Поэлементно вычислить синус.
Поэлементно вычислить гиперболический синус.
Вычислить выборочную асимметрию набора данных.
Получить срез этой Series.
Отсортировать эту Series.
Выполнить SQL-запрос к Series.
Вычислить квадратный корень элементов.
Получить стандартное отклонение этой Series.
Свести эту Series к значению суммы.
Получить последние
nэлементов.Поэлементно вычислить тангенс.
Поэлементно вычислить гиперболический тангенс.
Вернуть базовый массив Arrow.
Получить фиктивные/индикаторные переменные.
Преобразовать эту Series в DataFrame.
Преобразовать Series в строковое представление, пригодное для создания объекта.
Преобразовать эту Series в массив Jax.
Преобразовать эту Series в список Python.
Преобразовать эту Series в массив NumPy ndarray.
Преобразовать эту Series в Series pandas.
Привести к физическому представлению логического типа данных.
Преобразовать эту Series в тензор PyTorch.
Вернуть
kнаибольших элементов.Вернуть
kнаибольших элементов столбцаby.Усечь числовые данные в сторону нуля до
decimalsдесятичных знаков.Получить уникальные элементы Series.
Вернуть количество уникальных значений в порядке их появления.
Вернуть верхнюю границу типа данных этой Series в виде Series из единиц.
Подсчитать количество вхождений уникальных значений.
Получить дисперсию этой Series.
Взять значения из этой Series или другой Series на основе заданной маски.
Атрибуты:
Получить тип данных этой Series.
Получить флаги, установленные для Series.
Получить имя этой Series.
Создать пространство имён для построения графиков.
Форма этой Series.
-
Вычислить абсолютные значения.
То же, что и
abs(series).Примеры
>>> s = pl.Series([1, -2, -3]) >>> s.abs() shape: (3,) Series: '' [i64] [ 1 2 3 ]
abs() → Series
-
Переименовать Series.
- Параметры:
-
- name
-
Новое имя.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.alias("b") shape: (3,) Series: 'b' [i64] [ 1 2 3 ]
alias( name: str_, ) → Series-
Вернуть, являются ли все значения в столбце
True.Работает только со столбцами типа данных
Boolean.- Параметры:
-
- ignore_nulls
-
- Если задано значение
True(по умолчанию), null-значения игнорируются. Если нет ни одного ненулевого значения, результатом будетTrue. - Если задано значение
False, для обработки null-значений используется логика Клини: если столбец содержит null-значения, но не содержит значенийFalse, результатом будетNone.
- Если задано значение
- Возвращает:
-
- bool или None
Примеры
>>> pl.Series([True, True]).all() True >>> pl.Series([False, True]).all() False >>> pl.Series([None, True]).all() True
Включите логику Клини, задав
ignore_nulls=False.>>> pl.Series([None, True]).all(ignore_nulls=False) # Returns None
all( *, ignore_nulls: bool = True, ) → bool | None-
Вернуть, является ли любое из значений в столбце
True.Работает только со столбцами типа данных
Boolean.- Параметры:
-
- ignore_nulls
-
- Если задано значение
True(по умолчанию), null-значения игнорируются. Если нет ни одного ненулевого значения, результатом будетFalse. - Если задано значение
False, для обработки null-значений используется логика Клини: если столбец содержит null-значения, но не содержит значенийTrue, результатом будетNone.
- Если задано значение
- Возвращает:
-
- bool или None
Примеры
>>> pl.Series([True, False]).any() True >>> pl.Series([False, False]).any() False >>> pl.Series([None, False]).any() False
Включите логику Клини, задав
ignore_nulls=False.>>> pl.Series([None, False]).any(ignore_nulls=False) # Returns None
any( *, ignore_nulls: bool = True, ) → bool | None-
Добавить Series к этой Series.
Результирующая Series будет состоять из нескольких фрагментов.
- Параметры:
-
- other
-
Добавляемая Series.
Предупреждение
Этот метод изменяет Series на месте. Series возвращается только для удобства.
См. также
Примеры
>>> a = pl.Series("a", [1, 2, 3]) >>> b = pl.Series("b", [4, 5]) >>> a.append(b) shape: (5,) Series: 'a' [i64] [ 1 2 3 4 5 ]Результирующая Series будет состоять из нескольких фрагментов.
>>> a.n_chunks() 2
append( other: Series, ) → Self-
Приблизительное количество уникальных значений.
Для оценки кардинальности используется алгоритм HyperLogLog++.
approx_n_unique() → PythonLiteral | None
-
Поэлементно вычислить арккосинус.
Примечания
Возвращаемое значение выражено в радианах. Чтобы преобразовать радианы в градусы, вызовите
.degrees().Примеры
>>> s = pl.Series("a", [1.0, 0.0, -1.0]) >>> s.arccos() shape: (3,) Series: 'a' [f64] [ 0.0 1.570796 3.141593 ]
arccos() → Series
-
Поэлементно вычислить гиперболический арккосинус.
Примеры
>>> s = pl.Series("a", [5.0, 1.0, 0.0, -1.0]) >>> s.arccosh() shape: (4,) Series: 'a' [f64] [ 2.292432 0.0 NaN NaN ]
arccosh() → Series
-
Поэлементно вычислить арксинус.
Примечания
Возвращаемое значение выражено в радианах. Чтобы преобразовать радианы в градусы, вызовите
.degrees().Примеры
>>> s = pl.Series("a", [1.0, 0.0, -1.0]) >>> s.arcsin() shape: (3,) Series: 'a' [f64] [ 1.570796 0.0 -1.570796 ]
arcsin() → Series
-
Поэлементно вычислить гиперболический арксинус.
Примеры
>>> s = pl.Series("a", [1.0, 0.0, -1.0]) >>> s.arcsinh() shape: (3,) Series: 'a' [f64] [ 0.881374 0.0 -0.881374 ]
arcsinh() → Series
-
Поэлементно вычислить арктангенс.
Примечания
Возвращаемое значение выражено в радианах. Чтобы преобразовать радианы в градусы, вызовите
.degrees().Примеры
>>> s = pl.Series("a", [1.0, 0.0, -1.0]) >>> s.arctan() shape: (3,) Series: 'a' [f64] [ 0.785398 0.0 -0.785398 ]
arctan() → Series
-
Поэлементно вычислить гиперболический арктангенс.
Примеры
>>> s = pl.Series("a", [2.0, 1.0, 0.5, 0.0, -0.5, -1.0, -1.1]) >>> s.arctanh() shape: (7,) Series: 'a' [f64] [ NaN inf 0.549306 0.0 -0.549306 -inf NaN ]
arctanh() → Series
-
Получить индекс максимального значения.
Если несколько значений равны максимуму, эта функция может произвольно вернуть индекс любого из них. В этом случае не гарантируется, что при нескольких запусках будет возвращён один и тот же индекс.
- Возвращает:
-
- int
Примеры
>>> s = pl.Series("a", [3, 2, 1]) >>> s.arg_max() 0
arg_max() → int | None
-
Получить индекс минимального значения.
Если несколько значений равны минимуму, эта функция может произвольно вернуть индекс любого из них. В этом случае не гарантируется, что при нескольких запусках будет возвращён один и тот же индекс.
- Возвращает:
-
- int
Примеры
>>> s = pl.Series("a", [3, 2, 1]) >>> s.arg_min() 2
arg_min() → int | None
-
Получить значения индексов, которые упорядочат эту Series при сортировке.
- Параметры:
-
- descending
-
Сортировать по убыванию.
- nulls_last
-
Размещать null-значения в конце, а не в начале.
См. также
-
Series.gather -
Взять значения по индексу.
-
Series.rank -
Получить ранг каждой строки.
Примеры
>>> s = pl.Series("a", [5, 3, 4, 1, 2]) >>> s.arg_sort() shape: (5,) Series: 'a' [u32] [ 3 4 1 2 0 ]
arg_sort( *, descending: bool = False, nulls_last: bool = False, ) → Series-
Получить значения индексов, для которых булева Series содержит True.
- Возвращает:
-
- Series
-
Series с типом данных
UInt32.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> (s == 2).arg_true() shape: (1,) Series: 'a' [u32] [ 1 ]
arg_true() → Series
-
Получить уникальные индексы в виде Series.
- Возвращает:
-
- Series
Примеры
>>> s = pl.Series("a", [1, 2, 2, 3]) >>> s.arg_unique() shape: (3,) Series: 'a' [u32] [ 0 1 3 ]
arg_unique() → Series
-
Заполнить пропущенные значения следующим ненулевым значением.
Это псевдоним
.fill_null(strategy="backward").- Параметры:
-
- limit
-
Количество последовательных null-значений для заполнения предыдущими значениями.
См. также
backward_fill( limit: int | None = None, ) → Series-
Выполнить агрегацию побитовых операций AND.
bitwise_and() → PythonLiteral | None
-
Вычислить количество установленных битов.
bitwise_count_ones() → Self
-
Вычислить количество сброшенных битов.
bitwise_count_zeros() → Self
-
-
Вычислить количество старших установленных битов до первого сброшенного бита.
bitwise_leading_ones() → Self
-
Вычислить количество старших сброшенных битов до первого установленного бита.
bitwise_leading_zeros() → Self
-
Выполнить агрегацию побитовых операций OR.
bitwise_or() → PythonLiteral | None
-
Вычислить количество младших установленных битов до первого сброшенного бита.
bitwise_trailing_ones() → Self
-
Вычислить количество младших сброшенных битов до первого установленного бита.
bitwise_trailing_zeros() → Self
-
Выполнить агрегацию побитовых операций XOR.
bitwise_xor() → PythonLiteral | None
-
Вернуть
kнаименьших элементов.Элементы, не равные null, всегда имеют приоритет перед элементами null. Порядок вывода не гарантируется; если необходимо отсортировать результат, вызовите
sort()после этой функции.Временная сложность:
\[O(n)\]- Параметры:
-
- k
-
Количество элементов для возврата.
См. также
Примеры
>>> s = pl.Series("a", [2, 5, 1, 4, 3]) >>> s.bottom_k(3) shape: (3,) Series: 'a' [i64] [ 1 2 3 ]
bottom_k( k: int = 5, ) → Series-
Вернуть
kнаименьших элементов столбцаby.Элементы, не равные null, всегда имеют приоритет перед элементами null независимо от значения
reverse. Порядок вывода не гарантируется; если необходимо отсортировать результат, вызовитеsort()после этой функции.Временная сложность:
\[O(n \log{n})\]- Параметры:
-
- by
-
Столбец, используемый для определения наименьших элементов. Принимает выражение. Строки интерпретируются как имена столбцов.
- k
-
Количество элементов для возврата.
- reverse
-
Рассматривать
kнаибольших элементов столбцаby(вместоkнаименьших). Это можно задать отдельно для каждого столбца, передав последовательность логических значений.
Примеры
>>> s = pl.Series("a", [2, 5, 1, 4, 3]) >>> s.bottom_k_by("a", 3) shape: (3,) Series: 'a' [i64] [ 1 2 3 ]
bottom_k_by( by: IntoExpr | Iterable[IntoExpr], k: int = 5, *, reverse: bool | Sequence[bool] = False, ) → Series-
Преобразовать тип данных.
- Параметры:
-
- dtype
-
Тип данных, к которому нужно привести.
- strict
-
Если True, недопустимые преобразования вызывают исключения вместо
null. - wrap_numerical
-
Если True, при числовых преобразованиях переполняющиеся значения циклически переходят в допустимый диапазон, а не помечаются как недопустимые.
Примеры
>>> s = pl.Series("a", [True, False, True]) >>> s shape: (3,) Series: 'a' [bool] [ true false true ]>>> s.cast(pl.UInt32) shape: (3,) Series: 'a' [u32] [ 1 0 1 ]
cast( dtype: type[int | float | str_ | bool] | PolarsDataType, *, strict: bool = True, wrap_numerical: bool = False, ) → Self-
Вычислить кубический корень элементов.
Оптимизация для
>>> pl.Series([1, 2]) ** (1.0 / 3) shape: (2,) Series: '' [f64] [ 1.0 1.259921 ]Примеры
>>> s = pl.Series([1, 2, 3]) >>> s.cbrt() shape: (3,) Series: '' [f64] [ 1.0 1.259921 1.44225 ]
cbrt() → Series
-
Округлить вверх до ближайшего целого значения.
Работает только с Series с числами с плавающей точкой.
Примеры
>>> s = pl.Series("a", [1.12345, 2.56789, 3.901234]) >>> s.ceil() shape: (3,) Series: 'a' [f64] [ 2.0 3.0 4.0 ]
ceil() → Series
-
Получить длину каждого отдельного фрагмента.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s2 = pl.Series("a", [4, 5, 6])Объединение Series с rechunk = True
>>> pl.concat([s, s2], rechunk=True).chunk_lengths() [6]
Объединение Series с rechunk = False
>>> pl.concat([s, s2], rechunk=False).chunk_lengths() [3, 3]
chunk_lengths() → list_[int]
-
Создать пустую копию текущей Series, содержащую от нуля до ‘n’ элементов.
Копия имеет те же имя и dtype, но не содержит данных.
- Параметры:
-
- n
-
Количество (пустых) элементов, которые нужно вернуть в очищенном фрейме.
См. также
-
clone -
Недорогое глубокое копирование/клонирование.
Примеры
>>> s = pl.Series("a", [None, True, False]) >>> s.clear() shape: (0,) Series: 'a' [bool] [ ]>>> s.clear(n=2) shape: (2,) Series: 'a' [bool] [ null null ]
clear( n: int = 0, ) → Series-
Заменить значения за пределами заданных границ ближайшим граничным значением.
- Параметры:
-
- lower_bound
-
Нижняя граница. Принимает выражение. Входные данные, не являющиеся выражениями, интерпретируются как литералы. Если задано значение
None(по умолчанию), нижняя граница не применяется. - upper_bound
-
Верхняя граница. Принимает выражение. Входные данные, не являющиеся выражениями, интерпретируются как литералы. Если задано значение
None(по умолчанию), верхняя граница не применяется.
См. также
Примечания
Этот метод работает только с числовыми столбцами и столбцами временных типов. Для ограничения значений других типов данных можно написать выражение
when-then-otherwise. См.when().Примеры
Задание нижней и верхней границ:
>>> s = pl.Series([-50, 5, 50, None]) >>> s.clip(1, 10) shape: (4,) Series: '' [i64] [ 1 5 10 null ]Задание только одной границы:
>>> s.clip(upper_bound=10) shape: (4,) Series: '' [i64] [ -50 5 10 null ]
clip( lower_bound: NumericLiteral | TemporalLiteral | IntoExprColumn | None = None, upper_bound: NumericLiteral | TemporalLiteral | IntoExprColumn | None = None, ) → Series-
Создать копию этой Series.
Это недорогая операция, не копирующая данные.
См. также
-
clear -
Создать пустую копию текущей Series с идентичной схемой, но без данных.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.clone() shape: (3,) Series: 'a' [i64] [ 1 2 3 ] -
clone() → Self
-
Вычислить косинус для каждого элемента.
Примечания
Входные значения рассматриваются как радианы. Чтобы преобразовать градусы в радианы, вызовите
.radians().Примеры
>>> import math >>> s = pl.Series("a", [0.0, math.pi / 2.0, math.pi]) >>> s.cos() shape: (3,) Series: 'a' [f64] [ 1.0 6.1232e-17 -1.0 ]
cos() → Series
-
Вычислить гиперболический косинус для каждого элемента.
Примеры
>>> s = pl.Series("a", [1.0, 0.0, -1.0]) >>> s.cosh() shape: (3,) Series: 'a' [f64] [ 1.543081 1.0 1.543081 ]
cosh() → Series
-
Вычислить котангенс для каждого элемента.
Примечания
Входные значения рассматриваются как радианы. Чтобы преобразовать градусы в радианы, вызовите
.radians().Примеры
>>> import math >>> s = pl.Series("a", [0.0, math.pi / 2.0, math.pi]) >>> s.cot() shape: (3,) Series: 'a' [f64] [ inf 6.1232e-17 -8.1656e15 ]
cot() → Series
-
Вернуть количество элементов столбца, не равных null.
См. также
Примеры
>>> s = pl.Series("a", [1, 2, None]) >>> s.count() 2
count() → int
-
Вернуть накопительное количество значений столбца, не равных null.
- Параметры:
-
- reverse
-
Выполнить операцию в обратном направлении.
Примеры
>>> s = pl.Series(["x", "k", None, "d"]) >>> s.cum_count() shape: (4,) Series: '' [u32] [ 1 2 2 3 ]
cum_count( *, reverse: bool = False, ) → Self-
Получить массив с накопительным максимумом, вычисленным для каждого элемента.
- Параметры:
-
- reverse
-
Выполнить операцию в обратном направлении.
Примеры
>>> s = pl.Series("s", [3, 5, 1]) >>> s.cum_max() shape: (3,) Series: 's' [i64] [ 3 5 5 ]
cum_max( *, reverse: bool = False, ) → Series-
Получить массив с накопительным минимумом, вычисленным для каждого элемента.
- Параметры:
-
- reverse
-
Выполнить операцию в обратном направлении.
Примеры
>>> s = pl.Series("s", [1, 2, 3]) >>> s.cum_min() shape: (3,) Series: 's' [i64] [ 1 1 1 ]
cum_min( *, reverse: bool = False, ) → Series-
Получить массив с накопительным произведением, вычисленным для каждого элемента.
- Параметры:
-
- reverse
-
Выполнить операцию в обратном направлении.
Примечания
Типы данных {Int8, UInt8, Int16, UInt16} преобразуются в Int64 перед суммированием для предотвращения переполнения.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.cum_prod() shape: (3,) Series: 'a' [i64] [ 1 2 6 ]
cum_prod( *, reverse: bool = False, ) → Series-
Получить массив с накопительной суммой, вычисленной для каждого элемента.
- Параметры:
-
- reverse
-
Выполнить операцию в обратном направлении.
Примечания
Типы данных {Int8, UInt8, Int16, UInt16} преобразуются в Int64 перед суммированием для предотвращения переполнения.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.cum_sum() shape: (3,) Series: 'a' [i64] [ 1 3 6 ]
cum_sum( *, reverse: bool = False, ) → Series-
Выполнить выражение на скользящем окне, увеличивающемся на
1позицию при каждой итерации.Предупреждение
Эта функция считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений нарушающими обратную совместимость.
Изменено в версии 1.21.0: Параметр
min_periodsпереименован вmin_samples.- Параметры:
-
- expr
-
Выражение для вычисления
- min_samples
-
Количество допустимых значений, которые должны присутствовать в окне перед вычислением выражения. Допустимые значения =
length - null_count - parallel
-
Выполнять параллельно. Не используйте этот режим в group by или другой операции, которая уже широко использует параллелизм.
Предупреждение
Эта операция может быть очень медленной, поскольку ее сложность может составлять
O(n^2). Не используйте ее для операций, обходящих все элементы.Примеры
>>> s = pl.Series("values", [1, 2, 3, 4, 5]) >>> s.cumulative_eval(pl.element().first() - pl.element().last() ** 2) shape: (5,) Series: 'values' [i64] [ 0 -3 -8 -15 -24 ]
cumulative_eval( expr: Expr, *, min_samples: int = 1, parallel: bool = False, ) → Series-
Разбить непрерывные значения на дискретные категории.
Предупреждение
Эта функция считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений нарушающими обратную совместимость.
- Параметры:
-
- breaks
-
Список уникальных точек разбиения.
- labels
-
Названия категорий. Количество меток должно быть на единицу больше количества точек разбиения.
- left_closed
-
Сделать интервалы замкнутыми слева, а не справа.
- include_breaks
-
Добавить столбец с правой границей интервала, в который попадает каждое наблюдение. Это изменит тип данных результата с
EnumнаStruct.
- Возвращает:
-
- Series
-
Series типа данных
Enum, если дляinclude_breaksзадано значениеFalse(по умолчанию); в противном случае — Series типа данныхStruct.
См. также
Примеры
Разделение столбца на три категории.
>>> s = pl.Series("foo", [-2, -1, 0, 1, 2]) >>> s.cut([-1, 1], labels=["a", "b", "c"]) shape: (5,) Series: 'foo' [enum] [ "a" "a" "b" "b" "c" ]Создание DataFrame с точкой разбиения и категорией для каждого значения.
>>> cut = s.cut([-1, 1], include_breaks=True).alias("cut") >>> s.to_frame().with_columns(cut).unnest("cut") shape: (5, 3) ┌─────┬────────────┬────────────┐ │ foo ┆ breakpoint ┆ category │ │ --- ┆ --- ┆ --- │ │ i64 ┆ f64 ┆ enum │ ╞═════╪════════════╪════════════╡ │ -2 ┆ -1.0 ┆ (-inf, -1] │ │ -1 ┆ -1.0 ┆ (-inf, -1] │ │ 0 ┆ 1.0 ┆ (-1, 1] │ │ 1 ┆ 1.0 ┆ (-1, 1] │ │ 2 ┆ inf ┆ (1, inf] │ └─────┴────────────┴────────────┘
cut( breaks: Sequence[float], *, labels: Sequence[str_] | None = None, left_closed: bool = False, include_breaks: bool = False, ) → Series-
Преобразовать радианы в градусы.
Примеры
>>> import math >>> s = pl.Series("a", [x * math.pi for x in range(-4, 5)]) >>> s.degrees() shape: (9,) Series: 'a' [f64] [ -720.0 -540.0 -360.0 -180.0 0.0 180.0 360.0 540.0 720.0 ]
degrees() → Series
-
Краткая сводная статистика Series.
Для Series со смешанными типами данных сводная статистика будет рассчитана для типа данных первого значения.
- Параметры:
-
- percentiles
-
Один или несколько процентилей, которые нужно включить в сводную статистику (если Series имеет числовой dtype). Все значения должны находиться в диапазоне
[0, 1]. -
interpolation{‘nearest’, ‘higher’, ‘lower’, ‘midpoint’, ‘linear’, ‘equiprobable’} -
Метод интерполяции, используемый при вычислении процентилей.
- Возвращает:
-
- DataFrame
-
Отображение со сводной статистикой Series.
Примечания
По умолчанию включается медиана — 50-й процентиль.
Примеры
>>> s = pl.Series([1, 2, 3, 4, 5]) >>> s.describe() shape: (9, 2) ┌────────────┬──────────┐ │ statistic ┆ value │ │ --- ┆ --- │ │ str ┆ f64 │ ╞════════════╪══════════╡ │ count ┆ 5.0 │ │ null_count ┆ 0.0 │ │ mean ┆ 3.0 │ │ std ┆ 1.581139 │ │ min ┆ 1.0 │ │ 25% ┆ 2.0 │ │ 50% ┆ 3.0 │ │ 75% ┆ 4.0 │ │ max ┆ 5.0 │ └────────────┴──────────┘
Для нечисловых типов данных могут быть доступны не все статистические показатели.
>>> s = pl.Series(["aa", "aa", None, "bb", "cc"]) >>> s.describe() shape: (4, 2) ┌────────────┬───────┐ │ statistic ┆ value │ │ --- ┆ --- │ │ str ┆ str │ ╞════════════╪═══════╡ │ count ┆ 4 │ │ null_count ┆ 1 │ │ min ┆ aa │ │ max ┆ cc │ └────────────┴───────┘
describe( percentiles: Sequence[float] | float | None = (0.25, 0.5, 0.75, ), interpolation: QuantileMethod = 'nearest', ) → DataFrame-
Вычислить первую дискретную разность между смещенными элементами.
- Параметры:
-
- n
-
Количество позиций для смещения.
-
null_behavior{‘ignore’, ‘drop’} -
Способ обработки значений null.
Примеры
>>> s = pl.Series("s", values=[20, 10, 30, 25, 35], dtype=pl.Int8) >>> s.diff() shape: (5,) Series: 's' [i8] [ null -10 20 -5 10 ]>>> s.diff(n=2) shape: (5,) Series: 's' [i8] [ null null 10 15 5 ]>>> s.diff(n=2, null_behavior="drop") shape: (3,) Series: 's' [i8] [ 10 15 5 ]
diff( n: int = 1, null_behavior: NullBehavior = 'ignore', ) → Series-
Вычислить скалярное (внутреннее) произведение двух Series.
- Параметры:
-
- other
-
Series (или массив), с которой вычисляется скалярное произведение.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s2 = pl.Series("b", [4.0, 5.0, 6.0]) >>> s.dot(s2) 32.0
dot( other: Series | ArrayLike, ) → int | float | None-
Удалить все значения NaN с плавающей точкой.
Исходный порядок оставшихся элементов сохраняется.
См. также
Примечания
Значение NaN отличается от значения null. Чтобы удалить значения null, используйте
drop_nulls().Примеры
>>> s = pl.Series([1.0, None, 3.0, float("nan")]) >>> s.drop_nans() shape: (3,) Series: '' [f64] [ 1.0 null 3.0 ]
drop_nans() → Series
-
Удалить все значения null.
Исходный порядок оставшихся элементов сохраняется.
См. также
Примечания
Значение null отличается от значения NaN. Чтобы удалить значения NaN, используйте
drop_nans().Примеры
>>> s = pl.Series([1.0, None, 3.0, float("nan")]) >>> s.drop_nulls() shape: (3,) Series: '' [f64] [ 1.0 3.0 NaN ]
drop_nulls() → Series
-
Получить тип данных этой Series.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.dtype Int64
property dtype: DataType
-
Вычислить энтропию.
Используется формула
-sum(pk * log(pk)), гдеpk— дискретные вероятности.- Параметры:
-
- base
-
Основание логарифма; по умолчанию
e - normalize
-
Нормализовать pk, если сумма значений не равна 1.
Примеры
>>> a = pl.Series([0.99, 0.005, 0.005]) >>> a.entropy(normalize=True) 0.06293300616044681 >>> b = pl.Series([0.65, 0.10, 0.25]) >>> b.entropy(normalize=True) 0.8568409950394724
entropy( base: float = 2.718281828459045, *, normalize: bool = True, ) → float | None-
Эквивалент метода для выражения оператора
series == other.
eq( other: Any, ) → Series | Expr-
Эквивалент метода для оператора равенства
series == other, гдеNone == None.Это отличается от стандартного
eq, при котором значения null распространяются.- Параметры:
-
- other
-
Литерал или значение выражения для сравнения.
См. также
Примеры
>>> s1 = pl.Series("a", [333, 200, None]) >>> s2 = pl.Series("a", [100, 200, None]) >>> s1.eq(s2) shape: (3,) Series: 'a' [bool] [ false true null ] >>> s1.eq_missing(s2) shape: (3,) Series: 'a' [bool] [ false true true ]
eq_missing( other: Any, ) → Series | Expr-
Проверить, равна ли Series другой Series.
Изменено в версии 0.20.31: Параметр
strictпереименован вcheck_dtypes.- Параметры:
-
- other
-
Series для сравнения.
- check_dtypes
-
Требовать совпадения типов данных.
- check_names
-
Требовать совпадения имен.
- null_equal
-
Считать значения null равными.
См. также
Примеры
>>> s1 = pl.Series("a", [1, 2, 3]) >>> s2 = pl.Series("b", [4, 5, 6]) >>> s1.equals(s1) True >>> s1.equals(s2) False
equals( other: Series, *, check_dtypes: bool = False, check_names: bool = False, null_equal: bool = True, ) → bool-
Вернуть оценку общего размера памяти (кучи), выделенной для Series.
Оценка размера приводится в указанной единице измерения (по умолчанию — байты).
Оценка представляет собой сумму размеров буферов и данных достоверности, включая вложенные массивы. Несколько массивов могут использовать общие буферы и битовые карты. Поэтому размер двух массивов не равен сумме размеров, вычисленных этой функцией. В частности, размер [
StructArray] является верхней границей.При срезе массива размер выделенной памяти остается неизменным, поскольку буфер не меняется. Однако эта функция вернет меньшее значение, так как возвращает видимый размер буфера, а не его общую емкость.
Буферы FFI включаются в эту оценку.
- Параметры:
-
-
unit{‘b’, ‘kb’, ‘mb’, ‘gb’, ‘tb’} -
Привести возвращаемый размер к указанной единице измерения.
-
Примечания
Для данных с dtype Object оценка размера учитывает только размер указателя, что значительно занижает результат.
Примеры
>>> s = pl.Series("values", list(range(1_000_000)), dtype=pl.UInt32) >>> s.estimated_size() 4000000 >>> s.estimated_size("mb") 3.814697265625
estimated_size( unit: SizeUnit = 'b', ) → int | float-
Вычислить экспоненциально взвешенное скользящее среднее.
Изменено в версии 1.21.0: Параметр
min_periodsпереименован вmin_samples.- Параметры:
-
- com
-
Задать скорость затухания через центр масс, \(\gamma\), при этом
\[\alpha = \frac{1}{1 + \gamma} \; \forall \; \gamma \geq 0\] - span
-
Задать скорость затухания через диапазон, \(\theta\), при этом
\[\alpha = \frac{2}{\theta + 1} \; \forall \; \theta \geq 1\] - half_life
-
Задать скорость затухания через период полураспада, \(\tau\), при этом
\[\alpha = 1 - \exp \left\{ \frac{ -\ln(2) }{ \tau } \right\} \; \forall \; \tau > 0\] - alpha
-
Задать коэффициент сглаживания alpha напрямую, \(0 < \alpha \leq 1\).
- adjust
-
В начальных периодах делить на затухающий корректирующий коэффициент, чтобы учесть дисбаланс относительных весов
- Если
adjust=True(значение по умолчанию), функция EW вычисляется с использованием весов \(w_i = (1 - \alpha)^i\) -
Если
adjust=False, функция EW вычисляется рекурсивно по формуле\[\begin{split}y_0 &= x_0 \\ y_t &= (1 - \alpha)y_{t - 1} + \alpha x_t\end{split}\]
- Если
- min_samples
-
Минимальное количество наблюдений в окне, необходимое для получения значения (в противном случае результат равен null).
- ignore_nulls
-
Игнорировать пропущенные значения при вычислении весов.
- Если
ignore_nulls=False(значение по умолчанию), веса основаны на абсолютных позициях. Например, веса \(x_0\) и \(x_2\), используемые для вычисления итогового взвешенного среднего [\(x_0\), None, \(x_2\)], равны \((1-\alpha)^2\) и \(1\), еслиadjust=True, и \((1-\alpha)^2\) и \(\alpha\), еслиadjust=False. - Если
ignore_nulls=True, веса основаны на относительных позициях. Например, веса \(x_0\) и \(x_2\), используемые для вычисления итогового взвешенного среднего [\(x_0\), None, \(x_2\)], равны \(1-\alpha\) и \(1\), еслиadjust=True, и \(1-\alpha\) и \(\alpha\), еслиadjust=False.
- Если
Примеры
>>> s = pl.Series([1, 2, 3]) >>> s.ewm_mean(com=1, ignore_nulls=False) shape: (3,) Series: '' [f64] [ 1.0 1.666667 2.428571 ]
ewm_mean( *, com: float | None = None, span: float | None = None, half_life: float | None = None, alpha: float | None = None, adjust: bool = True, min_samples: int = 1, ignore_nulls: bool = False, ) → Series-
Вычислить экспоненциально взвешенное скользящее среднее с учетом времени.
Для наблюдений \(x_0, x_1, \ldots, x_{n-1}\) в моменты времени \(t_0, t_1, \ldots, t_{n-1}\) EWMA вычисляется следующим образом:
\[ \begin{align}\begin{aligned}y_0 &= x_0\\\alpha_i &= 1 - \exp \left\{ \frac{ -\ln(2)(t_i-t_{i-1}) } { \tau } \right\}\\y_i &= \alpha_i x_i + (1 - \alpha_i) y_{i-1}; \quad i > 0\end{aligned}\end{align} \]где \(\tau\) —
half_life.- Параметры:
-
- by
-
Временные метки, по которым вычисляется среднее. Тип данных должен быть
DateTime,Date,UInt64,UInt32,Int64илиInt32. - half_life
-
Интервал времени, за который вклад наблюдения уменьшается вдвое.
Его можно задать с помощью timedelta или следующего строкового формата:
- 1ns (1 наносекунда)
- 1us (1 микросекунда)
- 1ms (1 миллисекунда)
- 1s (1 секунда)
- 1m (1 минута)
- 1h (1 час)
- 1d (1 день)
- 1w (1 неделя)
- 1i (1 индексный отсчет)
Их также можно комбинировать: «3d12h4m25s» # 3 дня, 12 часов, 4 минуты и 25 секунд
Обратите внимание, что
half_lifeрассматривается как постоянная длительность. Календарные интервалы, например месяцы (или даже дни в случае часового пояса), не поддерживаются. Укажите длительность в приблизительно эквивалентном количестве часов (например, ‘370h’ вместо ‘1mo’).
- Возвращает:
Примеры
>>> from datetime import date, timedelta >>> df = pl.DataFrame( ... { ... "values": [0, 1, 2, None, 4], ... "times": [ ... date(2020, 1, 1), ... date(2020, 1, 3), ... date(2020, 1, 10), ... date(2020, 1, 15), ... date(2020, 1, 17), ... ], ... } ... ).sort("times") >>> df["values"].ewm_mean_by(df["times"], half_life="4d") shape: (5,) Series: 'values' [f64] [ 0.0 0.292893 1.492474 null 3.254508 ]
ewm_mean_by( by: IntoExpr, *, half_life: str_ | timedelta, ) → Series-
-
Вычисляет экспоненциально взвешенное скользящее стандартное отклонение.
Изменено в версии 1.21.0: Параметр
min_periodsпереименован вmin_samples.- Параметры:
-
- com
-
Задает скорость затухания через центр масс \(\gamma\), где
\[\alpha = \frac{1}{1 + \gamma} \; \forall \; \gamma \geq 0\] - span
-
Задает скорость затухания через интервал \(\theta\), где
\[\alpha = \frac{2}{\theta + 1} \; \forall \; \theta \geq 1\] - half_life
-
Задает скорость затухания через период полураспада \(\lambda\), где
\[\alpha = 1 - \exp \left\{ \frac{ -\ln(2) }{ \lambda } \right\} \; \forall \; \lambda > 0\] - alpha
-
Задает коэффициент сглаживания alpha напрямую, \(0 < \alpha \leq 1\).
- adjust
-
В начальных периодах выполняет деление на затухающий корректирующий коэффициент, чтобы компенсировать дисбаланс относительных весов
- Если
adjust=True(значение по умолчанию), экспоненциально взвешенная функция вычисляется с использованием весов \(w_i = (1 - \alpha)^i\) -
Если
adjust=False, экспоненциально взвешенная функция вычисляется рекурсивно:\[\begin{split}y_0 &= x_0 \\ y_t &= (1 - \alpha)y_{t - 1} + \alpha x_t\end{split}\]
- Если
- bias
-
Если
bias=False, применяется поправка для получения статистически несмещенной оценки. - min_samples
-
Минимальное количество наблюдений в окне, необходимое для получения значения (иначе результат будет null).
- ignore_nulls
-
При вычислении весов пропускает отсутствующие значения.
- Если
ignore_nulls=False(значение по умолчанию), веса определяются абсолютными позициями. Например, веса \(x_0\) и \(x_2\), используемые при вычислении итогового взвешенного среднего для [\(x_0\), None, \(x_2\)], равны \((1-\alpha)^2\) и \(1\), еслиadjust=True, и \((1-\alpha)^2\) и \(\alpha\), еслиadjust=False. - Если
ignore_nulls=True, веса определяются относительными позициями. Например, веса \(x_0\) и \(x_2\), используемые при вычислении итогового взвешенного среднего для [\(x_0\), None, \(x_2\)], равны \(1-\alpha\) и \(1\), еслиadjust=True, и \(1-\alpha\) и \(\alpha\), еслиadjust=False.
- Если
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.ewm_std(com=1, ignore_nulls=False) shape: (3,) Series: 'a' [f64] [ null 0.707107 0.963624 ]
ewm_std( *, com: float | None = None, span: float | None = None, half_life: float | None = None, alpha: float | None = None, adjust: bool = True, bias: bool = False, min_samples: int = 1, ignore_nulls: bool = False, ) → Series-
Вычисляет экспоненциально взвешенную скользящую сумму.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений обратно несовместимыми.
- Параметры:
-
- com
-
Задает скорость затухания через центр масс \(\gamma\), где
\[\alpha = \frac{1}{1 + \gamma} \; \forall \; \gamma \geq 0\] - span
-
Задает скорость затухания через интервал \(\theta\), где
\[\alpha = \frac{2}{\theta + 1} \; \forall \; \theta \geq 1\] - half_life
-
Задает скорость затухания через период полураспада \(\tau\), где
\[\alpha = 1 - \exp \left\{ \frac{ -\ln(2) }{ \tau } \right\} \; \forall \; \tau > 0\] - alpha
-
Задает коэффициент сглаживания alpha напрямую, \(0 < \alpha \leq 1\).
- min_samples
-
Минимальное количество наблюдений в окне, необходимое для получения значения (иначе результат будет null).
- ignore_nulls
-
При вычислении весов пропускает отсутствующие значения.
Примеры
>>> s = pl.Series([1, 2, 3]) >>> s.ewm_sum(alpha=0.5) shape: (3,) Series: '' [f64] [ 1.0 2.5 4.25 ]
ewm_sum( *, com: float | None = None, span: float | None = None, half_life: float | None = None, alpha: float | None = None, min_samples: int = 1, ignore_nulls: bool = False, ) → Series-
Вычисляет зависящую от времени экспоненциально взвешенную скользящую сумму.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений обратно несовместимыми.
Для наблюдений \(x_0, x_1, \ldots, x_{n-1}\) в моменты времени \(t_0, t_1, \ldots, t_{n-1}\) экспоненциально взвешенная скользящая сумма вычисляется следующим образом:
\[ \begin{align}\begin{aligned}y_0 &= x_0\\\lambda_i &= \exp \left\{ \frac{ -\ln(2)(t_i-t_{i-1}) } { \tau } \right\}\\y_i &= x_i + \lambda_i y_{i-1}; \quad i > 0\end{aligned}\end{align} \]где \(\tau\) —
half_life.- Параметры:
-
- by
-
Время, по которому вычисляется сумма. Тип данных должен быть
DateTime,Date,UInt64,UInt32,Int64илиInt32. - half_life
-
Период, за который значение наблюдения уменьшается вдвое.
Примеры
>>> df = pl.DataFrame( ... { ... "values": [1, 2, 3, 4, 5], ... "times": [0, 1, 2, 5, 6], ... } ... ) >>> df["values"].ewm_sum_by(df["times"], half_life="1i") shape: (5,) Series: 'values' [f64] [ 1.0 2.5 4.25 4.53125 7.265625 ]
ewm_sum_by( by: IntoExpr, *, half_life: str_ | timedelta, ) → Series-
Вычисляет экспоненциально взвешенную скользящую дисперсию.
Изменено в версии 1.21.0: Параметр
min_periodsпереименован вmin_samples.- Параметры:
-
- com
-
Задает скорость затухания через центр масс \(\gamma\), где
\[\alpha = \frac{1}{1 + \gamma} \; \forall \; \gamma \geq 0\] - span
-
Задает скорость затухания через интервал \(\theta\), где
\[\alpha = \frac{2}{\theta + 1} \; \forall \; \theta \geq 1\] - half_life
-
Задает скорость затухания через период полураспада \(\lambda\), где
\[\alpha = 1 - \exp \left\{ \frac{ -\ln(2) }{ \lambda } \right\} \; \forall \; \lambda > 0\] - alpha
-
Задает коэффициент сглаживания alpha напрямую, \(0 < \alpha \leq 1\).
- adjust
-
В начальных периодах выполняет деление на затухающий корректирующий коэффициент, чтобы компенсировать дисбаланс относительных весов
- Если
adjust=True(значение по умолчанию), экспоненциально взвешенная функция вычисляется с использованием весов \(w_i = (1 - \alpha)^i\) -
Если
adjust=False, экспоненциально взвешенная функция вычисляется рекурсивно:\[\begin{split}y_0 &= x_0 \\ y_t &= (1 - \alpha)y_{t - 1} + \alpha x_t\end{split}\]
- Если
- bias
-
Если
bias=False, применяется поправка для получения статистически несмещенной оценки. - min_samples
-
Минимальное количество наблюдений в окне, необходимое для получения значения (иначе результат будет null).
- ignore_nulls
-
При вычислении весов пропускает отсутствующие значения.
- Если
ignore_nulls=False(значение по умолчанию), веса определяются абсолютными позициями. Например, веса \(x_0\) и \(x_2\), используемые при вычислении итогового взвешенного среднего для [\(x_0\), None, \(x_2\)], равны \((1-\alpha)^2\) и \(1\), еслиadjust=True, и \((1-\alpha)^2\) и \(\alpha\), еслиadjust=False. - Если
ignore_nulls=True, веса определяются относительными позициями. Например, веса \(x_0\) и \(x_2\), используемые при вычислении итогового взвешенного среднего для [\(x_0\), None, \(x_2\)], равны \(1-\alpha\) и \(1\), еслиadjust=True, и \(1-\alpha\) и \(\alpha\), еслиadjust=False.
- Если
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.ewm_var(com=1, ignore_nulls=False) shape: (3,) Series: 'a' [f64] [ null 0.5 0.928571 ]
ewm_var( *, com: float | None = None, span: float | None = None, half_life: float | None = None, alpha: float | None = None, adjust: bool = True, bias: bool = False, min_samples: int = 1, ignore_nulls: bool = False, ) → Series-
Вычисляет экспоненту поэлементно.
Примеры
>>> s = pl.Series([1, 2, 3]) >>> s.exp() shape: (3,) Series: '' [f64] [ 2.718282 7.389056 20.085537 ]
exp() → Series
-
Разворачивает список Series.
Это означает, что каждый элемент становится новой строкой.
- Параметры:
-
- empty_as_null
-
Разворачивает пустой список в
null. - keep_nulls
-
Разворачивает список
nullвnull.
- Возвращает:
-
- Series
-
Series с типом данных элементов списка.
См. также
-
Series.list.explode -
Разворачивает столбец со списками.
Примеры
>>> s = pl.Series("a", [[1, 2, 3], [4, 5, 6]]) >>> s shape: (2,) Series: 'a' [list[i64]] [ [1, 2, 3] [4, 5, 6] ] >>> s.explode(empty_as_null=False) shape: (6,) Series: 'a' [i64] [ 1 2 3 4 5 6 ]
explode( *, empty_as_null: bool | None = True, keep_nulls: bool = True, ) → Series-
Расширяет память, используемую этой Series, значениями из другой Series.
В отличие от
append, которая добавляет чанки изotherк чанкам этой Series,extendдобавляет данные изotherв базовые области памяти и поэтому может привести к перераспределению памяти (что требует значительных затрат).Если это
notприводит к перераспределению памяти, результирующая структура данных не будет содержать дополнительных чанков, благодаря чему запросы будут выполняться быстрее.Предпочтительнее использовать
extendвместоappend, если после одного добавления нужно выполнить запрос. Например, при потоковой обработке, когда вы добавляетеnстрок и повторно выполняете запрос.Предпочтительнее использовать
appendвместоextend, если перед выполнением запроса нужно выполнить несколько добавлений. Например, при чтении нескольких файлов, данные из которых нужно сохранить в одномSeries. В последнем случае завершите последовательность операцийappendвызовомrechunk.- Параметры:
-
- other
-
Series, которой нужно расширить эту Series.
Предупреждение
Этот метод изменяет Series на месте. Series возвращается только для удобства.
См. также
Примеры
>>> a = pl.Series("a", [1, 2, 3]) >>> b = pl.Series("b", [4, 5]) >>> a.extend(b) shape: (5,) Series: 'a' [i64] [ 1 2 3 4 5 ]Результирующая Series будет состоять из одного чанка.
>>> a.n_chunks() 1
extend( other: Series, ) → Self-
Чрезвычайно быстрый метод расширения Series на ‘n’ копий значения.
- Параметры:
-
- value
-
Постоянное литеральное значение или выражение с единицей измерения, которым расширяется результат Series; можно передать None, чтобы добавить null-значения.
- n
-
Количество добавляемых значений.
Примеры
>>> s = pl.Series([1, 2, 3]) >>> s.extend_constant(99, n=2) shape: (5,) Series: '' [i64] [ 1 2 3 99 99 ]
extend_constant( value: IntoExpr, n: int | IntoExprColumn, ) → Series-
Заполняет значения NaN с плавающей точкой указанным значением.
- Параметры:
-
- value
-
Значение, используемое для заполнения значений NaN.
См. также
Примечания
Значение NaN отличается от значения null. Чтобы заполнить значения null, используйте
fill_null().Примеры
>>> s = pl.Series("a", [1.0, 2.0, 3.0, float("nan")]) >>> s.fill_nan(0) shape: (4,) Series: 'a' [f64] [ 1.0 2.0 3.0 0.0 ]
fill_nan( value: int | float | Expr | None, ) → Series-
Заполняет значения null указанным значением или стратегией.
- Параметры:
-
- value
-
Значение, используемое для заполнения значений null.
-
strategy{None, ‘forward’, ‘backward’, ‘min’, ‘max’, ‘mean’, ‘zero’, ‘one’} -
Стратегия заполнения значений null.
- limit
-
Количество последовательных значений null для заполнения при использовании стратегии ‘forward’ или ‘backward’.
См. также
Примечания
Значение null отличается от значения NaN. Чтобы заполнить значения NaN, используйте
fill_nan().Примеры
>>> s = pl.Series("a", [1, 2, 3, None]) >>> s.fill_null(strategy="forward") shape: (4,) Series: 'a' [i64] [ 1 2 3 3 ] >>> s.fill_null(strategy="min") shape: (4,) Series: 'a' [i64] [ 1 2 3 1 ] >>> s = pl.Series("b", ["x", None, "z"]) >>> s.fill_null(pl.lit("")) shape: (3,) Series: 'b' [str] [ "x" "" "z" ]
fill_null( value: Any | Expr | None = None, strategy: FillNullStrategy | None = None, limit: int | None = None, ) → Series-
Фильтрует элементы с помощью булевой маски.
Исходный порядок оставшихся элементов сохраняется.
Отбрасываются элементы, для которых результат фильтра не равен True, включая null-значения.
- Параметры:
-
- predicate
-
Булева маска.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> mask = pl.Series("", [True, False, True]) >>> s.filter(mask) shape: (2,) Series: 'a' [i64] [ 1 3 ]
filter( predicate: Series | Iterable[bool], ) → Self-
Возвращает первый элемент Series.
- Параметры:
-
- ignore_nulls
-
Игнорировать значения null (по умолчанию
False). Если задано значениеTrue, возвращается первое значение, не равное null; в противном случае возвращаетсяNone, если таких значений нет. - Возвращает `None`, если Series пуста.
first( *, ignore_nulls: bool = False, ) → PythonLiteral | None-
Возвращает флаги, установленные для Series.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.flags {'SORTED_ASC': False, 'SORTED_DESC': False}
property flags: dict[str_, bool]
-
Округляет вниз до ближайшего целого значения.
Работает только с Series, содержащими числа с плавающей точкой.
Примеры
>>> s = pl.Series("a", [1.12345, 2.56789, 3.901234]) >>> s.floor() shape: (3,) Series: 'a' [f64] [ 1.0 2.0 3.0 ]
floor() → Series
-
Заполняет пропущенные значения последним значением, не равным null.
Это псевдоним
.fill_null(strategy="forward").- Параметры:
-
- limit
-
Количество последовательных значений null для заполнения предыдущими значениями.
См. также
forward_fill( limit: int | None = None, ) → Series-
Выбирает значения по индексам.
- Параметры:
-
- indices
-
Индексы элементов, используемые для выбора.
- null_on_oob
-
Поведение, если индекс выходит за границы:
- True -> результату присваивается null
- False -> возникает ошибка
Примеры
>>> s = pl.Series("a", [1, 2, 3, 4]) >>> s.gather([1, 3]) shape: (2,) Series: 'a' [i64] [ 2 4 ]Используйте
null_on_oob=True, чтобы возвращать null для индексов, выходящих за границы.>>> s.gather([1, 10], null_on_oob=True) shape: (2,) Series: 'a' [i64] [ 2 null ]
gather( indices: int | list_[int] | Expr | Series | np.ndarray[Any, Any], *, null_on_oob: bool = False, ) → Series-
Выбирает каждое n-е значение Series и возвращает результат в виде новой Series.
- Параметры:
-
- n
-
Извлекать каждую n-ю строку.
- offset
-
Начинать индексацию строк с этого смещения.
Примеры
>>> s = pl.Series("a", [1, 2, 3, 4]) >>> s.gather_every(2) shape: (2,) Series: 'a' [i64] [ 1 3 ] >>> s.gather_every(2, offset=1) shape: (2,) Series: 'a' [i64] [ 2 4 ]
gather_every( n: int, offset: int = 0, ) → Series-
Метод, эквивалентный операторному выражению
series >= other.
ge( other: Any, ) → Series | Expr-
Возвращает чанки этой Series в виде списка Series.
Примеры
>>> s1 = pl.Series("a", [1, 2, 3]) >>> s2 = pl.Series("a", [4, 5, 6]) >>> s = pl.concat([s1, s2], rechunk=False) >>> s.get_chunks() [shape: (3,) Series: 'a' [i64] [ 1 2 3 ], shape: (3,) Series: 'a' [i64] [ 4 5 6 ]]
get_chunks() → list_[Series]
-
Метод, эквивалентный операторному выражению
series > other.
gt( other: Any, ) → Series | Expr-
Проверяет, содержит ли Series одно или несколько значений null.
Примеры
>>> s = pl.Series([1, 2, None]) >>> s.has_nulls() True >>> s[:2].has_nulls() False
has_nulls() → bool
-
Проверяет, содержит ли Series одно или несколько значений null.
Устарело с версии 0.20.30: Вместо этого используйте метод
has_nulls().
has_validity() → bool
-
Вычисляет хеш Series.
Хеш имеет тип
UInt64.- Параметры:
-
- seed
-
Параметр начального значения генератора случайных чисел. По умолчанию равен 0.
- seed_1
-
Параметр начального значения генератора случайных чисел. Если не задан, по умолчанию равен
seed. - seed_2
-
Параметр начального значения генератора случайных чисел. Если не задан, по умолчанию равен
seed. - seed_3
-
Параметр начального значения генератора случайных чисел. Если не задан, по умолчанию равен
seed.
Примечания
Эта реализация
hashне гарантирует стабильность результатов в разных версиях Polars. Стабильность гарантируется только в рамках одной версии.Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.hash(seed=42) shape: (3,) Series: 'a' [u64] [ 10734580197236529959 3022416320763508302 13756996518000038261 ]
hash( seed: int = 0, seed_1: int | None = None, seed_2: int | None = None, seed_3: int | None = None, ) → Series-
Возвращает первые
nэлементов.- Параметры:
-
- n
-
Количество возвращаемых элементов. Если передано отрицательное значение, возвращаются все элементы, кроме последних
abs(n).
См. также
-
tail,slice
Примеры
>>> s = pl.Series("a", [1, 2, 3, 4, 5]) >>> s.head(3) shape: (3,) Series: 'a' [i64] [ 1 2 3 ]Передайте отрицательное значение, чтобы получить все строки,
exceptпоследниеabs(n).>>> s.head(-3) shape: (2,) Series: 'a' [i64] [ 1 2 ]
head( n: int = 10, ) → Series-
Разбивает значения на интервалы и подсчитывает количество попаданий в каждый из них.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений обратно несовместимыми.
- Параметры:
-
- bins
-
Границы интервалов. Если значение None не задано, границы определяются по данным.
- bin_count
-
Если
binsне указан, создаютсяbin_countравномерных интервалов, охватывающих весь диапазон данных. - include_breakpoint
-
Добавляет столбец с верхней границей интервала.
- include_category
-
Добавляет столбец, в котором интервалы представлены как категории.
- Возвращает:
-
- DataFrame
Примеры
>>> a = pl.Series("a", [1, 3, 8, 8, 2, 1, 3]) >>> a.hist(bin_count=4) shape: (4, 3) ┌────────────┬─────────────┬───────┐ │ breakpoint ┆ category ┆ count │ │ --- ┆ --- ┆ --- │ │ f64 ┆ cat ┆ u32 │ ╞════════════╪═════════════╪═══════╡ │ 2.75 ┆ [1.0, 2.75] ┆ 3 │ │ 4.5 ┆ (2.75, 4.5] ┆ 2 │ │ 6.25 ┆ (4.5, 6.25] ┆ 0 │ │ 8.0 ┆ (6.25, 8.0] ┆ 2 │ └────────────┴─────────────┴───────┘
hist( bins: list_[float] | None = None, *, bin_count: int | None = None, include_category: bool = True, include_breakpoint: bool = True, ) → DataFrame-
Агрегирует значения в список.
Сам возвращаемый список является скалярным значением типа
list.Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.implode() shape: (1,) Series: 'a' [list[i64]] [ [1, 2, 3] ]
implode() → Self
-
Возвращает индекс первого вхождения значения или
None, если оно не найдено.- Параметры:
-
- element
-
Искомое значение.
Примеры
>>> s = pl.Series("a", [1, None, 17]) >>> s.index_of(17) 2 >>> s.index_of(None) # search for a null 1 >>> s.index_of(55) is None True
index_of( element: IntoExpr, ) → int | None-
Интерполирует промежуточные значения.
Значения null в начале и конце Series остаются null.
- Параметры:
-
-
method{‘linear’, ‘nearest’} -
Метод интерполяции.
-
Примеры
>>> s = pl.Series("a", [1, 2, None, None, 5]) >>> s.interpolate() shape: (5,) Series: 'a' [f64] [ 1.0 2.0 3.0 4.0 5.0 ]
interpolate( method: InterpolationMethod = 'linear', ) → Series-
Интерполирует промежуточные значения, используя координаты x из другого столбца.
Значения null в начале и конце Series остаются null.
- Параметры:
-
- by
-
Столбец, на основе которого интерполируются значения.
Примеры
Заполнение значений null линейной интерполяцией.
>>> s = pl.Series([1, None, None, 3]) >>> by = pl.Series([1, 2, 7, 8]) >>> s.interpolate_by(by) shape: (4,) Series: '' [f64] [ 1.0 1.285714 2.714286 3.0 ]
interpolate_by( by: IntoExpr, ) → Series-
Возвращает булеву маску значений, попадающих между заданными нижней и верхней границами.
- Параметры:
-
- lower_bound
-
Значение нижней границы. Принимает выражение. Входные данные, не являющиеся выражениями (в том числе строки), интерпретируются как литералы.
- upper_bound
-
Значение верхней границы. Принимает выражение. Входные данные, не являющиеся выражениями (в том числе строки), интерпретируются как литералы.
-
closed{‘both’, ‘left’, ‘right’, ‘none’} -
Определяет, какие границы интервала включаются в него.
Примечания
Если значение
lower_boundбольше значенияupper_bound, результатом будет False, так как ни одно значение не может удовлетворять условию.Примеры
>>> s = pl.Series("num", [1, 2, 3, 4, 5]) >>> s.is_between(2, 4) shape: (5,) Series: 'num' [bool] [ false true true true false ]Используйте аргумент
closed, чтобы включить или исключить значения на границах:>>> s.is_between(2, 4, closed="left") shape: (5,) Series: 'num' [bool] [ false true true false false ]Также можно использовать строки, а не только числовые и временные значения:
>>> s = pl.Series("s", ["a", "b", "c", "d", "e"]) >>> s.is_between("b", "d", closed="both") shape: (5,) Series: 's' [bool] [ false true true true false ]
is_between( lower_bound: IntoExpr, upper_bound: IntoExpr, closed: ClosedInterval = 'both', ) → Series-
Возвращает булеву маску значений, близких к другим значениям.
Два значения
aиbсчитаются близкими, если выполняется следующее условие:\[|a-b| \le max \{ \text{rel_tol} \cdot max \{ |a|, |b| \}, \text{abs_tol} \}\]- Параметры:
-
- other
-
Литерал или выражение для сравнения.
- abs_tol
-
Абсолютная погрешность. Максимально допустимая абсолютная разность двух значений. Должна быть неотрицательной.
- rel_tol
-
Относительная погрешность. Максимально допустимая разность двух значений относительно большего из них по абсолютной величине. Должна быть неотрицательной.
- nans_equal
-
Считать ли значения NaN равными.
- Возвращает:
-
- Series
-
Series типа данных
Boolean.
Примечания
Реализация этого метода симметрична и соответствует поведению
math.isclose(). Обратите внимание, что это поведение отличается отnumpy.isclose().Примеры
>>> s = pl.Series("s", [1.0, 1.2, 1.4, 1.45, 1.6]) >>> s.is_close(1.4, abs_tol=0.1) shape: (5,) Series: 's' [bool] [ false false true true false ]
is_close( other: IntoExpr, *, abs_tol: float = 0.0, rel_tol: float = 1e-09, nans_equal: bool = False, ) → Series-
Возвращает маску всех повторяющихся значений.
- Возвращает:
-
- Series
-
Series типа данных
Boolean.
Примеры
>>> s = pl.Series("a", [1, 2, 2, 3]) >>> s.is_duplicated() shape: (4,) Series: 'a' [bool] [ false true true false ]
is_duplicated() → Series
-
Проверяет, пуста ли Series.
- Параметры:
-
- ignore_nulls
-
Если значение истинно, Series, содержащая только значения null, также считается пустой. По умолчанию — false.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений обратно несовместимыми.
Примеры
>>> s = pl.Series("a", [], dtype=pl.Float32) >>> s.is_empty() True >>> s = pl.Series("a", [None], dtype=pl.Float32) >>> s.is_empty() False >>> s.is_empty(ignore_nulls=True) True
is_empty( *, ignore_nulls: bool = False, ) → bool-
-
Возвращает логический Series, указывающий, какие значения являются конечными.
- Возвращает:
-
- Series
-
Series с типом данных
Boolean.
Примеры
>>> import numpy as np >>> s = pl.Series("a", [1.0, 2.0, np.inf]) >>> s.is_finite() shape: (3,) Series: 'a' [bool] [ true true false ]
is_finite() → Series
-
Возвращает логическую маску, указывающую на первое вхождение каждого уникального значения.
- Возвращает:
-
- Series
-
Series с типом данных
Boolean.
Примеры
>>> s = pl.Series([1, 1, 2, 3, 2]) >>> s.is_first_distinct() shape: (5,) Series: '' [bool] [ true false true true false ]
is_first_distinct() → Series
-
Проверяет, содержатся ли элементы этого Series в другом Series.
- Параметры:
-
- other
-
Series или коллекция для поиска.
-
nulls_equalbool, default False -
Если True, считать null отдельным значением. Значения null не будут распространяться.
- Возвращает:
-
- Series
-
Series с типом данных
Boolean.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s2 = pl.Series("b", [2, 4, None]) >>> s2.is_in(s) shape: (3,) Series: 'b' [bool] [ true false null ] >>> # when nulls_equal=True, None is treated as a distinct value >>> s2.is_in(s, nulls_equal=True) shape: (3,) Series: 'b' [bool] [ true false false ]>>> # check if some values are a member of sublists >>> sets = pl.Series("sets", [[1, 2, 3], [1, 2], [9, 10]]) >>> optional_members = pl.Series("optional_members", [1, 2, 3]) >>> print(sets) shape: (3,) Series: 'sets' [list[i64]] [ [1, 2, 3] [1, 2] [9, 10] ] >>> print(optional_members) shape: (3,) Series: 'optional_members' [i64] [ 1 2 3 ] >>> optional_members.is_in(sets) shape: (3,) Series: 'optional_members' [bool] [ true true false ]
is_in( other: Series | Collection[Any], *, nulls_equal: bool = False, ) → Series-
Возвращает логический Series, указывающий, какие значения являются бесконечными.
- Возвращает:
-
- Series
-
Series с типом данных
Boolean.
Примеры
>>> import numpy as np >>> s = pl.Series("a", [1.0, 2.0, np.inf]) >>> s.is_infinite() shape: (3,) Series: 'a' [bool] [ false false true ]
is_infinite() → Series
-
Возвращает логическую маску, указывающую на последнее вхождение каждого уникального значения.
- Возвращает:
-
- Series
-
Series с типом данных
Boolean.
Примеры
>>> s = pl.Series([1, 1, 2, 3, 2]) >>> s.is_last_distinct() shape: (5,) Series: '' [bool] [ false true false true true ]
is_last_distinct() → Series
-
Возвращает логический Series, указывающий, какие значения являются NaN.
- Возвращает:
-
- Series
-
Series с типом данных
Boolean.
Примеры
>>> import numpy as np >>> s = pl.Series("a", [1.0, 2.0, 3.0, np.nan]) >>> s.is_nan() shape: (4,) Series: 'a' [bool] [ false false false true ]
is_nan() → Series
-
Возвращает логический Series, указывающий, какие значения не являются NaN.
- Возвращает:
-
- Series
-
Series с типом данных
Boolean.
Примеры
>>> import numpy as np >>> s = pl.Series("a", [1.0, 2.0, 3.0, np.nan]) >>> s.is_not_nan() shape: (4,) Series: 'a' [bool] [ true true true false ]
is_not_nan() → Series
-
Возвращает логический Series, указывающий, какие значения не являются null.
- Возвращает:
-
- Series
-
Series с типом данных
Boolean.
Примеры
>>> s = pl.Series("a", [1.0, 2.0, 3.0, None]) >>> s.is_not_null() shape: (4,) Series: 'a' [bool] [ true true true false ]
is_not_null() → Series
-
Возвращает логический Series, указывающий, какие значения являются null.
- Возвращает:
-
- Series
-
Series с типом данных
Boolean.
Примеры
>>> s = pl.Series("a", [1.0, 2.0, 3.0, None]) >>> s.is_null() shape: (4,) Series: 'a' [bool] [ false false false true ]
is_null() → Series
-
Проверяет, отсортирован ли Series.
- Параметры:
-
- descending
-
Проверить, отсортирован ли Series по убыванию
- nulls_last
-
Поместить null в конец Series при проверке сортировки.
Примеры
>>> s = pl.Series([1, 3, 2]) >>> s.is_sorted() False
>>> s = pl.Series([3, 2, 1]) >>> s.is_sorted(descending=True) True
is_sorted( *, descending: bool = False, nulls_last: bool = False, ) → bool-
Получить маску всех уникальных значений.
- Возвращает:
-
- Series
-
Series с типом данных
Boolean.
Примеры
>>> s = pl.Series("a", [1, 2, 2, 3]) >>> s.is_unique() shape: (4,) Series: 'a' [bool] [ true false false true ]
is_unique() → Series
-
Возвращает Series как скаляр или возвращает элемент с заданным индексом.
Если индекс не указан, это эквивалентно
s[0]с проверкой, что форма равна (1,). Если индекс указан, это эквивалентноs[index].Примеры
>>> s1 = pl.Series("a", [1]) >>> s1.item() 1 >>> s2 = pl.Series("a", [9, 8, 7]) >>> s2.cum_sum().item(-1) 24
item( index: int | None = None, ) → Any-
Вычисляет эксцесс набора данных (по Фишеру или Пирсону).
Эксцесс — это четвёртый центральный момент, делённый на квадрат дисперсии. При использовании определения Фишера из результата вычитается 3.0, чтобы для нормального распределения получить 0.0. Если bias равен False, эксцесс вычисляется с использованием k-статистик для устранения смещения, вызванного смещёнными оценками моментов.
Дополнительные сведения см. в scipy.stats.
- Параметры:
-
-
fisherbool, optional -
Если True, используется определение Фишера (нормальное распределение ==> 0.0). Если False, используется определение Пирсона (нормальное распределение ==> 3.0).
-
biasbool, optional -
Если False, вычисления корректируются с учётом статистического смещения.
-
Примеры
>>> s = pl.Series("grades", [66, 79, 54, 97, 96, 70, 69, 85, 93, 75]) >>> s.kurtosis() -1.0522623626787952 >>> s.kurtosis(fisher=False) 1.9477376373212048 >>> s.kurtosis(fisher=False, bias=False) 2.1040361802642717
kurtosis( *, fisher: bool = True, bias: bool = True, ) → float | None-
Получить последний элемент Series.
- Параметры:
-
- ignore_nulls
-
Игнорировать значения null (по умолчанию
False). Если задано значениеTrue, возвращается последнее значение, отличное от null; в противном случае, если таких значений нет, возвращаетсяNone. - Возвращает `None`, если Series пуст.
last( *, ignore_nulls: bool = False, ) → PythonLiteral | None-
Метод, эквивалентный операторному выражению
series <= other.
le( other: Any, ) → Series | Expr-
Возвращает количество элементов в Series.
Значения null учитываются в общем количестве.
См. также
Примеры
>>> s = pl.Series("a", [1, 2, None]) >>> s.len() 3
len() → int
-
Получить первые
nэлементов.Псевдоним для
Series.head().- Параметры:
-
- n
-
Количество возвращаемых элементов. Если передано отрицательное значение, возвращаются все элементы, кроме последних
abs(n).
См. также
Примеры
>>> s = pl.Series("a", [1, 2, 3, 4, 5]) >>> s.limit(3) shape: (3,) Series: 'a' [i64] [ 1 2 3 ]Передайте отрицательное значение, чтобы получить все строки,
exceptпоследниеabs(n).>>> s.limit(-3) shape: (2,) Series: 'a' [i64] [ 1 2 ]
limit( n: int = 10, ) → Series-
Вычисляет логарифм с заданным основанием.
Примеры
>>> s = pl.Series([1, 2, 3]) >>> s.log() shape: (3,) Series: '' [f64] [ 0.0 0.693147 1.098612 ]
log( base: float | Series = 2.718281828459045, ) → Series-
Поэлементно вычисляет десятичный логарифм входного массива.
Примеры
>>> s = pl.Series([10, 100, 1000]) >>> s.log10() shape: (3,) Series: '' [f64] [ 1.0 2.0 3.0 ]
log10() → Series
-
Поэлементно вычисляет натуральный логарифм входного массива плюс единица.
Примеры
>>> s = pl.Series([1, 2, 3]) >>> s.log1p() shape: (3,) Series: '' [f64] [ 0.693147 1.098612 1.386294 ]
log1p() → Series
-
Возвращает нижнюю границу типа данных этого Series в виде Series из единиц.
См. также
-
upper_bound -
возвращает верхнюю границу типа данных заданного Series.
Примеры
>>> s = pl.Series("s", [-1, 0, 1], dtype=pl.Int32) >>> s.lower_bound() shape: (1,) Series: 's' [i32] [ -2147483648 ]>>> s = pl.Series("s", [1.0, 2.5, 3.0], dtype=pl.Float32) >>> s.lower_bound() shape: (1,) Series: 's' [f32] [ -inf ] -
lower_bound() → Self
-
Метод, эквивалентный операторному выражению
series < other.
lt( other: Any, ) → Series | Expr-
Применяет пользовательскую функцию (UDF) к элементам этого Series.
Предупреждение
Этот метод работает значительно медленнее, чем API встроенных выражений. Используйте его только в том случае, если вашу логику нельзя реализовать иначе.
Предположим, что функция имеет вид:
x ↦ sqrt(x):- Для отображения элементов Series рассмотрите вариант:
s.sqrt(). - Для отображения вложенных элементов списков рассмотрите вариант:
s.list.eval(pl.element().sqrt()). - Для отображения элементов полей struct рассмотрите вариант:
s.struct.field("field_name").sqrt().
Если функция возвращает другой тип данных, необходимо задать аргумент return_dtype, иначе метод завершится с ошибкой.
Реализация логики с помощью функции Python почти всегда значительно медленнее и требует больше памяти, чем реализация той же логики с помощью встроенного API выражений, по следующим причинам:
- Механизм встроенных выражений выполняется в Rust; UDF выполняются в Python.
- Использование UDF на Python приводит к материализации DataFrame в памяти.
- Встроенные выражения Polars могут выполняться параллельно (UDF, как правило, не могут).
- Встроенные выражения Polars можно логически оптимизировать (UDF — нельзя).
Для достижения наилучшей производительности настоятельно рекомендуется по возможности использовать встроенный API выражений.
- Параметры:
-
- function
-
Пользовательская функция или лямбда-функция.
- return_dtype
-
Тип выходных данных. Если не задан, тип выводится на основании первого ненулевого значения, возвращённого функцией.
- skip_nulls
-
Значения null будут пропускаться и не передаваться функции Python. Это ускоряет работу, поскольку позволяет не вызывать Python и использовать более специализированные функции.
- Возвращает:
-
- Series
Предупреждение
Если
return_dtypeне задан, это может привести к неожиданным результатам. Такая возможность поддерживается, но считается ошибкой в запросе пользователя.Примечания
- Если ваша функция затратна и вы не хотите, чтобы она вызывалась более одного раза для одного входного значения, рассмотрите возможность применить к ней декоратор
@lru_cache. Для подходящих данных это может обеспечить значительное ускорение. - UDF, передаваемая в
map_elements, должна быть чистой, то есть не должна изменять состояние, отличное от её аргументов, или зависеть от него.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.map_elements(lambda x: x + 10, return_dtype=pl.Int64) shape: (3,) Series: 'a' [i64] [ 11 12 13 ] - Для отображения элементов Series рассмотрите вариант:
map_elements( function: Callable[[Any], Any], return_dtype: PolarsDataType | None = None, *, skip_nulls: bool = True, _disable_inefficient_map_warning: bool = False, ) → Self-
Получить максимальное значение в этом Series.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.max() 3
max() → PythonLiteral | None
-
Получить максимальное значение в этом Series, упорядоченном по выражению.
Если выражение by содержит несколько значений, равных максимальному, не определено, какое из них будет выбрано.
Предупреждение
Эта функциональность считается нестабильной. Она может измениться в любой момент, и это не будет считаться нарушением обратной совместимости.
- Параметры:
-
- by
-
Столбец, используемый для определения наибольшего элемента. Принимает выражение. Строки интерпретируются как имена столбцов.
Примеры
>>> s = pl.Series("a", [-2.0, float("nan"), 1.0]) >>> s.max_by(pl.col.a.abs()) -2.0
max_by( by: IntoExpr, ) → Expr-
Сводит этот Series к среднему значению.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.mean() 2.0
mean() → PythonLiteral | None
-
Получить медиану этого Series.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.median() 2.0
median() → PythonLiteral | None
-
Получить наименьшее значение в этом Series.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.min() 1
min() → PythonLiteral | None
-
Получить минимальное значение в этом Series, упорядоченном по выражению.
Если выражение by содержит несколько значений, равных минимальному, не определено, какое из них будет выбрано.
Предупреждение
Эта функциональность считается нестабильной. Она может измениться в любой момент, и это не будет считаться нарушением обратной совместимости.
- Параметры:
-
- by
-
Столбец, используемый для определения наименьшего элемента. Принимает выражение. Строки интерпретируются как имена столбцов.
Примеры
>>> s = pl.Series("a", [-2.0, float("nan"), 1.0]) >>> s.min_by(pl.col.a.abs()) 1.0
min_by( by: IntoExpr, ) → Expr-
Вычисляет наиболее часто встречающееся значение (или значения).
Может возвращать несколько значений.
- Параметры:
-
- maintain_order
-
Сохранять порядок данных. Для этого требуется больше вычислений.
Примеры
>>> s = pl.Series("a", [1, 2, 2, 3]) >>> s.mode() shape: (1,) Series: 'a' [i64] [ 2 ]
mode( *, maintain_order: bool = False, ) → Series-
Получить количество фрагментов, содержащихся в этом Series.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.n_chunks() 1 >>> s2 = pl.Series("a", [4, 5, 6])Объединение Series с rechunk = True
>>> pl.concat([s, s2], rechunk=True).n_chunks() 1
Объединение Series с rechunk = False
>>> pl.concat([s, s2], rechunk=False).n_chunks() 2
n_chunks() → int
-
Подсчитать количество уникальных значений в этом Series.
Для этой операции
nullсчитается уникальным значением.Примеры
>>> s = pl.Series("a", [1, 2, 2, None]) >>> s.n_unique() 3
n_unique() → int
-
Получить имя этого Series.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.name 'a'
property name: str_
-
Получить максимальное значение, распространяя/сохраняя встретившиеся значения NaN.
Это отличается от
nanmaxв numpy: по умолчанию numpy распространяет значения NaN, тогда как polars по умолчанию игнорирует их.Примеры
>>> s = pl.Series("a", [1, 3, 4]) >>> s.nan_max() 4>>> s = pl.Series("a", [1.0, float("nan"), 4.0]) >>> s.nan_max() nan
nan_max() → int | float | date | datetime | timedelta | str_
-
Получить минимальное значение, распространяя/сохраняя встретившиеся значения NaN.
Это отличается от
nanmaxв numpy: по умолчанию numpy распространяет значения NaN, тогда как polars по умолчанию игнорирует их.Примеры
>>> s = pl.Series("a", [1, 3, 4]) >>> s.nan_min() 1>>> s = pl.Series("a", [1.0, float("nan"), 4.0]) >>> s.nan_min() nan
nan_min() → int | float | date | datetime | timedelta | str_
-
Метод, эквивалентный операторному выражению
series != other.
ne( other: Any, ) → Series | Expr-
Метод, эквивалентный оператору равенства
series != other, гдеNone == None.Отличается от стандартного
ne, который распространяет значения null.- Параметры:
-
- other
-
Литерал или значение выражения для сравнения.
См. также
Примеры
>>> s1 = pl.Series("a", [333, 200, None]) >>> s2 = pl.Series("a", [100, 200, None]) >>> s1.ne(s2) shape: (3,) Series: 'a' [bool] [ true false null ] >>> s1.ne_missing(s2) shape: (3,) Series: 'a' [bool] [ true false false ]
ne_missing( other: Any, ) → Series | Expr-
Создаёт новый Series, заполненный значениями по заданному индексу.
Примеры
>>> s = pl.Series("a", [1, 2, 3, 4, 5]) >>> s.new_from_index(1, 3) shape: (3,) Series: 'a' [i64] [ 2 2 2 ]
new_from_index( index: int, length: int, ) → Self-
Инвертирует логический Series.
- Возвращает:
-
- Series
-
Series с типом данных
Boolean.
Примеры
>>> s = pl.Series("a", [True, False, False]) >>> s.not_() shape: (3,) Series: 'a' [bool] [ false true true ]
not_() → Series
-
Подсчитать количество значений null в этом Series.
Примеры
>>> s = pl.Series([1, None, None]) >>> s.null_count() 2
null_count() → int
-
Вычисляет процентное изменение между значениями.
Процентное изменение (в виде дроби) между текущим элементом и ближайшим предыдущим ненулевым элементом, находящимся как минимум на
nпериод(а) раньше текущего элемента.По умолчанию вычисляет изменение относительно предыдущей строки.
- Параметры:
-
- n
-
Количество периодов сдвига для вычисления процентного изменения.
Примечания
Значения null сохраняются. Если вы переходите с pandas, это соответствует его поведению
fill_method=None.Примеры
>>> pl.Series(range(10)).pct_change() shape: (10,) Series: '' [f64] [ null inf 1.0 0.5 0.333333 0.25 0.2 0.166667 0.142857 0.125 ]>>> pl.Series([1, 2, 4, 8, 16, 32, 64, 128, 256, 512]).pct_change(2) shape: (10,) Series: '' [f64] [ null null 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 ]
pct_change( n: int | IntoExprColumn = 1, ) → Series-
Получить логическую маску локальных максимумов.
Примеры
>>> s = pl.Series("a", [1, 2, 3, 4, 5]) >>> s.peak_max() shape: (5,) Series: 'a' [bool] [ false false false false true ]
peak_max() → Self
-
Получить логическую маску локальных минимумов.
Примеры
>>> s = pl.Series("a", [4, 1, 3, 2, 5]) >>> s.peak_min() shape: (5,) Series: 'a' [bool] [ false true false true false ]
peak_min() → Self
-
Создаёт пространство имён для построения графиков.
Предупреждение
В настоящее время эта функциональность считается нестабильной. Она может измениться в любой момент, и это не будет считаться нарушением обратной совместимости.
Изменено в версии 1.6.0: В предыдущих версиях Polars серверной частью для построения графиков был HvPlot. Чтобы восстановить прежние возможности построения графиков, достаточно добавить
import hvplot.polarsв начало скрипта и заменитьdf.plotнаdf.hvplot.Polars не реализует логику построения графиков самостоятельно, а передаёт её Altair:
-
s.plot.hist(**kwargs)— это сокращённая запись дляalt.Chart(s.to_frame()).mark_bar(tooltip=True).encode(x=alt.X(f'{s.name}:Q', bin=True), y='count()', **kwargs).interactive() -
s.plot.kde(**kwargs)— это сокращённая запись дляalt.Chart(s.to_frame()).transform_density(s.name, as_=[s.name, 'density']).mark_area(tooltip=True).encode(x=s.name, y='density:Q', **kwargs).interactive() - для любого другого атрибута
attr,s.plot.attr(**kwargs)— это сокращённая запись дляalt.Chart(s.to_frame().with_row_index()).mark_attr(tooltip=True).encode(x='index', y=s.name, **kwargs).interactive()
Для настройки рекомендуем ознакомиться с разделом Настройка диаграмм. Например, можно:
- Изменить ширину, высоту и заголовок с помощью
.properties(width=500, height=350, title="My amazing plot"). - Изменить угол поворота меток оси x с помощью
.configure_axisX(labelAngle=30). - Изменить непрозрачность точек на точечной диаграмме с помощью
.configure_point(opacity=.5).
Примеры
Гистограмма:
>>> s = pl.Series([1, 4, 4, 6, 2, 4, 3, 5, 5, 7, 1]) >>> s.plot.hist()
График KDE:
>>> s.plot.kde()
Линейный график:
>>> s.plot.line()
-
property plot: SeriesPlot
-
Возводит в степень с заданным показателем.
Если показатель степени имеет тип float, результат имеет тип данных показателя. В противном случае он имеет тип данных основания.
- Параметры:
-
- exponent
-
Показатель степени. Принимает Series.
Примеры
Возведение целых чисел в положительную целую степень даёт целые числа:
>>> s = pl.Series("foo", [1, 2, 3, 4]) >>> s.pow(3) shape: (4,) Series: 'foo' [i64] [ 1 8 27 64 ]Чтобы возвести целые числа в отрицательную целую степень, можно преобразовать основание или показатель степени к типу float:
>>> s.pow(-3.0) shape: (4,) Series: 'foo' [f64] [ 1.0 0.125 0.037037 0.015625 ]
pow( exponent: int | float | Series, ) → Series-
Сводит этот Series к произведению значений.
Примечания
Если нет ненулевых значений, результат равен
1. Если для пустого произведения вы предпочитаете получатьNone, используйтеs.product() if s.count() else Noneвместоs.product().Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.product() 6
product() → int | float
-
Разбивает непрерывные значения на дискретные категории на основе квантилей.
Предупреждение
Эта функциональность считается нестабильной. Она может измениться в любой момент, и это не будет считаться нарушением обратной совместимости.
- Параметры:
-
- quantiles
-
Список вероятностей квантилей от 0 до 1 или положительное целое число, определяющее количество интервалов с равномерной вероятностью.
- labels
-
Названия категорий. Количество меток должно быть равно количеству точек разбиения плюс один.
- left_closed
-
Задать интервалы с включённой левой границей вместо правой.
- allow_duplicates
-
Если задано значение
True, дубликаты в полученных квантилях удаляются, а не вызываютDuplicateError. Такое может произойти даже при уникальных вероятностях — это зависит от данных. - include_breaks
-
Добавить столбец с правой границей интервала, в который попадает каждое наблюдение. Это изменит тип данных результата с
CategoricalнаStruct.
- Возвращает:
-
- Series
-
Series с типом данных
Categorical, если дляinclude_breaksзадано значениеFalse(по умолчанию); в противном случае возвращается Series с типом данныхStruct.
См. также
Примеры
Разделить столбец на три категории в соответствии с заранее заданными вероятностями квантилей.
>>> s = pl.Series("foo", [-2, -1, 0, 1, 2]) >>> s.qcut([0.25, 0.75], labels=["a", "b", "c"]) shape: (5,) Series: 'foo' [cat] [ "a" "a" "b" "b" "c" ]Разделить столбец на две категории с использованием равномерных вероятностей квантилей.
>>> s.qcut(2, labels=["low", "high"], left_closed=True) shape: (5,) Series: 'foo' [cat] [ "low" "low" "high" "high" "high" ]Создать DataFrame с точкой разбиения и категорией для каждого значения.
>>> cut = s.qcut([0.25, 0.75], include_breaks=True).alias("cut") >>> s.to_frame().with_columns(cut).unnest("cut") shape: (5, 3) ┌─────┬────────────┬────────────┐ │ foo ┆ breakpoint ┆ category │ │ --- ┆ --- ┆ --- │ │ i64 ┆ f64 ┆ cat │ ╞═════╪════════════╪════════════╡ │ -2 ┆ -1.0 ┆ (-inf, -1] │ │ -1 ┆ -1.0 ┆ (-inf, -1] │ │ 0 ┆ 1.0 ┆ (-1, 1] │ │ 1 ┆ 1.0 ┆ (-1, 1] │ │ 2 ┆ inf ┆ (1, inf] │ └─────┴────────────┴────────────┘
qcut( quantiles: Sequence[float] | int, *, labels: Sequence[str_] | None = None, left_closed: bool = False, allow_duplicates: bool = False, include_breaks: bool = False, ) → Series-
Получить значение квантиля этого Series.
- Параметры:
-
- quantile
-
Квантиль или квантили от 0.0 до 1.0. Может быть одним числом с плавающей точкой или списком таких чисел.
-
interpolation{‘nearest’, ‘higher’, ‘lower’, ‘midpoint’, ‘linear’, ‘equiprobable’} -
Метод интерполяции.
- Возвращает:
-
- float | None | list[float] | list[None]
-
Одно значение квантиля, если передано число с плавающей точкой, или список значений квантилей, если передан список.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.quantile(0.5) 2.0Возвращает список квантилей:
>>> s.quantile([0.25, 0.75], interpolation="linear") [1.5, 2.5]
quantile( quantile: float | list_[float], interpolation: QuantileMethod = 'nearest', ) → float | None | list_[float] | list_[None]-
Преобразует градусы в радианы.
Примеры
>>> s = pl.Series("a", [-720, -540, -360, -180, 0, 180, 360, 540, 720]) >>> s.radians() shape: (9,) Series: 'a' [f64] [ -12.566371 -9.424778 -6.283185 -3.141593 0.0 3.141593 6.283185 9.424778 12.566371 ]
radians() → Series
-
Присваивает данные ранги, корректно обрабатывая совпадающие значения.
- Параметры:
-
-
method{‘average’, ‘min’, ‘max’, ‘dense’, ‘ordinal’, ‘random’} -
Метод присвоения рангов совпадающим элементам. Доступны следующие методы (по умолчанию используется ‘average’):
- ‘average’ : каждому значению присваивается среднее арифметическое рангов, которые были бы присвоены всем совпадающим значениям.
- ‘min’ : каждому значению присваивается наименьший из рангов, которые были бы присвоены всем совпадающим значениям. (Этот метод также называют ранжированием «по соревнованиям».)
- ‘max’ : каждому значению присваивается наибольший из рангов, которые были бы присвоены всем совпадающим значениям.
- ‘dense’ : аналогично ‘min’, но следующему по величине элементу присваивается ранг, следующий непосредственно за рангом совпадающих элементов.
- ‘ordinal’ : всем значениям присваивается уникальный ранг в соответствии с порядком их появления в Series.
- ‘random’ : аналогично ‘ordinal’, но ранг совпадающих значений не зависит от порядка их появления в Series.
- descending
-
Ранжировать по убыванию.
- seed
-
Если
method="random", использовать это значение в качестве начального числа.
-
Примечания
Если вы переходите с SQL, вы можете ожидать, что значения null получат последние ранги. Однако Polars ранжирует только ненулевые значения и сохраняет значения null без изменений.
Примеры
Метод ‘average’:
>>> s = pl.Series("a", [3, 6, 1, 1, 6]) >>> s.rank() shape: (5,) Series: 'a' [f64] [ 3.0 4.5 1.5 1.5 4.5 ]Метод ‘ordinal’:
>>> s = pl.Series("a", [3, 6, 1, 1, 6]) >>> s.rank("ordinal") shape: (5,) Series: 'a' [u32] [ 3 4 1 2 5 ]
rank( method: RankMethod = 'average', *, descending: bool = False, seed: int | None = None, ) → Series-
Создаёт единый блок памяти для этого Series.
- Параметры:
-
- in_place
-
Выполнять операцию на месте или нет.
Примеры
>>> s1 = pl.Series("a", [1, 2, 3]) >>> s1.n_chunks() 1 >>> s2 = pl.Series("a", [4, 5, 6]) >>> s = pl.concat([s1, s2], rechunk=False) >>> s.n_chunks() 2 >>> s.rechunk(in_place=True) shape: (6,) Series: 'a' [i64] [ 1 2 3 4 5 6 ] >>> s.n_chunks() 1
rechunk( *, in_place: bool = False, ) → Self-
Переинтерпретирует нижележащие биты как знаковое/беззнаковое целое число или число с плавающей точкой.
Эта операция разрешена только для числовых типов одинакового размера. Для чисел с меньшим количеством битов можно безопасно использовать операцию приведения типов.
Можно указать либо
signed, либоdtype. В противном случае по умолчанию используетсяsigned=True.- Параметры:
-
- signed
-
Если True, переинтерпретировать как знаковое целое число. В противном случае переинтерпретировать как беззнаковое целое число.
- dtype
-
Тип данных, в который следует выполнить переинтерпретацию.
Примеры
>>> s = pl.Series("a", [-(2**60), -2, 3]) >>> s shape: (3,) Series: 'a' [i64] [ -1152921504606846976 -2 3 ] >>> s.reinterpret(signed=False) shape: (3,) Series: 'a' [u64] [ 17293822569102704640 18446744073709551614 3 ] >>> s.reinterpret(dtype=pl.Int64) shape: (3,) Series: 'a' [i64] [ -1152921504606846976 -2 3 ]
reinterpret( *, signed: bool | None = None, dtype: type[int | float] | PolarsDataType | None = None, ) → Series-
Переименовывает этот Series.
Псевдоним для
Series.alias().- Параметры:
-
- name
-
Новое имя.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.rename("b") shape: (3,) Series: 'b' [i64] [ 1 2 3 ]
rename( name: str_, ) → Series-
Повторяет элементы этого Series указанное в заданном выражении количество раз.
Повторённые элементы объединяются в List.
- Параметры:
-
- by
-
Числовой столбец, определяющий количество повторений значений. Тип столбца будет преобразован в UInt32. Укажите этот тип данных, чтобы избежать преобразования.
- Возвращает:
-
- Expr
-
Выражение с типом данных List, внутренний тип данных которого совпадает с исходным типом данных.
repeat_by( by: int | IntoExprColumn, ) → Self-
-
Заменяет значения другими значениями того же типа данных.
- Параметры:
-
- old
-
Значение или последовательность значений для замены. Также принимает отображение значений в значения для замены — это синтаксический сахар для
replace(old=Series(mapping.keys()), new=Series(mapping.values())). - new
-
Значение или последовательность значений, которыми нужно заменить. Длина должна совпадать с длиной
oldили быть равна 1. - default
-
Задает это значение для значений, которые не были заменены. По умолчанию исходное значение сохраняется. Принимает выражение на вход. Входные данные, не являющиеся выражениями, разбираются как литералы.
Устарело с версии 0.20.31: Вместо этого используйте
replace_strict(), чтобы задать значение по умолчанию при замене значений. - return_dtype
-
Тип данных результирующего выражения. Если задано значение
None(по умолчанию), тип данных определяется автоматически на основе остальных входных данных.Устарело с версии 0.20.31: Вместо этого используйте
replace_strict(), чтобы задать тип возвращаемых данных при замене значений.
См. также
Примеры
Замените одно значение другим. Значения, которые не были заменены, остаются без изменений.
>>> s = pl.Series([1, 2, 2, 3]) >>> s.replace(2, 100) shape: (4,) Series: '' [i64] [ 1 100 100 3 ]Замените несколько значений, передав последовательности параметрам
oldиnew.>>> s.replace([2, 3], [100, 200]) shape: (4,) Series: '' [i64] [ 1 100 100 200 ]Также поддерживается передача отображения замен в качестве синтаксического сахара.
>>> mapping = {2: 100, 3: 200} >>> s.replace(mapping) shape: (4,) Series: '' [i64] [ 1 100 100 200 ]Исходный тип данных сохраняется при замене на значения другого типа данных. Используйте
replace_strict(), чтобы заменить значения и изменить тип возвращаемых данных.>>> s = pl.Series(["x", "y", "z"]) >>> mapping = {"x": 1, "y": 2, "z": 3} >>> s.replace(mapping) shape: (3,) Series: '' [str] [ "1" "2" "3" ]
replace( old: IntoExpr | Sequence[Any] | Mapping[Any, Any], new: IntoExpr | Sequence[Any] | NoDefault = <no_default>, *, default: IntoExpr | NoDefault = <no_default>, return_dtype: PolarsDataType | None = None, ) → Self-
Заменяет все значения другими значениями.
- Параметры:
-
- old
-
Значение или последовательность значений для замены. Также принимает отображение значений в значения для замены — это синтаксический сахар для
replace_strict(old=Series(mapping.keys()), new=Series(mapping.values())). - new
-
Значение или последовательность значений, которыми нужно заменить. Длина должна совпадать с длиной
oldили быть равна 1. - default
-
Задает это значение для значений, которые не были заменены. Если значение по умолчанию не указано (по умолчанию), возникает ошибка, если какие-либо значения не были заменены. Принимает выражение на вход. Входные данные, не являющиеся выражениями, разбираются как литералы.
- return_dtype
-
Тип данных результирующего Series. Если задано значение
None(по умолчанию), тип данных определяется автоматически на основе остальных входных данных.
- Вызывает исключение:
-
- InvalidOperationError
-
Если какие-либо ненулевые значения исходного столбца не были заменены и не указано значение
default.
См. также
Примеры
Замените значения, передав последовательности параметрам
oldиnew.>>> s = pl.Series([1, 2, 2, 3]) >>> s.replace_strict([1, 2, 3], [100, 200, 300]) shape: (4,) Series: '' [i64] [ 100 200 200 300 ]Также поддерживается передача отображения замен в качестве синтаксического сахара.
>>> mapping = {1: 100, 2: 200, 3: 300} >>> s.replace_strict(mapping) shape: (4,) Series: '' [i64] [ 100 200 200 300 ]По умолчанию возникает ошибка, если какие-либо ненулевые значения не были заменены. Укажите значение по умолчанию, чтобы задать его для всех несопоставленных значений.
>>> mapping = {2: 200, 3: 300} >>> s.replace_strict(mapping) Traceback (most recent call last): ... polars.exceptions.InvalidOperationError: incomplete mapping specified for `replace_strict` >>> s.replace_strict(mapping, default=-1) shape: (4,) Series: '' [i64] [ -1 200 200 300 ]В качестве значения по умолчанию можно использовать другой Series.
>>> default = pl.Series([2.5, 5.0, 7.5, 10.0]) >>> s.replace_strict(2, 200, default=default) shape: (4,) Series: '' [f64] [ 2.5 200.0 200.0 10.0 ]При замене на значения другого типа данных тип возвращаемых данных определяется на основе сочетания типа данных
newи типа данныхdefault.>>> s = pl.Series(["x", "y", "z"]) >>> mapping = {"x": 1, "y": 2, "z": 3} >>> s.replace_strict(mapping) shape: (3,) Series: '' [i64] [ 1 2 3 ] >>> s.replace_strict(mapping, default="x") shape: (3,) Series: '' [str] [ "1" "2" "3" ]Задайте параметр
return_dtype, чтобы напрямую управлять результирующим типом данных.>>> s.replace_strict(mapping, return_dtype=pl.UInt8) shape: (3,) Series: '' [u8] [ 1 2 3 ]
replace_strict( old: IntoExpr | Sequence[Any] | Mapping[Any, Any], new: IntoExpr | Sequence[Any] | NoDefault = <no_default>, *, default: IntoExpr | NoDefault = <no_default>, return_dtype: PolarsDataType | None = None, ) → Self-
Изменяет форму этого Series на одномерный Series или Series типа Array.
- Параметры:
-
- dimensions
-
Кортеж размеров измерений. Если для какого-либо измерения указано -1, его размер определяется автоматически.
- Возвращает:
-
- Series
-
Если указано одно измерение, результатом будет Series исходного типа данных. Если указано несколько измерений, результатом будет Series типа данных
Arrayс формойdimensions.
См. также
-
Series.list.explode -
Разворачивает столбец со списками.
Примеры
>>> s = pl.Series("foo", [1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> square = s.reshape((3, 3)) >>> square shape: (3,) Series: 'foo' [array[i64, 3]] [ [1, 2, 3] [4, 5, 6] [7, 8, 9] ] >>> square.reshape((9,)) shape: (9,) Series: 'foo' [i64] [ 1 2 3 4 5 6 7 8 9 ]
reshape( dimensions: tuple[int, ...], ) → Series-
Возвращает Series в обратном порядке.
Примеры
>>> s = pl.Series("a", [1, 2, 3], dtype=pl.Int8) >>> s.reverse() shape: (3,) Series: 'a' [i8] [ 3 2 1 ]
reverse() → Series
-
Сжимает данные Series с помощью кодирования длин серий.
Кодирование длин серий (RLE) кодирует данные, представляя каждую серию одинаковых значений одним значением и ее длиной.
- Возвращает:
-
- Series
-
Series типа данных
Structс полямиlenтипа данныхUInt32иvalueисходного типа данных.
Примеры
>>> s = pl.Series("s", [1, 1, 2, 1, None, 1, 3, 3]) >>> s.rle().struct.unnest() shape: (6, 2) ┌─────┬───────┐ │ len ┆ value │ │ --- ┆ --- │ │ u32 ┆ i64 │ ╞═════╪═══════╡ │ 2 ┆ 1 │ │ 1 ┆ 2 │ │ 1 ┆ 1 │ │ 1 ┆ null │ │ 1 ┆ 1 │ │ 2 ┆ 3 │ └─────┴───────┘
rle() → Series
-
Возвращает уникальный целочисленный идентификатор для каждой серии одинаковых значений.
Идентификатор начинается с 0 и увеличивается на единицу при каждом изменении значения столбца.
- Возвращает:
-
- Series
-
Series типа данных
UInt32.
См. также
Примечания
Эта функция особенно полезна для определения новой группы при каждом изменении значения столбца, а не для каждого уникального значения этого столбца.
Примеры
>>> s = pl.Series("s", [1, 1, 2, 1, None, 1, 3, 3]) >>> s.rle_id() shape: (8,) Series: 's' [u32] [ 0 0 1 2 3 4 5 5 ]
rle_id() → Series
-
Вычисляет скользящий эксцесс.
Предупреждение
Эта функция считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений несовместимыми.
Окно для данной строки включает саму строку и
window_size - 1предшествующих ей элементов.- Параметры:
-
- window_size
-
Целочисленный размер скользящего окна.
-
fisherbool, optional -
Если True, используется определение Фишера (нормальное распределение ==> 0.0). Если False, используется определение Пирсона (нормальное распределение ==> 3.0).
-
biasbool, optional -
Если False, вычисления корректируются с учетом статистического смещения.
- min_samples
-
Количество значений в окне, которые должны быть ненулевыми для вычисления результата. Если задано значение
None(по умолчанию), оно будет равноwindow_size. - center
-
Размещает метки в центре окна.
См. также
Примеры
>>> pl.Series([1, 4, 2, 9]).rolling_kurtosis(3) shape: (4,) Series: '' [f64] [ null null -1.5 -1.5 ]
rolling_kurtosis( window_size: int, *, fisher: bool = True, bias: bool = True, min_samples: int | None = None, center: bool = False, ) → Series-
Вычисляет пользовательскую функцию для скользящего окна.
Предупреждение
Эта функция считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений несовместимыми.
Изменено в версии 1.21.0: Параметр
min_periodsпереименован вmin_samples.- Параметры:
-
- function
-
Пользовательская функция агрегации.
- window_size
-
Длина окна в количестве элементов.
- weights
-
Необязательный срез той же длины, что и окно, который поэлементно умножается на значения в окне.
- min_samples
-
Количество значений в окне, которые должны быть ненулевыми для вычисления результата. Если задано значение
None(по умолчанию), оно будет равноwindow_size. - center
-
Размещает метки в центре окна.
Предупреждение
Вычисление пользовательских функций чрезвычайно медленное. По возможности используйте специализированные функции для скользящего окна, например
Series.rolling_sum().Примеры
>>> from numpy import nansum >>> s = pl.Series([11.0, 2.0, 9.0, float("nan"), 8.0]) >>> s.rolling_map(nansum, window_size=3) shape: (5,) Series: '' [f64] [ null null 22.0 11.0 17.0 ]
rolling_map( function: Callable[[Series], Any], window_size: int, weights: list_[float] | None = None, *, min_samples: int | None = None, center: bool = False, ) → Series-
Применяет скользящий максимум к значениям этого массива.
По массиву проходит окно длиной
window_size. Значения, попавшие в это окно, при необходимости умножаются на веса, заданные векторомweight. Для полученных значений вычисляется максимум.Окно для данной строки включает саму строку и
window_size - 1предшествующих ей элементов.Изменено в версии 1.21.0: Параметр
min_periodsпереименован вmin_samples.- Параметры:
-
- window_size
-
Длина окна в количестве элементов.
- weights
-
Необязательный срез той же длины, что и окно, который поэлементно умножается на значения в окне.
- min_samples
-
Количество значений в окне, которые должны быть ненулевыми для вычисления результата. Если задано значение
None(по умолчанию), оно будет равноwindow_size. - center
-
Размещает метки в центре окна.
Примеры
>>> s = pl.Series("a", [100, 200, 300, 400, 500]) >>> s.rolling_max(window_size=2) shape: (5,) Series: 'a' [i64] [ null 200 300 400 500 ]
rolling_max( window_size: int, weights: list_[float] | None = None, *, min_samples: int | None = None, center: bool = False, ) → Series-
Вычисляет скользящий максимум на основе другого Series.
Предупреждение
Эта функция считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений несовместимыми.
Для столбца
byсо значениями<t_0, t_1, ..., t_n>параметрclosed="right"(значение по умолчанию) означает, что окна будут следующими:- (t_0 - window_size, t_0]
- (t_1 - window_size, t_1]
- …
- (t_n - window_size, t_n]
- Параметры:
-
- by
-
Должен иметь тип данных
DateTime,Date,UInt64,UInt32,Int64илиInt32(обратите внимание: для целочисленных типов требуется использовать'i'вwindow size). - window_size
-
Длина окна. Может задаваться как динамический временной интервал с помощью timedelta или строки следующего формата:
- 1ns (1 наносекунда)
- 1us (1 микросекунда)
- 1ms (1 миллисекунда)
- 1s (1 секунда)
- 1m (1 минута)
- 1h (1 час)
- 1d (1 календарный день)
- 1w (1 календарная неделя)
- 1mo (1 календарный месяц)
- 1q (1 календарный квартал)
- 1y (1 календарный год)
- 1i (1 значение индекса)
Под «календарным днем» подразумевается то же время следующего дня (из-за перехода на летнее время он может длиться не 24 часа; в неоднозначных случаях мы следуем RFC-5545 и сохраняем исходный DST fold даты и времени). Аналогично трактуются «календарная неделя», «календарный месяц», «календарный квартал» и «календарный год».
- min_samples
-
Количество значений в окне, которые должны быть ненулевыми для вычисления результата.
-
closed{‘left’, ‘right’, ‘both’, ‘none’} -
Задает, какие границы временного интервала включены; по умолчанию используется
'right'.
Примечания
Если требуется вычислить несколько статистик агрегации для одного динамического окна, рассмотрите возможность использования
rolling— этот метод может кэшировать вычисление размера окна.Примеры
Создайте Series со значениями индекса строк
>>> from datetime import timedelta, datetime >>> start = datetime(2001, 1, 1) >>> stop = datetime(2001, 1, 2) >>> s = pl.Series("index", range(25)) >>> s shape: (25,) Series: 'index' [i64] [ 0 1 2 3 4 … 20 21 22 23 24 ]Создайте другой Series для применения маски окна:
>>> d = pl.Series("date", pl.datetime_range(start, stop, "1h", eager=True)) >>> d shape: (25,) Series: 'date' [datetime[μs]] [ 2001-01-01 00:00:00 2001-01-01 01:00:00 2001-01-01 02:00:00 2001-01-01 03:00:00 2001-01-01 04:00:00 … 2001-01-01 20:00:00 2001-01-01 21:00:00 2001-01-01 22:00:00 2001-01-01 23:00:00 2001-01-02 00:00:00 ]Вычислите скользящий максимум с временными окнами из второго Series, включающими правую границу:
>>> s.rolling_max_by(d, "3h") shape: (25,) Series: 'index' [i64] [ 0 1 2 3 4 … 20 21 22 23 24 ]
rolling_max_by( by: IntoExpr, window_size: timedelta | str_, *, min_samples: int = 1, closed: ClosedInterval = 'right', ) → Self-
Применяет скользящее среднее к значениям этого массива.
По массиву проходит окно длиной
window_size. Значения, попавшие в это окно, при необходимости умножаются на веса, заданные векторомweight. Для полученных значений вычисляется среднее.Окно для данной строки включает саму строку и
window_size - 1предшествующих ей элементов.Изменено в версии 1.21.0: Параметр
min_periodsпереименован вmin_samples.- Параметры:
-
- window_size
-
Длина окна в количестве элементов.
- weights
-
Необязательный срез той же длины, что и окно, который поэлементно умножается на значения в окне.
- min_samples
-
Количество значений в окне, которые должны быть ненулевыми для вычисления результата. Если задано значение
None(по умолчанию), оно будет равноwindow_size. - center
-
Размещает метки в центре окна.
Примеры
>>> s = pl.Series("a", [100, 200, 300, 400, 500]) >>> s.rolling_mean(window_size=2) shape: (5,) Series: 'a' [f64] [ null 150.0 250.0 350.0 450.0 ]
rolling_mean( window_size: int, weights: list_[float] | None = None, *, min_samples: int | None = None, center: bool = False, ) → Series-
Вычисляет скользящее среднее на основе другого Series.
Предупреждение
Эта функция считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений несовместимыми.
Для столбца
byсо значениями<t_0, t_1, ..., t_n>параметрclosed="right"(значение по умолчанию) означает, что окна будут следующими:- (t_0 - window_size, t_0]
- (t_1 - window_size, t_1]
- …
- (t_n - window_size, t_n]
- Параметры:
-
- by
-
Должен иметь тип данных
DateTime,Date,UInt64,UInt32,Int64илиInt32(обратите внимание: для целочисленных типов требуется использовать'i'вwindow size). - window_size
-
Длина окна. Может задаваться как динамический временной интервал с помощью timedelta или строки следующего формата:
- 1ns (1 наносекунда)
- 1us (1 микросекунда)
- 1ms (1 миллисекунда)
- 1s (1 секунда)
- 1m (1 минута)
- 1h (1 час)
- 1d (1 календарный день)
- 1w (1 календарная неделя)
- 1mo (1 календарный месяц)
- 1q (1 календарный квартал)
- 1y (1 календарный год)
- 1i (1 значение индекса)
Под «календарным днем» подразумевается то же время следующего дня (из-за перехода на летнее время он может длиться не 24 часа; в неоднозначных случаях мы следуем RFC-5545 и сохраняем исходный DST fold даты и времени). Аналогично трактуются «календарная неделя», «календарный месяц», «календарный квартал» и «календарный год».
- min_samples
-
Количество значений в окне, которые должны быть ненулевыми для вычисления результата.
-
closed{‘left’, ‘right’, ‘both’, ‘none’} -
Задает, какие границы временного интервала включены; по умолчанию используется
'right'.
Примечания
Если требуется вычислить несколько статистик агрегации для одного динамического окна, рассмотрите возможность использования
rolling— этот метод может кэшировать вычисление размера окна.Примеры
Создайте Series со значениями индекса строк
>>> from datetime import timedelta, datetime >>> start = datetime(2001, 1, 1) >>> stop = datetime(2001, 1, 2) >>> s = pl.Series("index", range(25)) >>> s shape: (25,) Series: 'index' [i64] [ 0 1 2 3 4 … 20 21 22 23 24 ]Создайте другой Series для применения маски окна:
>>> d = pl.Series("date", pl.datetime_range(start, stop, "1h", eager=True)) >>> d shape: (25,) Series: 'date' [datetime[μs]] [ 2001-01-01 00:00:00 2001-01-01 01:00:00 2001-01-01 02:00:00 2001-01-01 03:00:00 2001-01-01 04:00:00 … 2001-01-01 20:00:00 2001-01-01 21:00:00 2001-01-01 22:00:00 2001-01-01 23:00:00 2001-01-02 00:00:00 ]Вычислите скользящее среднее с временными окнами из второго Series, включающими правую границу:
>>> s.rolling_mean_by(d, "3h") shape: (25,) Series: 'index' [f64] [ 0.0 0.5 1.0 2.0 3.0 … 19.0 20.0 21.0 22.0 23.0 ]
rolling_mean_by( by: IntoExpr, window_size: timedelta | str_, *, min_samples: int = 1, closed: ClosedInterval = 'right', ) → Self-
Вычисляет скользящую медиану.
Предупреждение
Эта функция считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений несовместимыми.
Окно для данной строки включает саму строку и
window_size - 1предшествующих ей элементов.Изменено в версии 1.21.0: Параметр
min_periodsпереименован вmin_samples.- Параметры:
-
- window_size
-
Длина окна в количестве элементов.
- weights
-
Необязательный срез той же длины, что и окно, который поэлементно умножается на значения в окне.
- min_samples
-
Количество значений в окне, которые должны быть ненулевыми для вычисления результата. Если задано значение
None(по умолчанию), оно будет равноwindow_size. - center
-
Размещает метки в центре окна.
Примеры
>>> s = pl.Series("a", [1.0, 2.0, 3.0, 4.0, 6.0, 8.0]) >>> s.rolling_median(window_size=3) shape: (6,) Series: 'a' [f64] [ null null 2.0 3.0 4.0 6.0 ]
rolling_median( window_size: int, weights: list_[float] | None = None, *, min_samples: int | None = None, center: bool = False, ) → Series-
Вычисляет скользящую медиану на основе другого Series.
Предупреждение
Эта функция считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений несовместимыми.
Для столбца
byсо значениями<t_0, t_1, ..., t_n>параметрclosed="right"(значение по умолчанию) означает, что окна будут следующими:- (t_0 - window_size, t_0]
- (t_1 - window_size, t_1]
- …
- (t_n - window_size, t_n]
- Параметры:
-
- by
-
Должен иметь тип данных
DateTime,Date,UInt64,UInt32,Int64илиInt32(обратите внимание: для целочисленных типов требуется использовать'i'вwindow size). - window_size
-
Длина окна. Может задаваться как динамический временной интервал с помощью timedelta или строки следующего формата:
- 1ns (1 наносекунда)
- 1us (1 микросекунда)
- 1ms (1 миллисекунда)
- 1s (1 секунда)
- 1m (1 минута)
- 1h (1 час)
- 1d (1 календарный день)
- 1w (1 календарная неделя)
- 1mo (1 календарный месяц)
- 1q (1 календарный квартал)
- 1y (1 календарный год)
- 1i (1 значение индекса)
Под «календарным днем» подразумевается то же время следующего дня (из-за перехода на летнее время он может длиться не 24 часа; в неоднозначных случаях мы следуем RFC-5545 и сохраняем исходный DST fold даты и времени). Аналогично трактуются «календарная неделя», «календарный месяц», «календарный квартал» и «календарный год».
- min_samples
-
Количество значений в окне, которые должны быть ненулевыми для вычисления результата.
-
closed{‘left’, ‘right’, ‘both’, ‘none’} -
Задает, какие границы временного интервала включены; по умолчанию используется
'right'.
Примечания
Если требуется вычислить несколько статистик агрегации для одного динамического окна, рассмотрите возможность использования
rolling— этот метод может кэшировать вычисление размера окна.Примеры
Создайте Series со значениями индекса строк
>>> from datetime import timedelta, datetime >>> start = datetime(2001, 1, 1) >>> stop = datetime(2001, 1, 2) >>> s = pl.Series("index", range(25)) >>> s shape: (25,) Series: 'index' [i64] [ 0 1 2 3 4 … 20 21 22 23 24 ]Создайте другой Series для применения маски окна:
>>> d = pl.Series("date", pl.datetime_range(start, stop, "1h", eager=True)) >>> d shape: (25,) Series: 'date' [datetime[μs]] [ 2001-01-01 00:00:00 2001-01-01 01:00:00 2001-01-01 02:00:00 2001-01-01 03:00:00 2001-01-01 04:00:00 … 2001-01-01 20:00:00 2001-01-01 21:00:00 2001-01-01 22:00:00 2001-01-01 23:00:00 2001-01-02 00:00:00 ]Вычислите скользящую медиану с временными окнами из второго Series, включающими правую границу:
>>> s.rolling_median_by(d, "3h") shape: (25,) Series: 'index' [f64] [ 0.0 0.5 1.0 2.0 3.0 … 19.0 20.0 21.0 22.0 23.0 ]
rolling_median_by( by: IntoExpr, window_size: timedelta | str_, *, min_samples: int = 1, closed: ClosedInterval = 'right', ) → Self-
Применяет скользящий минимум к значениям этого массива.
По массиву проходит окно длиной
window_size. Значения, попавшие в это окно, при необходимости умножаются на веса, заданные векторомweight. Для полученных значений вычисляется минимум.Окно для данной строки включает саму строку и
window_size - 1предшествующих ей элементов.Изменено в версии 1.21.0: Параметр
min_periodsпереименован вmin_samples.- Параметры:
-
- window_size
-
Длина окна в количестве элементов.
- weights
-
Необязательный срез той же длины, что и окно, который поэлементно умножается на значения в окне.
- min_samples
-
Количество значений в окне, которые должны быть ненулевыми для вычисления результата. Если задано значение
None(по умолчанию), оно будет равноwindow_size. - center
-
Размещает метки в центре окна.
Примеры
>>> s = pl.Series("a", [100, 200, 300, 400, 500]) >>> s.rolling_min(window_size=3) shape: (5,) Series: 'a' [i64] [ null null 100 200 300 ]
rolling_min( window_size: int, weights: list_[float] | None = None, *, min_samples: int | None = None, center: bool = False, ) → Series-
Вычисляет скользящий минимум на основе другого Series.
Предупреждение
Эта функция считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений несовместимыми.
Для столбца
byсо значениями<t_0, t_1, ..., t_n>параметрclosed="right"(значение по умолчанию) означает, что окна будут следующими:- (t_0 - window_size, t_0]
- (t_1 - window_size, t_1]
- …
- (t_n - window_size, t_n]
- Параметры:
-
- by
-
Должен иметь тип данных
DateTime,Date,UInt64,UInt32,Int64илиInt32(обратите внимание: для целочисленных типов требуется использовать'i'вwindow size). - window_size
-
Длина окна. Может задаваться как динамический временной интервал с помощью timedelta или строки следующего формата:
- 1ns (1 наносекунда)
- 1us (1 микросекунда)
- 1ms (1 миллисекунда)
- 1s (1 секунда)
- 1m (1 минута)
- 1h (1 час)
- 1d (1 календарный день)
- 1w (1 календарная неделя)
- 1mo (1 календарный месяц)
- 1q (1 календарный квартал)
- 1y (1 календарный год)
- 1i (1 значение индекса)
Под «календарным днем» подразумевается то же время следующего дня (из-за перехода на летнее время он может длиться не 24 часа; в неоднозначных случаях мы следуем RFC-5545 и сохраняем исходный DST fold даты и времени). Аналогично трактуются «календарная неделя», «календарный месяц», «календарный квартал» и «календарный год».
- min_samples
-
Количество значений в окне, которые должны быть ненулевыми для вычисления результата.
-
closed{‘left’, ‘right’, ‘both’, ‘none’} -
Задает, какие границы временного интервала включены; по умолчанию используется
'right'.
Примечания
Если требуется вычислить несколько статистик агрегации для одного динамического окна, рассмотрите возможность использования
rolling— этот метод может кэшировать вычисление размера окна.Примеры
Создайте Series со значениями индекса строк
>>> from datetime import timedelta, datetime >>> start = datetime(2001, 1, 1) >>> stop = datetime(2001, 1, 2) >>> s = pl.Series("index", range(25)) >>> s shape: (25,) Series: 'index' [i64] [ 0 1 2 3 4 … 20 21 22 23 24 ]Создайте другой Series для применения маски окна:
>>> d = pl.Series("date", pl.datetime_range(start, stop, "1h", eager=True)) >>> d shape: (25,) Series: 'date' [datetime[μs]] [ 2001-01-01 00:00:00 2001-01-01 01:00:00 2001-01-01 02:00:00 2001-01-01 03:00:00 2001-01-01 04:00:00 … 2001-01-01 20:00:00 2001-01-01 21:00:00 2001-01-01 22:00:00 2001-01-01 23:00:00 2001-01-02 00:00:00 ]Вычислите скользящий минимум с временными окнами из второго Series, включающими правую границу:
>>> s.rolling_min_by(d, "3h") shape: (25,) Series: 'index' [i64] [ 0 0 0 1 2 … 18 19 20 21 22 ]
rolling_min_by( by: IntoExpr, window_size: timedelta | str_, *, min_samples: int = 1, closed: ClosedInterval = 'right', ) → Self-
Вычисляет скользящий квантиль.
Окно для данной строки включает саму строку и
window_size - 1предшествующих ей элементов.Предупреждение
Эта функция считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений несовместимыми.
Изменено в версии 1.21.0: Параметр
min_periodsпереименован вmin_samples.- Параметры:
-
- quantile
-
Квантиль в диапазоне от 0.0 до 1.0.
-
interpolation{‘nearest’, ‘higher’, ‘lower’, ‘midpoint’, ‘linear’, ‘equiprobable’} -
Метод интерполяции.
- window_size
-
Длина окна в количестве элементов.
- weights
-
Необязательный срез той же длины, что и окно, который поэлементно умножается на значения в окне.
- min_samples
-
Количество значений в окне, которые должны быть ненулевыми для вычисления результата. Если задано значение
None(по умолчанию), оно будет равноwindow_size. - center
-
Размещает метки в центре окна.
Примеры
>>> s = pl.Series("a", [1.0, 2.0, 3.0, 4.0, 6.0, 8.0]) >>> s.rolling_quantile(quantile=0.33, window_size=3) shape: (6,) Series: 'a' [f64] [ null null 2.0 3.0 4.0 6.0 ] >>> s.rolling_quantile(quantile=0.33, interpolation="linear", window_size=3) shape: (6,) Series: 'a' [f64] [ null null 1.66 2.66 3.66 5.32 ]
rolling_quantile( quantile: float, interpolation: QuantileMethod = 'nearest', window_size: int = 2, weights: list_[float] | None = None, *, min_samples: int | None = None, center: bool = False, ) → Series-
-
Вычисляет скользящий квантиль на основе другого ряда.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без того, чтобы это считалось нарушающим обратную совместимость изменением.
Для столбца
byтипа<t_0, t_1, ..., t_n>значениеclosed="right"(по умолчанию) означает, что окна будут следующими:- (t_0 - window_size, t_0]
- (t_1 - window_size, t_1]
- …
- (t_n - window_size, t_n]
- Параметры:
-
- by
-
Должен иметь тип данных
DateTime,Date,UInt64,UInt32,Int64илиInt32(обратите внимание, что для целочисленных типов необходимо использовать'i'вwindow size). - quantile
-
Квантиль в диапазоне от 0,0 до 1,0.
-
interpolation{‘nearest’, ‘higher’, ‘lower’, ‘midpoint’, ‘linear’, ‘equiprobable’} -
Метод интерполяции.
- window_size
-
Длина окна. Может быть динамическим временным интервалом, заданным объектом timedelta, или строкой в следующем формате:
- 1ns (1 наносекунда)
- 1us (1 микросекунда)
- 1ms (1 миллисекунда)
- 1s (1 секунда)
- 1m (1 минута)
- 1h (1 час)
- 1d (1 календарный день)
- 1w (1 календарная неделя)
- 1mo (1 календарный месяц)
- 1q (1 календарный квартал)
- 1y (1 календарный год)
- 1i (1 индексное значение)
Под «календарным днём» понимается соответствующее время следующего дня (из-за перехода на летнее время это может быть не ровно 24 часа; в неоднозначных случаях мы следуем RFC-5545 и сохраняем смещение DST исходной даты и времени). То же относится к «календарной неделе», «календарному месяцу», «календарному кварталу» и «календарному году».
- min_samples
-
Количество значений в окне, которые должны быть не null, прежде чем будет вычислен результат.
-
closed{‘left’, ‘right’, ‘both’, ‘none’} -
Определяет, какие границы временного интервала включаются; по умолчанию используется
'right'.
Примечания
Если нужно вычислить несколько агрегатных статистик для одного и того же динамического окна, рассмотрите возможность использовать
rolling— этот метод может кэшировать вычисление размера окна.Примеры
Создайте ряд со значением индекса строки
>>> from datetime import timedelta, datetime >>> start = datetime(2001, 1, 1) >>> stop = datetime(2001, 1, 2) >>> s = pl.Series("index", range(25)) >>> s shape: (25,) Series: 'index' [i64] [ 0 1 2 3 4 … 20 21 22 23 24 ]Создайте другой ряд для применения маски окна:
>>> d = pl.Series("date", pl.datetime_range(start, stop, "1h", eager=True)) >>> d shape: (25,) Series: 'date' [datetime[μs]] [ 2001-01-01 00:00:00 2001-01-01 01:00:00 2001-01-01 02:00:00 2001-01-01 03:00:00 2001-01-01 04:00:00 … 2001-01-01 20:00:00 2001-01-01 21:00:00 2001-01-01 22:00:00 2001-01-01 23:00:00 2001-01-02 00:00:00 ]Вычислите скользящий квантиль с временными окнами из второго ряда, закрытыми справа:
>>> s.rolling_quantile_by(d, "3h", quantile=0.5) shape: (25,) Series: 'index' [f64] [ 0.0 1.0 1.0 2.0 3.0 … 19.0 20.0 21.0 22.0 23.0 ]
rolling_quantile_by( by: IntoExpr, window_size: timedelta | str_, *, quantile: float, interpolation: QuantileMethod = 'nearest', min_samples: int = 1, closed: ClosedInterval = 'right', ) → Self-
Вычисляет скользящий ранг.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без того, чтобы это считалось нарушающим обратную совместимость изменением.
По массиву проходит окно длины
window_size. Значения внутри окна ранжируются согласно параметруmethod. Результирующие значения представляют собой ранг значения, расположенного в конце скользящего окна.- Параметры:
-
- window_size
-
Целочисленный размер скользящего окна.
-
method{‘average’, ‘min’, ‘max’, ‘dense’, ‘random’} -
Метод присвоения рангов связанным элементам. Доступны следующие методы (по умолчанию — ‘average’):
- ‘average’ : Каждому значению присваивается среднее значение рангов, которые были бы присвоены всем связанным значениям.
- ‘min’ : Каждому значению присваивается минимальное значение рангов, которые были бы присвоены всем связанным значениям. (Этот метод также называют ранжированием по принципу «соревнования».)
- ‘max’ : Каждому значению присваивается максимальное значение рангов, которые были бы присвоены всем связанным значениям.
- ‘dense’ : Аналогично ‘min’, но следующему по величине элементу присваивается ранг, непосредственно следующий за рангами связанных элементов.
- ‘random’ : Выбирает случайный ранг для каждого связанного значения.
- seed
-
Начальное значение генератора случайных чисел, используемое при
method='random'. Если задано None (по умолчанию), для каждой операции скользящего ранжирования генерируется случайное начальное значение. - min_samples
-
Количество значений в окне, которые должны быть не null, прежде чем будет вычислен результат. Если задано
None(по умолчанию), значение будет равноwindow_size. - center
-
Размещает метки в центре окна.
- Возвращает:
-
- Series
-
Ряд с данными типа
Float64, еслиmethodравно"average", иначе — с размером индекса (см.get_index_type()).
Примеры
>>> pl.Series([1, 4, 4, 1, 9]).rolling_rank(3, method="average") shape: (5,) Series: '' [f64] [ null null 2.5 1.0 3.0 ]
rolling_rank( window_size: int, method: RankMethod = 'average', *, seed: int | None = None, min_samples: int | None = None, center: bool = False, ) → Series-
Вычисляет скользящий ранг на основе другого столбца.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без того, чтобы это считалось нарушающим обратную совместимость изменением.
Для столбца
byтипа<t_0, t_1, ..., t_n>значениеclosed="right"(по умолчанию) означает, что окна будут следующими:- (t_0 - window_size, t_0]
- (t_1 - window_size, t_1]
- …
- (t_n - window_size, t_n]
- Параметры:
-
- by
-
Должен иметь тип данных
DateTime,Date,UInt64,UInt32,Int64илиInt32(обратите внимание, что для целочисленных типов необходимо использовать'i'вwindow size). - window_size
-
Длина окна. Может быть динамическим временным интервалом, заданным объектом timedelta, или строкой в следующем формате:
- 1ns (1 наносекунда)
- 1us (1 микросекунда)
- 1ms (1 миллисекунда)
- 1s (1 секунда)
- 1m (1 минута)
- 1h (1 час)
- 1d (1 календарный день)
- 1w (1 календарная неделя)
- 1mo (1 календарный месяц)
- 1q (1 календарный квартал)
- 1y (1 календарный год)
- 1i (1 индексное значение)
Под «календарным днём» понимается соответствующее время следующего дня (из-за перехода на летнее время это может быть не ровно 24 часа; в неоднозначных случаях мы следуем RFC-5545 и сохраняем смещение DST исходной даты и времени). То же относится к «календарной неделе», «календарному месяцу», «календарному кварталу» и «календарному году».
-
method{‘average’, ‘min’, ‘max’, ‘dense’, ‘random’} -
Метод присвоения рангов связанным элементам. Доступны следующие методы (по умолчанию — ‘average’):
- ‘average’ : Каждому значению присваивается среднее значение рангов, которые были бы присвоены всем связанным значениям.
- ‘min’ : Каждому значению присваивается минимальное значение рангов, которые были бы присвоены всем связанным значениям. (Этот метод также называют ранжированием по принципу «соревнования».)
- ‘max’ : Каждому значению присваивается максимальное значение рангов, которые были бы присвоены всем связанным значениям.
- ‘dense’ : Аналогично ‘min’, но следующему по величине элементу присваивается ранг, непосредственно следующий за рангами связанных элементов.
- ‘random’ : Выбирает случайный ранг для каждого связанного значения.
- seed
-
Начальное значение генератора случайных чисел, используемое при
method='random'. Если задано None (по умолчанию), для каждой операции скользящего ранжирования генерируется случайное начальное значение. - min_samples
-
Количество значений в окне, которые должны быть не null, прежде чем будет вычислен результат.
-
closed{‘left’, ‘right’, ‘both’, ‘none’} -
Определяет, какие границы временного интервала включаются; по умолчанию используется
'right'.
- Возвращает:
-
- Series
-
Ряд с данными типа
Float64, еслиmethodравно"average", иначе — с размером индекса (см.get_index_type()).
rolling_rank_by( by: IntoExpr, window_size: timedelta | str_, method: RankMethod = 'average', *, seed: int | None = None, min_samples: int = 1, closed: ClosedInterval = 'right', ) → Series-
Вычисляет скользящую асимметрию.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без того, чтобы это считалось нарушающим обратную совместимость изменением.
Окно для заданной строки включает саму строку и
window_size - 1предшествующих элементов.- Параметры:
-
- window_size
-
Целочисленный размер скользящего окна.
- bias
-
Если False, вычисления корректируются с учётом статистического смещения.
- min_samples
-
Количество значений в окне, которые должны быть не null, прежде чем будет вычислен результат. Если задано
None(по умолчанию), значение будет равноwindow_size. - center
-
Размещает метки в центре окна.
См. также
Примеры
>>> pl.Series([1, 4, 2, 9]).rolling_skew(3) shape: (4,) Series: '' [f64] [ null null 0.381802 0.47033 ]Обратите внимание, что значения совпадают
>>> pl.Series([1, 4, 2]).skew(), pl.Series([4, 2, 9]).skew() (0.38180177416060584, 0.47033046033698594)
rolling_skew( window_size: int, *, bias: bool = True, min_samples: int | None = None, center: bool = False, ) → Series-
Вычисляет скользящее стандартное отклонение.
По массиву проходит окно длины
window_size. Значения внутри окна (необязательно) умножаются на веса, заданные векторомweight. Для полученных значений вычисляется стандартное отклонение.Окно для заданной строки включает саму строку и
window_size - 1предшествующих элементов.Изменено в версии 1.21.0: Параметр
min_periodsпереименован вmin_samples.- Параметры:
-
- window_size
-
Длина окна в количестве элементов.
- weights
-
Необязательный срез той же длины, что и окно; он поэлементно умножается на значения в окне.
- min_samples
-
Количество значений в окне, которые должны быть не null, прежде чем будет вычислен результат. Если задано
None(по умолчанию), значение будет равноwindow_size. - center
-
Размещает метки в центре окна.
- ddof
-
«Поправка на число степеней свободы»: делитель для окна длины N равен N - ddof
Примеры
>>> s = pl.Series("a", [1.0, 2.0, 3.0, 4.0, 6.0, 8.0]) >>> s.rolling_std(window_size=3) shape: (6,) Series: 'a' [f64] [ null null 1.0 1.0 1.527525 2.0 ]
rolling_std( window_size: int, weights: list_[float] | None = None, *, min_samples: int | None = None, center: bool = False, ddof: int = 1, ) → Series-
Вычисляет скользящее стандартное отклонение на основе другого ряда.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без того, чтобы это считалось нарушающим обратную совместимость изменением.
Для столбца
byтипа<t_0, t_1, ..., t_n>значениеclosed="right"(по умолчанию) означает, что окна будут следующими:- (t_0 - window_size, t_0]
- (t_1 - window_size, t_1]
- …
- (t_n - window_size, t_n]
- Параметры:
-
- by
-
Должен иметь тип данных
DateTime,Date,UInt64,UInt32,Int64илиInt32(обратите внимание, что для целочисленных типов необходимо использовать'i'вwindow size). - window_size
-
Длина окна. Может быть динамическим временным интервалом, заданным объектом timedelta, или строкой в следующем формате:
- 1ns (1 наносекунда)
- 1us (1 микросекунда)
- 1ms (1 миллисекунда)
- 1s (1 секунда)
- 1m (1 минута)
- 1h (1 час)
- 1d (1 календарный день)
- 1w (1 календарная неделя)
- 1mo (1 календарный месяц)
- 1q (1 календарный квартал)
- 1y (1 календарный год)
- 1i (1 индексное значение)
Под «календарным днём» понимается соответствующее время следующего дня (из-за перехода на летнее время это может быть не ровно 24 часа; в неоднозначных случаях мы следуем RFC-5545 и сохраняем смещение DST исходной даты и времени). То же относится к «календарной неделе», «календарному месяцу», «календарному кварталу» и «календарному году».
- min_samples
-
Количество значений в окне, которые должны быть не null, прежде чем будет вычислен результат.
-
closed{‘left’, ‘right’, ‘both’, ‘none’} -
Определяет, какие границы временного интервала включаются; по умолчанию используется
'right'. - ddof
-
«Поправка на число степеней свободы»: делитель для окна длины N равен N - ddof
Примечания
Если нужно вычислить несколько агрегатных статистик для одного и того же динамического окна, рассмотрите возможность использовать
rolling— этот метод может кэшировать вычисление размера окна.Примеры
Создайте ряд со значением индекса строки
>>> from datetime import timedelta, datetime >>> start = datetime(2001, 1, 1) >>> stop = datetime(2001, 1, 2) >>> s = pl.Series("index", range(25)) >>> s shape: (25,) Series: 'index' [i64] [ 0 1 2 3 4 … 20 21 22 23 24 ]Создайте другой ряд для применения маски окна:
>>> d = pl.Series("date", pl.datetime_range(start, stop, "1h", eager=True)) >>> d shape: (25,) Series: 'date' [datetime[μs]] [ 2001-01-01 00:00:00 2001-01-01 01:00:00 2001-01-01 02:00:00 2001-01-01 03:00:00 2001-01-01 04:00:00 … 2001-01-01 20:00:00 2001-01-01 21:00:00 2001-01-01 22:00:00 2001-01-01 23:00:00 2001-01-02 00:00:00 ]Вычислите скользящее стандартное отклонение с временными окнами из второго ряда, закрытыми справа:
>>> s.rolling_std_by(d, "3h") shape: (25,) Series: 'index' [f64] [ null 0.707107 1.0 1.0 1.0 … 1.0 1.0 1.0 1.0 1.0 ]
rolling_std_by( by: IntoExpr, window_size: timedelta | str_, *, min_samples: int = 1, closed: ClosedInterval = 'right', ddof: int = 1, ) → Self-
Вычисляет скользящую сумму (скользящую сумму) значений этого массива.
По массиву проходит окно длины
window_size. Значения внутри окна (необязательно) умножаются на веса, заданные векторомweight. Для полученных значений вычисляется сумма.Окно для заданной строки включает саму строку и
window_size - 1предшествующих элементов.Изменено в версии 1.21.0: Параметр
min_periodsпереименован вmin_samples.- Параметры:
-
- window_size
-
Длина окна в количестве элементов.
- weights
-
Необязательный срез той же длины, что и окно; он поэлементно умножается на значения в окне.
- min_samples
-
Количество значений в окне, которые должны быть не null, прежде чем будет вычислен результат. Если задано
None(по умолчанию), значение будет равноwindow_size. - center
-
Размещает метки в центре окна.
Примеры
>>> s = pl.Series("a", [1, 2, 3, 4, 5]) >>> s.rolling_sum(window_size=2) shape: (5,) Series: 'a' [i64] [ null 3 5 7 9 ]
rolling_sum( window_size: int, weights: list_[float] | None = None, *, min_samples: int | None = None, center: bool = False, ) → Series-
Вычисляет скользящую сумму на основе другого ряда.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без того, чтобы это считалось нарушающим обратную совместимость изменением.
Для столбца
byтипа<t_0, t_1, ..., t_n>значениеclosed="right"(по умолчанию) означает, что окна будут следующими:- (t_0 - window_size, t_0]
- (t_1 - window_size, t_1]
- …
- (t_n - window_size, t_n]
- Параметры:
-
- window_size
-
Длина окна. Может быть динамическим временным интервалом, заданным объектом timedelta, или строкой в следующем формате:
- 1ns (1 наносекунда)
- 1us (1 микросекунда)
- 1ms (1 миллисекунда)
- 1s (1 секунда)
- 1m (1 минута)
- 1h (1 час)
- 1d (1 календарный день)
- 1w (1 календарная неделя)
- 1mo (1 календарный месяц)
- 1q (1 календарный квартал)
- 1y (1 календарный год)
- 1i (1 индексное значение)
Под «календарным днём» понимается соответствующее время следующего дня (из-за перехода на летнее время это может быть не ровно 24 часа; в неоднозначных случаях мы следуем RFC-5545 и сохраняем смещение DST исходной даты и времени). То же относится к «календарной неделе», «календарному месяцу», «календарному кварталу» и «календарному году».
- min_samples
-
Количество значений в окне, которые должны быть не null, прежде чем будет вычислен результат.
- by
-
Должен иметь тип данных
DateTime,Date,UInt64,UInt32,Int64илиInt32(обратите внимание, что для целочисленных типов необходимо использовать'i'вwindow size). -
closed{‘left’, ‘right’, ‘both’, ‘none’} -
Определяет, какие границы временного интервала включаются; по умолчанию используется
'right'.
Примечания
Если нужно вычислить несколько агрегатных статистик для одного и того же динамического окна, рассмотрите возможность использовать
rolling— этот метод может кэшировать вычисление размера окна.Примеры
Создайте ряд со значением индекса строки
>>> from datetime import timedelta, datetime >>> start = datetime(2001, 1, 1) >>> stop = datetime(2001, 1, 2) >>> s = pl.Series("index", range(25)) >>> s shape: (25,) Series: 'index' [i64] [ 0 1 2 3 4 … 20 21 22 23 24 ]Создайте другой ряд для применения маски окна:
>>> d = pl.Series("date", pl.datetime_range(start, stop, "1h", eager=True)) >>> d shape: (25,) Series: 'date' [datetime[μs]] [ 2001-01-01 00:00:00 2001-01-01 01:00:00 2001-01-01 02:00:00 2001-01-01 03:00:00 2001-01-01 04:00:00 … 2001-01-01 20:00:00 2001-01-01 21:00:00 2001-01-01 22:00:00 2001-01-01 23:00:00 2001-01-02 00:00:00 ]Вычислите скользящее среднее с временными окнами из второго ряда, закрытыми справа:
>>> s.rolling_sum_by(d, "3h") shape: (25,) Series: 'index' [i64] [ 0 1 3 6 9 … 57 60 63 66 69 ]
rolling_sum_by( by: IntoExpr, window_size: timedelta | str_, *, min_samples: int = 0, closed: ClosedInterval = 'right', ) → Self-
Вычисляет скользящую дисперсию.
По массиву проходит окно длины
window_size. Значения внутри окна (необязательно) умножаются на веса, заданные векторомweight. Для полученных значений вычисляется дисперсия.Окно для заданной строки включает саму строку и
window_size - 1предшествующих элементов.Изменено в версии 1.21.0: Параметр
min_periodsпереименован вmin_samples.- Параметры:
-
- window_size
-
Длина окна в количестве элементов.
- weights
-
Необязательный срез той же длины, что и окно; он поэлементно умножается на значения в окне.
- min_samples
-
Количество значений в окне, которые должны быть не null, прежде чем будет вычислен результат. Если задано
None(по умолчанию), значение будет равноwindow_size. - center
-
Размещает метки в центре окна.
- ddof
-
«Поправка на число степеней свободы»: делитель для окна длины N равен N - ddof
Примеры
>>> s = pl.Series("a", [1.0, 2.0, 3.0, 4.0, 6.0, 8.0]) >>> s.rolling_var(window_size=3) shape: (6,) Series: 'a' [f64] [ null null 1.0 1.0 2.333333 4.0 ]
rolling_var( window_size: int, weights: list_[float] | None = None, *, min_samples: int | None = None, center: bool = False, ddof: int = 1, ) → Series-
Вычисляет скользящую дисперсию на основе другого ряда.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без того, чтобы это считалось нарушающим обратную совместимость изменением.
Для столбца
byтипа<t_0, t_1, ..., t_n>значениеclosed="right"(по умолчанию) означает, что окна будут следующими:- (t_0 - window_size, t_0]
- (t_1 - window_size, t_1]
- …
- (t_n - window_size, t_n]
- Параметры:
-
- by
-
Должен иметь тип данных
DateTime,Date,UInt64,UInt32,Int64илиInt32(обратите внимание, что для целочисленных типов необходимо использовать'i'вwindow size). - window_size
-
Длина окна. Может быть динамическим временным интервалом, заданным объектом timedelta, или строкой в следующем формате:
- 1ns (1 наносекунда)
- 1us (1 микросекунда)
- 1ms (1 миллисекунда)
- 1s (1 секунда)
- 1m (1 минута)
- 1h (1 час)
- 1d (1 календарный день)
- 1w (1 календарная неделя)
- 1mo (1 календарный месяц)
- 1q (1 календарный квартал)
- 1y (1 календарный год)
- 1i (1 индексное значение)
Под «календарным днём» понимается соответствующее время следующего дня (из-за перехода на летнее время это может быть не ровно 24 часа; в неоднозначных случаях мы следуем RFC-5545 и сохраняем смещение DST исходной даты и времени). То же относится к «календарной неделе», «календарному месяцу», «календарному кварталу» и «календарному году».
- min_samples
-
Количество значений в окне, которые должны быть не null, прежде чем будет вычислен результат.
-
closed{‘left’, ‘right’, ‘both’, ‘none’} -
Определяет, какие границы временного интервала включаются; по умолчанию используется
'right'. - ddof
-
«Поправка на число степеней свободы»: делитель для окна длины N равен N - ddof
Примечания
Если нужно вычислить несколько агрегатных статистик для одного и того же динамического окна, рассмотрите возможность использовать
rolling— этот метод может кэшировать вычисление размера окна.Примеры
Создайте ряд со значением индекса строки
>>> from datetime import timedelta, datetime >>> start = datetime(2001, 1, 1) >>> stop = datetime(2001, 1, 2) >>> s = pl.Series("index", range(25)) >>> s shape: (25,) Series: 'index' [i64] [ 0 1 2 3 4 … 20 21 22 23 24 ]Создайте другой ряд для применения маски окна:
>>> d = pl.Series("date", pl.datetime_range(start, stop, "1h", eager=True)) >>> d shape: (25,) Series: 'date' [datetime[μs]] [ 2001-01-01 00:00:00 2001-01-01 01:00:00 2001-01-01 02:00:00 2001-01-01 03:00:00 2001-01-01 04:00:00 … 2001-01-01 20:00:00 2001-01-01 21:00:00 2001-01-01 22:00:00 2001-01-01 23:00:00 2001-01-02 00:00:00 ]Вычислите скользящее стандартное отклонение с временными окнами из второго ряда, закрытыми справа:
>>> s.rolling_std_by(d, "3h") shape: (25,) Series: 'index' [f64] [ null 0.707107 1.0 1.0 1.0 … 1.0 1.0 1.0 1.0 1.0 ]
rolling_var_by( by: IntoExpr, window_size: timedelta | str_, *, min_samples: int = 1, closed: ClosedInterval = 'right', ddof: int = 1, ) → Self-
Округляет исходные данные с плавающей точкой до
decimalsзнаков.- Параметры:
-
- decimals
-
Количество знаков после запятой, до которого выполняется округление.
-
mode{‘half_to_even’, ‘half_away_from_zero’, ‘to_zero’} -
Используемый способ округления. «Округлённое значение» — это значение, содержащее не более
decimalsзнаков после запятой (например, целые числа приdecimals=0, числа, кратные 0,1, приdecimals=1, числа, кратные 0,01, приdecimals=2и так далее).Способы, начинающиеся с
half_, округляют все значения до ближайшего округлённого значения и используют выбранный способ только для разрешения равенства, когда значение находится ровно посередине между двумя округлёнными значениями (например, 0,5 приdecimals=0, 0,05 приdecimals=1). Другие способы округления явно задают, какое округлённое значение выбрать, и применяются всегда, а не только при разрешении равенства.-
- half_to_even (по умолчанию)
-
Округление до ближайшего значения; при равенстве выбирается ближайшее чётное значение. Например, 0,5 округляется до 0, 1,5 — до 2, а 2,5 — до 2. Также известно как «банковское округление»; этот способ используется по умолчанию, поскольку он позволяет минимизировать накопление погрешности округления.
-
- half_away_from_zero
-
Округление до ближайшего значения; при равенстве округление выполняется от нуля. Например, 0,5 округляется до 1, -0,5 — до -1, а 2,5 — до 3. Также известно как «коммерческое округление».
-
- to_zero
-
Всегда округляет (усекает) к нулю, отбрасывая дробную часть после
decimals. Например, 0,9 округляется до 0, -0,9 — до 0, а 1,29 — до 1,2 (приdecimals=1). Эквивалентно методуtruncate().
-
Примеры
>>> s = pl.Series("a", [1.12345, 2.56789, 3.901234]) >>> s.round(2) shape: (3,) Series: 'a' [f64] [ 1.12 2.57 3.9 ]>>> s = pl.Series([-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5]) >>> s.round(mode="half_to_even") shape: (8,) Series: '' [f64] [ -4.0 -2.0 -2.0 -0.0 0.0 2.0 2.0 4.0 ]
round( decimals: int = 0, mode: RoundMode = 'half_to_even', ) → Series-
Округляет до заданного количества значащих цифр.
- Параметры:
-
- digits
-
Количество значащих цифр для округления.
Примеры
>>> s = pl.Series([0.01234, 3.333, 3450.0]) >>> s.round_sig_figs(2) shape: (3,) Series: '' [f64] [ 0.012 3.3 3500.0 ]
round_sig_figs( digits: int, ) → Series-
Выбирает выборку из этого ряда.
- Параметры:
-
- n
-
Количество элементов для возврата. Нельзя использовать вместе с
fraction. Еслиfractionравно None, по умолчанию используется 1. - fraction
-
Доля элементов для возврата. Нельзя использовать вместе с
n. - with_replacement
-
Разрешает выбирать одно и то же значение более одного раза.
- shuffle
-
Определяет порядок выбранных значений. Если True, выбранные значения явно перемешиваются. Если False, относительный порядок выбранных значений сохраняется (то есть они появляются в том же порядке, что и в исходном ряду). Если None (по умолчанию), порядок не гарантируется; используется наиболее производительный алгоритм.
- seed
-
Начальное значение генератора случайных чисел. Если задано None (по умолчанию), для каждой операции выборки генерируется случайное начальное значение.
Примеры
>>> s = pl.Series("a", [1, 2, 3, 4, 5]) >>> s.sample(2, shuffle=False, seed=0) shape: (2,) Series: 'a' [i64] [ 1 5 ]
sample( n: int | None = None, *, fraction: float | None = None, with_replacement: bool = False, shuffle: bool | None = None, seed: int | None = None, ) → Series-
Устанавливает значения в заданных позициях индекса.
- Параметры:
-
- indices
-
Целые числа, задающие позиции индекса.
- values
-
Значения для замены.
Примечания
Использование этой функции часто считается антипаттерном, поскольку она может препятствовать оптимизации (проталкиванию предикатов и т. д.). Вместо неё рассмотрите возможность использовать
pl.when(predicate).then(value).otherwise(self).Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.scatter(1, 10) shape: (3,) Series: 'a' [i64] [ 1 10 3 ]Лучше реализовать это следующим образом:
>>> s.to_frame().with_row_index().select( ... pl.when(pl.col("index") == 1).then(10).otherwise(pl.col("a")) ... ) shape: (3, 1) ┌─────────┐ │ literal │ │ --- │ │ i64 │ ╞═════════╡ │ 1 │ │ 10 │ │ 3 │ └─────────┘
scatter( indices: Series | Iterable[int] | int | np.ndarray[Any, Any], values: Series | Iterable[PythonLiteral] | PythonLiteral | None, ) → Series-
Находит индексы, в которые следует вставить элементы, чтобы сохранить порядок.
\[a[i-1] < v <= a[i]\]- Параметры:
-
- element
-
Выражение или скалярное значение.
-
side{‘any’, ‘left’, ‘right’} -
Если задано ‘any’, возвращается индекс первой найденной подходящей позиции. Если задано ‘left’, возвращается индекс самой левой подходящей позиции. Если задано ‘right’, возвращается индекс самой правой подходящей позиции.
- descending
-
Логическое значение, указывающее, отсортированы ли значения по убыванию (в любом случае требуется, чтобы они были отсортированы).
Примеры
>>> s = pl.Series("set", [1, 2, 3, 4, 4, 5, 6, 7]) >>> s.search_sorted(4) 3 >>> s.search_sorted(4, "left") 3 >>> s.search_sorted(4, "right") 5 >>> s.search_sorted([1, 4, 5]) shape: (3,) Series: 'set' [u32] [ 0 3 5 ] >>> s.search_sorted([1, 4, 5], "left") shape: (3,) Series: 'set' [u32] [ 0 3 5 ] >>> s.search_sorted([1, 4, 5], "right") shape: (3,) Series: 'set' [u32] [ 1 5 6 ]
search_sorted( element: IntoExpr | np.ndarray[Any, Any] | None, side: SearchSortedSide = 'any', *, descending: bool = False, ) → int | Series-
Задаёт значения для элементов, отмеченных маской.
- Параметры:
-
- filter
-
Логическая маска.
- value
-
Значение, которым будут заменены элементы, отмеченные маской.
Примечания
Использование этой функции часто считается антипаттерном, поскольку она может препятствовать оптимизации (проталкиванию предикатов и т. д.). Вместо неё рассмотрите возможность использовать
pl.when(predicate).then(value).otherwise(self).Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.set(s == 2, 10) shape: (3,) Series: 'a' [i64] [ 1 10 3 ]Лучше реализовать это следующим образом:
>>> s.to_frame().select( ... pl.when(pl.col("a") == 2).then(10).otherwise(pl.col("a")) ... ) shape: (3, 1) ┌─────────┐ │ literal │ │ --- │ │ i64 │ ╞═════════╡ │ 1 │ │ 10 │ │ 3 │ └─────────┘
set( filter: Series, value: Any, ) → Series-
-
Помечает Series как «отсортированный».
Позволяет последующему коду использовать быстрые пути обработки отсортированных массивов.
- Параметры:
-
- descending
-
Если порядок
Seriesубывающий.
Предупреждение
Это может привести к неверным результатам, если этот
Seriesне отсортирован! Используйте с осторожностью!Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.set_sorted().max() 3
set_sorted( *, descending: bool = False, ) → Self-
Форма этой Series.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.shape (3,)
property shape: tuple[int]
-
Сдвигает значения на заданное количество индексов.
- Параметры:
-
- n
-
Количество индексов для сдвига вперёд. Если передано отрицательное значение, значения сдвигаются в противоположном направлении.
- fill_value
-
Заполняет полученные нулевые значения этим значением. Принимает скалярное выражение. Входные данные, не являющиеся выражениями, интерпретируются как литералы.
Примечания
Этот метод похож на операцию
LAGв SQL, когда значениеnположительно. При отрицательном значенииnон похож наLEAD.Примеры
По умолчанию значения сдвигаются вперёд на один индекс.
>>> s = pl.Series([1, 2, 3, 4]) >>> s.shift() shape: (4,) Series: '' [i64] [ null 1 2 3 ]Передайте отрицательное значение, чтобы сдвинуть значения в противоположном направлении.
>>> s.shift(-2) shape: (4,) Series: '' [i64] [ 3 4 null null ]Укажите
fill_value, чтобы заполнить полученные нулевые значения.>>> s.shift(-2, fill_value=100) shape: (4,) Series: '' [i64] [ 3 4 100 100 ]
shift( n: int = 1, *, fill_value: IntoExpr | None = None, ) → Series-
Уменьшает разрядность числовых столбцов до минимально необходимого типа данных.
Уменьшает разрядность до типа данных, необходимого для представления экстремальных значений этой [
Series]. Это помогает снизить нагрузку на память.Примеры
>>> s = pl.Series("a", [1, 2, 3, 4, 5, 6]) >>> s shape: (6,) Series: 'a' [i64] [ 1 2 3 4 5 6 ] >>> s.shrink_dtype() shape: (6,) Series: 'a' [i8] [ 1 2 3 4 5 6 ]
shrink_dtype() → Series
-
Уменьшает использование памяти Series.
Уменьшает ёмкость базового массива ровно до размера, необходимого для хранения фактических данных. (Обратите внимание, что эта функция не изменяет тип данных Series.)
shrink_to_fit( *, in_place: bool = False, ) → Series-
Перемешивает содержимое этой Series.
- Параметры:
-
- seed
-
Начальное значение генератора случайных чисел. Если задано None (по умолчанию), при каждом вызове перемешивания генерируется случайное начальное значение.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.shuffle(seed=1) shape: (3,) Series: 'a' [i64] [ 2 3 1 ]
shuffle( seed: int | None = None, ) → Series-
Вычисляет поэлементную функцию знака для числовых типов.
Возвращаемое значение вычисляется следующим образом:
- -1, если x < 0.
- 1, если x > 0.
- В противном случае x (обычно 0, но может быть NaN, если таково входное значение).
Нулевые значения сохраняются без изменений, тип данных входных значений также сохраняется.
Примеры
>>> s = pl.Series("a", [-9.0, -0.0, 0.0, 4.0, float("nan"), None]) >>> s.sign() shape: (6,) Series: 'a' [f64] [ -1.0 -0.0 0.0 1.0 NaN null ]
sign() → Series
-
Вычисляет поэлементное значение синуса.
Примечания
Входные значения интерпретируются как радианы. Чтобы преобразовать градусы в радианы, вызовите
.radians().Примеры
>>> import math >>> s = pl.Series("a", [0.0, math.pi / 2.0, math.pi]) >>> s.sin() shape: (3,) Series: 'a' [f64] [ 0.0 1.0 1.2246e-16 ]
sin() → Series
-
Вычисляет поэлементное значение гиперболического синуса.
Примеры
>>> s = pl.Series("a", [1.0, 0.0, -1.0]) >>> s.sinh() shape: (3,) Series: 'a' [f64] [ 1.175201 0.0 -1.175201 ]
sinh() → Series
-
Вычисляет выборочную асимметрию набора данных.
Для нормально распределённых данных асимметрия должна быть близка к нулю. Для унимодальных непрерывных распределений значение асимметрии больше нуля означает, что большая часть веса распределения приходится на правый хвост. Функцию
skewtestможно использовать, чтобы статистически определить, достаточно ли близко значение асимметрии к нулю.Дополнительную информацию см. в scipy.stats.
- Параметры:
-
-
biasbool, optional -
Если False, вычисления корректируются с учётом статистического смещения.
-
Примечания
Выборочная асимметрия вычисляется как коэффициент асимметрии Фишера — Пирсона, то есть
\[g_1=\frac{m_3}{m_2^{3/2}}\]где
\[m_i=\frac{1}{N}\sum_{n=1}^N(x[n]-\bar{x})^i\]— смещённый центральный момент выборки \(i\texttt{th}\), а \(\bar{x}\) — выборочное среднее. Если
biasравно False, вычисления корректируются с учётом смещения, и вычисляется скорректированный стандартизованный моментный коэффициент Фишера — Пирсона, то есть\[G_1 = \frac{k_3}{k_2^{3/2}} = \frac{\sqrt{N(N-1)}}{N-2}\frac{m_3}{m_2^{3/2}}\]Примеры
>>> s = pl.Series([1, 2, 2, 4, 5]) >>> s.skew() 0.34776706224699483
skew( *, bias: bool = True, ) → float | None-
Возвращает срез этой Series.
- Параметры:
-
- offset
-
Начальный индекс. Поддерживается отрицательная индексация.
- length
-
Длина среза. Если задано значение
None, будут выбраны все строки, начиная с указанного смещения.
Примеры
>>> s = pl.Series("a", [1, 2, 3, 4]) >>> s.slice(1, 2) shape: (2,) Series: 'a' [i64] [ 2 3 ]
slice( offset: int, length: int | None = None, ) → Series-
Сортирует эту Series.
- Параметры:
-
- descending
-
Сортировать по убыванию.
- nulls_last
-
Помещать нулевые значения в конец, а не в начало.
- multithreaded
-
Выполнять сортировку с использованием нескольких потоков.
- in_place
-
Выполнять сортировку на месте.
Примеры
>>> s = pl.Series("a", [1, 3, 4, 2]) >>> s.sort() shape: (4,) Series: 'a' [i64] [ 1 2 3 4 ] >>> s.sort(descending=True) shape: (4,) Series: 'a' [i64] [ 4 3 2 1 ]
sort( *, descending: bool = False, nulls_last: bool = False, multithreaded: bool = True, in_place: bool = False, ) → Self-
Выполняет SQL-запрос к Series.
Добавлено в версии 1.37.0.
Предупреждение
Эта функциональность считается нестабильной, хотя она близка к тому, чтобы считаться стабильной. Она может быть изменена в любой момент без объявления таких изменений нарушающими обратную совместимость.
- Параметры:
-
- query
-
SQL-запрос для выполнения.
- table_name
-
Необязательное явное имя таблицы, представляющей текущий объект (по умолчанию «self»).
См. также
Примечания
- Вызываемая Series автоматически регистрируется в SQLContext как таблица с именем «self». Чтобы получить доступ к DataFrame, LazyFrame и другим Series из текущей области глобальных переменных, используйте
pl.sql. - Для управления регистрацией и выполнением используйте объект
SQLContext. - SQL-запрос выполняется в ленивом режиме, после чего результат собирается и возвращается как DataFrame.
- Для работы с SQL рекомендуется задать имя Series; в противном случае будет использовано имя по умолчанию (пустая строка). Хотя
""допустимо, это неудобно.
Примеры
>>> from datetime import date >>> s = pl.Series( ... name="dt", ... values=[date(1999, 12, 31), date(2099, 2, 14), date(2026, 3, 5)], ... )
Выполнение запроса к Series с помощью SQL:
>>> s.sql(''' ... SELECT ... EXTRACT('year',dt) AS y, ... EXTRACT('month',dt) AS m, ... EXTRACT('day',dt) AS d, ... FROM self ... WHERE dt > '2020-01-01' ... ORDER BY dt DESC ... ''') shape: (2, 3) ┌──────┬─────┬─────┐ │ y ┆ m ┆ d │ │ --- ┆ --- ┆ --- │ │ i32 ┆ i8 ┆ i8 │ ╞══════╪═════╪═════╡ │ 2099 ┆ 2 ┆ 14 │ │ 2026 ┆ 3 ┆ 5 │ └──────┴─────┴─────┘Можно обратиться к столбцу Series без имени, используя пустую строку по умолчанию, однако это не рекомендуется:
>>> s = pl.Series([1, 2, 3]) >>> s.sql('SELECT "" AS x, "" * 2 AS "2x" FROM self') shape: (3, 2) ┌─────┬─────┐ │ x ┆ 2x │ │ --- ┆ --- │ │ i64 ┆ i64 │ ╞═════╪═════╡ │ 1 ┆ 2 │ │ 2 ┆ 4 │ │ 3 ┆ 6 │ └─────┴─────┘
sql( query: str_, *, table_name: str_ = 'self', ) → DataFrame-
Вычисляет квадратный корень элементов.
Синтаксический сахар для
>>> pl.Series([1, 2]) ** 0.5 shape: (2,) Series: '' [f64] [ 1.0 1.414214 ]Примеры
>>> s = pl.Series([1, 2, 3]) >>> s.sqrt() shape: (3,) Series: '' [f64] [ 1.0 1.414214 1.732051 ]
sqrt() → Series
-
Возвращает стандартное отклонение этой Series.
- Параметры:
-
- ddof
-
«Поправка на число степеней свободы»: делитель в вычислении равен N - ddof, где N — количество элементов. По умолчанию ddof равен 1.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.std() 1.0
std( ddof: int = 1, ) → float | timedelta | None-
Сворачивает эту Series в сумму.
Примечания
- Типы данных из {Int8, UInt8, Int16, UInt16} перед суммированием преобразуются в Int64, чтобы избежать переполнения.
- Если нет ненулевых значений, результатом будет
0. Если нужно, чтобы пустые суммы возвращалиNone, используйтеs.sum() if s.count() else Noneвместоs.sum().
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.sum() 6
sum() → int | float | Decimal
-
Возвращает последние
nэлементов.- Параметры:
-
- n
-
Количество возвращаемых элементов. Если передано отрицательное значение, возвращаются все элементы, кроме первых
abs(n).
См. также
-
head,slice
Примеры
>>> s = pl.Series("a", [1, 2, 3, 4, 5]) >>> s.tail(3) shape: (3,) Series: 'a' [i64] [ 3 4 5 ]Передайте отрицательное значение, чтобы получить все строки,
exceptпервыеabs(n).>>> s.tail(-3) shape: (2,) Series: 'a' [i64] [ 4 5 ]
tail( n: int = 10, ) → Series-
Вычисляет поэлементное значение тангенса.
Примечания
Входные значения интерпретируются как радианы. Чтобы преобразовать градусы в радианы, вызовите
.radians().Примеры
>>> import math >>> s = pl.Series("a", [0.0, math.pi / 2.0, math.pi]) >>> s.tan() shape: (3,) Series: 'a' [f64] [ 0.0 1.6331e16 -1.2246e-16 ]
tan() → Series
-
Вычисляет поэлементное значение гиперболического тангенса.
Примеры
>>> s = pl.Series("a", [1.0, 0.0, -1.0]) >>> s.tanh() shape: (3,) Series: 'a' [f64] [ 0.761594 0.0 -0.761594 ]
tanh() → Series
-
Возвращает базовый массив Arrow.
Если Series содержит только один чанк, эта операция выполняется без копирования данных.
Изменено в версии 1.24: Параметр
futureпереименован вcompat_level.- Параметры:
-
- compat_level
-
Используемый при экспорте внутренних структур данных Polars уровень совместимости.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s = s.to_arrow() >>> s <pyarrow.lib.Int64Array object at ...> [ 1, 2, 3 ]
to_arrow( *, compat_level: CompatLevel | None = None, ) → Array-
Возвращает фиктивные/индикаторные переменные.
- Параметры:
-
- separator
-
Разделитель, используемый при создании имён столбцов.
- drop_first
-
Удаляет первую категорию из кодируемой переменной.
- drop_nulls
-
Если в Series есть значения
None, столбецnullне создаётся. Нулевые значения во входных данных представлены нулевыми векторами.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.to_dummies() shape: (3, 3) ┌─────┬─────┬─────┐ │ a_1 ┆ a_2 ┆ a_3 │ │ --- ┆ --- ┆ --- │ │ u8 ┆ u8 ┆ u8 │ ╞═════╪═════╪═════╡ │ 1 ┆ 0 ┆ 0 │ │ 0 ┆ 1 ┆ 0 │ │ 0 ┆ 0 ┆ 1 │ └─────┴─────┴─────┘>>> s.to_dummies(drop_first=True) shape: (3, 2) ┌─────┬─────┐ │ a_2 ┆ a_3 │ │ --- ┆ --- │ │ u8 ┆ u8 │ ╞═════╪═════╡ │ 0 ┆ 0 │ │ 1 ┆ 0 │ │ 0 ┆ 1 │ └─────┴─────┘
>>> s = pl.Series("a", [1, 2, None, 3]) >>> s.to_dummies(drop_nulls=True, drop_first=True) shape: (4, 2) ┌─────┬─────┐ │ a_2 ┆ a_3 │ │ --- ┆ --- │ │ u8 ┆ u8 │ ╞═════╪═════╡ │ 0 ┆ 0 │ │ 1 ┆ 0 │ │ 0 ┆ 0 │ │ 0 ┆ 1 │ └─────┴─────┘
to_dummies( *, separator: str_ = '_', drop_first: bool = False, drop_nulls: bool = False, ) → DataFrame-
Преобразует эту Series в DataFrame.
- Параметры:
-
- name
-
Необязательное имя столбца Series в новом DataFrame или новое имя для него.
Примеры
>>> s = pl.Series("a", [123, 456]) >>> df = s.to_frame() >>> df shape: (2, 1) ┌─────┐ │ a │ │ --- │ │ i64 │ ╞═════╡ │ 123 │ │ 456 │ └─────┘>>> df = s.to_frame("xyz") >>> df shape: (2, 1) ┌─────┐ │ xyz │ │ --- │ │ i64 │ ╞═════╡ │ 123 │ │ 456 │ └─────┘
to_frame( name: str_ | None = None, ) → DataFrame-
Преобразует Series в строковое представление, пригодное для создания экземпляра.
- Параметры:
-
- n
-
Использовать только первые n элементов.
См. также
Примеры
>>> s = pl.Series("a", [1, 2, None, 4], dtype=pl.Int16) >>> print(s.to_init_repr()) pl.Series('a', [1, 2, None, 4], dtype=pl.Int16) >>> s_from_str_repr = eval(s.to_init_repr()) >>> s_from_str_repr shape: (4,) Series: 'a' [i16] [ 1 2 null 4 ]
to_init_repr( n: int = 1000, ) → str_-
Преобразует эту Series в массив Jax.
Добавлено в версии 0.20.27.
Предупреждение
В настоящее время эта функциональность считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений нарушающими обратную совместимость.
- Параметры:
-
- device
-
Указывает
DeviceJax, на котором будет создан массив; можно передать строку (например, «cpu», «gpu» или «tpu»), тогда устройство будет получено какjax.devices(string)[0]. Для более точного управления можно передать непосредственно созданный экземплярDevice. Если указано None, массивы создаются на устройстве по умолчанию.
Примеры
>>> s = pl.Series("x", [10.5, 0.0, -10.0, 5.5]) >>> s.to_jax() Array([ 10.5, 0. , -10. , 5.5], dtype=float32)
to_jax( device: jax.Device | str_ | None = None, ) → jax.Array-
Преобразует эту Series в список Python.
Эта операция копирует данные.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.to_list() [1, 2, 3] >>> type(s.to_list()) <class 'list'>
to_list() → list_[Any]
-
Преобразует эту Series в ndarray NumPy.
Эта операция копирует данные только при необходимости. Преобразование выполняется без копирования, если соблюдены все следующие условия:
- Тип данных — целое число, число с плавающей точкой,
Datetime,DurationилиArray. - Series не содержит нулевых значений.
- Series состоит из одного чанка.
- Параметру
writableзадано значениеFalse(по умолчанию).
- Параметры:
-
- writable
-
Гарантирует, что полученный массив доступен для записи. Если массив создан без копирования, это принудительно вызовет копирование данных, поскольку базовые данные Arrow неизменяемы.
- allow_copy
-
Разрешает копирование памяти для выполнения преобразования. Если задано
False, преобразования, требующие копирования, завершатся ошибкой. - use_pyarrow
-
Сначала выполняет преобразование в PyArrow, а затем вызывает pyarrow.Array.to_numpy для преобразования в NumPy. Если задано
False, используется собственная логика преобразования Polars.Устарело с версии 0.20.28: Теперь Polars по умолчанию использует собственный движок для преобразования в NumPy. Чтобы использовать движок PyArrow, вместо этого вызовите
.to_arrow().to_numpy(). - zero_copy_only
-
Вызывает исключение, если преобразование в NumPy потребует копирования базовых данных. Например, копирование происходит, когда Series содержит нулевые значения или данные нечислового типа.
Устарело с версии 0.20.10: Вместо этого используйте параметр
allow_copy, который является инверсией этого параметра.
Примеры
Числовые данные без нулевых значений можно преобразовать без копирования. Полученный массив будет недоступен для записи.
>>> s = pl.Series([1, 2, 3], dtype=pl.Int8) >>> arr = s.to_numpy() >>> arr array([1, 2, 3], dtype=int8) >>> arr.flags.writeable False
Задайте
writable=True, чтобы принудительно копировать данные и сделать массив доступным для записи.>>> s.to_numpy(writable=True).flags.writeable True
Series целочисленного типа с нулевыми значениями будет преобразована в тип с плавающей точкой, где
nanпредставляет нулевое значение. Для этого требуется копирование данных.>>> s = pl.Series([1, 2, None], dtype=pl.UInt16) >>> s.to_numpy() array([ 1., 2., nan], dtype=float32)
Задайте
allow_copy=False, чтобы вызывать ошибку, если данные будут скопированы.>>> s.to_numpy(allow_copy=False) Traceback (most recent call last): ... RuntimeError: copy not allowed: cannot convert to a NumPy array without copying data
Для Series типов данных
ArrayиStructполучится массив с более чем одним измерением.>>> s = pl.Series([[1, 2, 3], [4, 5, 6]], dtype=pl.Array(pl.Int64, 3)) >>> s.to_numpy() array([[1, 2, 3], [4, 5, 6]]) - Тип данных — целое число, число с плавающей точкой,
to_numpy( *, writable: bool = False, allow_copy: bool = True, use_pyarrow: bool | None = None, zero_copy_only: bool | None = None, ) → ndarray[Any, Any]-
Преобразует эту Series в Series pandas.
Эта операция копирует данные, если
use_pyarrow_extension_arrayне включён.- Параметры:
-
- use_pyarrow_extension_array
-
Использовать для Series pandas массив расширений на основе PyArrow вместо массива NumPy. Это позволяет выполнять операции без копирования и сохранять нулевые значения. Последующие операции с полученной Series pandas могут вызвать преобразование в NumPy, если они не поддерживаются вычислительными функциями PyArrow.
- **kwargs
-
Дополнительные аргументы-ключевые слова, передаваемые в
pyarrow.Array.to_pandas().
- Возвращает:
-
-
pandas.Series
-
Примечания
Для этой операции необходимо, чтобы были установлены и
pandas, иpyarrow.Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.to_pandas() 0 1 1 2 2 3 Name: a, dtype: int64Нулевые значения преобразуются в
NaN.>>> s = pl.Series("b", [1, 2, None]) >>> s.to_pandas() 0 1.0 1 2.0 2 NaN Name: b, dtype: float64Передайте
use_pyarrow_extension_array=True, чтобы получить Series pandas на основе массива расширений PyArrow. Это позволит сохранить нулевые значения.>>> s.to_pandas(use_pyarrow_extension_array=True) 0 1 1 2 2 <NA> Name: b, dtype: int64[pyarrow]
to_pandas( *, use_pyarrow_extension_array: bool = False, **kwargs: Any, ) → pd.Series[Any]-
Преобразует в физическое представление логического типа данных.
-
polars.datatypes.Date()->polars.datatypes.Int32() -
polars.datatypes.Datetime()->polars.datatypes.Int64() -
polars.datatypes.Time()->polars.datatypes.Int64() -
polars.datatypes.Duration()->polars.datatypes.Int64() -
polars.datatypes.Categorical()->polars.datatypes.UInt32() -
List(inner)->List(physical of inner) -
Array(inner)->Array(physical of inner) -
Struct(fields)->Struct(physical of fields) - Другие типы данных останутся без изменений.
Предупреждение
Физические представления являются деталями реализации, и их стабильность не гарантируется.
Примеры
Воспроизведение работы метода pandas pd.Series.factorize.
>>> s = pl.Series("values", ["a", None, "x", "a"]) >>> s.cast(pl.Categorical).to_physical() shape: (4,) Series: 'values' [u32] [ 0 null 1 0 ] -
to_physical() → Series
-
Преобразует эту Series в тензор PyTorch.
Добавлено в версии 0.20.23.
Предупреждение
В настоящее время эта функциональность считается нестабильной. Она может быть изменена в любой момент без объявления таких изменений нарушающими обратную совместимость.
Примечания
Тензоры PyTorch не поддерживают UInt16, UInt32 или UInt64; эти типы данных автоматически преобразуются соответственно в Int32, Int64 и Int64.
Примеры
>>> s = pl.Series("x", [1, 0, 1, 2, 0], dtype=pl.UInt8) >>> s.to_torch() tensor([1, 0, 1, 2, 0], dtype=torch.uint8) >>> s = pl.Series("x", [5.5, -10.0, 2.5], dtype=pl.Float32) >>> s.to_torch() tensor([ 5.5000, -10.0000, 2.5000])
to_torch() → torch.Tensor
-
Возвращает
kнаибольших элементов.Ненулевые элементы всегда имеют приоритет над нулевыми. Порядок элементов в результате не гарантируется; если результат нужно отсортировать, вызовите после этой функции
sort().Сложность по времени:
\[O(n)\]- Параметры:
-
- k
-
Количество возвращаемых элементов.
См. также
Примеры
>>> s = pl.Series("a", [2, 5, 1, 4, 3]) >>> s.top_k(3) shape: (3,) Series: 'a' [i64] [ 5 4 3 ]
top_k( k: int = 5, ) → Series-
Возвращает
kнаибольших элементов столбцаby.Ненулевые элементы всегда имеют приоритет над нулевыми независимо от значения
reverse. Порядок элементов в результате не гарантируется; если результат нужно отсортировать, вызовите после этой функцииsort().Сложность по времени:
\[O(n \log{n})\]- Параметры:
-
- by
-
Столбец, используемый для определения наибольших элементов. Принимает выражение. Строки интерпретируются как имена столбцов.
- k
-
Количество возвращаемых элементов.
- reverse
-
Рассматривает
kнаименьших элементов столбцаbyвместоkнаибольших. Это можно задать отдельно для каждого столбца, передав последовательность логических значений.
См. также
Примеры
>>> s = pl.Series("a", [2, 5, 1, 4, 3]) >>> s.top_k_by("a", 3) shape: (3,) Series: 'a' [i64] [ 5 4 3 ]
top_k_by( by: IntoExpr | Iterable[IntoExpr], k: int = 5, *, reverse: bool | Sequence[bool] = False, ) → Series-
Усекает числовые данные в направлении к нулю до
decimalsзнаков после запятой.- Параметры:
-
- decimals
-
Количество знаков после запятой, до которого следует усечь значение.
См. также
Примечания
- При усечении отбрасывается дробная часть за пределами заданного количества знаков после запятой. Например, при округлении до 0 знаков значения 0.25, -0.25, 0.99 и -0.99 будут усечены до 0. При округлении до 1 знака 1.9999 станет 1.9, а -1.9999 — -1.9. В отличие от
round(), для значений ровно посередине между числами нет правила выбора: поэтому 0.5 и -0.5 также будут усечены до 0 при decimals=1. - Этот метод выполняет усечение числовых данных. Для усечения временных данных (дат/дат и времени) используйте вместо него
Series.dt.truncate().
Примеры
>>> s = pl.Series("a", [1.12345, 2.56789, 3.991234]) >>> s.truncate(2) shape: (3,) Series: 'a' [f64] [ 1.12 2.56 3.99 ]>>> s = pl.Series("a", [-1.78, 2.56, -3.99]) >>> s.truncate(0) shape: (3,) Series: 'a' [f64] [ -1.0 2.0 -3.0 ]
truncate( decimals: int = 0, ) → Series-
Возвращает уникальные элементы Series.
Для целей этой операции
nullсчитается уникальным значением.- Параметры:
-
- maintain_order
-
Сохранять порядок данных. Это требует дополнительных вычислений.
Примеры
>>> s = pl.Series("a", [1, 2, 2, 3]) >>> s.unique().sort() shape: (3,) Series: 'a' [i64] [ 1 2 3 ]
unique( *, maintain_order: bool = False, ) → Series-
Возвращает количество уникальных значений в порядке их появления.
Примеры
>>> s = pl.Series("id", ["a", "b", "b", "c", "c", "c"]) >>> s.unique_counts() shape: (3,) Series: 'id' [u32] [ 1 2 3 ]
unique_counts() → Series
-
Возвращает верхнюю границу типа данных этой Series в виде Series с единичным значением.
См. также
-
lower_bound -
Возвращает нижнюю границу типа данных указанной Series.
Примеры
>>> s = pl.Series("s", [-1, 0, 1], dtype=pl.Int8) >>> s.upper_bound() shape: (1,) Series: 's' [i8] [ 127 ]>>> s = pl.Series("s", [1.0, 2.5, 3.0], dtype=pl.Float64) >>> s.upper_bound() shape: (1,) Series: 's' [f64] [ inf ] -
upper_bound() → Self
-
-
Подсчитывает количество вхождений уникальных значений.
- Параметры:
-
- sort
-
Сортировать результат по количеству в порядке убывания. Если задано
False(по умолчанию), порядок не детерминирован. - parallel
-
Выполнить вычисление параллельно.
Примечание
Вероятно, этот параметр не следует включать в контексте
group_by, поскольку вычисление и так будет выполняться параллельно для каждой группы. - name
-
Задать столбцу с результатами подсчёта определённое имя; если
normalizeравно True, по умолчанию используется «proportion», иначе — «count». - normalize
-
Если задано True, количество возвращается как относительная частота уникальных значений, нормированная до 1.0.
- Возвращает:
-
- DataFrame
-
Столбцы сопоставляют уникальные значения их количеству (или доле).
Примеры
>>> s = pl.Series("color", ["red", "blue", "red", "green", "blue", "blue"]) >>> s.value_counts() shape: (3, 2) ┌───────┬───────┐ │ color ┆ count │ │ --- ┆ --- │ │ str ┆ u32 │ ╞═══════╪═══════╡ │ red ┆ 2 │ │ green ┆ 1 │ │ blue ┆ 3 │ └───────┴───────┘Сортировка результата по количеству и настройка имени столбца с количеством.
>>> s.value_counts(sort=True, name="n") shape: (3, 2) ┌───────┬─────┐ │ color ┆ n │ │ --- ┆ --- │ │ str ┆ u32 │ ╞═══════╪═════╡ │ blue ┆ 3 │ │ red ┆ 2 │ │ green ┆ 1 │ └───────┴─────┘
Возврат количества в виде относительной частоты, нормированной до 1.0:
>>> s.value_counts(sort=True, normalize=True, name="fraction") shape: (3, 2) ┌───────┬──────────┐ │ color ┆ fraction │ │ --- ┆ --- │ │ str ┆ f64 │ ╞═══════╪══════════╡ │ blue ┆ 0.5 │ │ red ┆ 0.333333 │ │ green ┆ 0.166667 │ └───────┴──────────┘
value_counts( *, sort: bool = False, parallel: bool = False, name: str_ | None = None, normalize: bool = False, ) → DataFrame-
Получить дисперсию этого Series.
- Параметры:
-
- ddof
-
«Поправка на число степеней свободы»: делитель, используемый при вычислении, равен N - ddof, где N обозначает количество элементов. По умолчанию ddof равен 1.
Примеры
>>> s = pl.Series("a", [1, 2, 3]) >>> s.var() 1.0
var( ddof: int = 1, ) → float | timedelta | None-
Выбрать значения из self или other на основе заданной маски.
Если маска принимает значение true, выбираются значения из self. Если маска принимает значение false, выбираются значения из other.
- Параметры:
-
- mask
-
Логический Series.
- other
-
Series того же типа.
- Возвращает:
-
- Series
Примеры
>>> s1 = pl.Series([1, 2, 3, 4, 5]) >>> s2 = pl.Series([5, 4, 3, 2, 1]) >>> s1.zip_with(s1 < s2, s2) shape: (5,) Series: '' [i64] [ 1 2 3 2 1 ] >>> mask = pl.Series([True, False, True, False, True]) >>> s1.zip_with(mask, s2) shape: (5,) Series: '' [i64] [ 1 4 3 2 5 ]
zip_with( mask: Series, other: Series, ) → Self-
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/series/index.html