Spec-Zone.ru › Polars

polars.Expr.round

Expr.round(
    decimals: int = 0,
    mode: RoundMode = 'half_to_even',
) → Expr

Округляет базовые данные с плавающей точкой до 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().

См. также

ceil

Округляет вверх до ближайшего целого числа.

floor

Округляет вниз до ближайшего целого числа.

round_sig_figs

Округляет до заданного количества значащих цифр.

truncate

Усекает до заданного количества знаков после запятой.

Примеры

>>> df = pl.DataFrame({"a": [0.33, 0.52, 1.02, 1.17]})
>>> df.select(pl.col("a").round(1))
shape: (4, 1)
┌─────┐
│ a   │
│ --- │
│ f64 │
╞═════╡
│ 0.3 │
│ 0.5 │
│ 1.0 │
│ 1.2 │
└─────┘
>>> df = pl.DataFrame(
...     {
...         "f64": [-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5],
...         "d": ["-3.5", "-2.5", "-1.5", "-0.5", "0.5", "1.5", "2.5", "3.5"],
...     },
...     schema_overrides={"d": pl.Decimal(scale=1)},
... )
>>> df.with_columns(
...     pl.all().round(mode="half_away_from_zero").name.suffix("_away"),
...     pl.all().round(mode="half_to_even").name.suffix("_to_even"),
... )
shape: (8, 6)
┌──────┬───────────────┬──────────┬───────────────┬─────────────┬───────────────┐
│ f64  ┆ d             ┆ f64_away ┆ d_away        ┆ f64_to_even ┆ d_to_even     │
│ ---  ┆ ---           ┆ ---      ┆ ---           ┆ ---         ┆ ---           │
│ f64  ┆ decimal[38,1] ┆ f64      ┆ decimal[38,1] ┆ f64         ┆ decimal[38,1] │
╞══════╪═══════════════╪══════════╪═══════════════╪═════════════╪═══════════════╡
│ -3.5 ┆ -3.5          ┆ -4.0     ┆ -4.0          ┆ -4.0        ┆ -4.0          │
│ -2.5 ┆ -2.5          ┆ -3.0     ┆ -3.0          ┆ -2.0        ┆ -2.0          │
│ -1.5 ┆ -1.5          ┆ -2.0     ┆ -2.0          ┆ -2.0        ┆ -2.0          │
│ -0.5 ┆ -0.5          ┆ -1.0     ┆ -1.0          ┆ -0.0        ┆ 0.0           │
│ 0.5  ┆ 0.5           ┆ 1.0      ┆ 1.0           ┆ 0.0         ┆ 0.0           │
│ 1.5  ┆ 1.5           ┆ 2.0      ┆ 2.0           ┆ 2.0         ┆ 2.0           │
│ 2.5  ┆ 2.5           ┆ 3.0      ┆ 3.0           ┆ 2.0         ┆ 2.0           │
│ 3.5  ┆ 3.5           ┆ 4.0      ┆ 4.0           ┆ 4.0         ┆ 4.0           │
└──────┴───────────────┴──────────┴───────────────┴─────────────┴───────────────┘

© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.Expr.round.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API