Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/py-polars/docs/source/reference/sql/functions/math.rst
6940 views
Math
====

.. list-table::
   :header-rows: 1
   :widths: 20 60

   * - Function
     - Description
   * - :ref:`ABS <abs>`
     - Returns the absolute value of the input column.
   * - :ref:`CBRT <cbrt>`
     - Returns the cube root (∛) of a number.
   * - :ref:`CEIL <ceil>`
     - Returns the nearest integer closest from zero.
   * - :ref:`DIV <div>`
     - Returns the integer quotient of the division.
   * - :ref:`EXP <exp>`
     - Computes the exponential of the given value.
   * - :ref:`FLOOR <floor_function>`
     - Returns the nearest integer away from zero.
   * - :ref:`LN <ln>`
     - Computes the natural logarithm of the given value.
   * - :ref:`LOG <log>`
     - Computes the `base` logarithm of the given value.
   * - :ref:`LOG2 <log2>`
     - Computes the logarithm of the given value in base 2.
   * - :ref:`LOG10 <log10>`
     - Computes the logarithm of the given value in base 10.
   * - :ref:`LOG1P <log1p>`
     - Computes the natural logarithm of "given value plus one".
   * - :ref:`MOD <mod>`
     - Returns the remainder of a numeric expression divided by another numeric expression.
   * - :ref:`PI <pi>`
     - Returns a (very good) approximation of 𝜋.
   * - :ref:`POW <pow>`
     - Returns the value to the power of the given exponent.
   * - :ref:`ROUND <round>`
     - Round a number to `x` decimals (default: 0) away from zero.
   * - :ref:`SIGN <sign>`
     - Returns the sign of the argument as -1, 0, or +1.
   * - :ref:`SQRT <sqrt>`
     - Returns the square root (√) of a number.

.. _abs:

ABS
---
Returns the absolute value of the input column.

**Example:**

.. code-block:: python

    df = pl.DataFrame({"a": [-1.0, 0.0, 1.0, -2.0]})
    df.sql("""
      SELECT a, ABS(a) AS abs_a FROM self
    """)
    # shape: (4, 2)
    # ┌──────┬───────┐
    # │ a    ┆ abs_a │
    # │ ---  ┆ ---   │
    # │ f64  ┆ f64   │
    # ╞══════╪═══════╡
    # │ -1.0 ┆ 1.0   │
    # │ 0.0  ┆ 0.0   │
    # │ 1.0  ┆ 1.0   │
    # │ -2.0 ┆ 2.0   │
    # └──────┴───────┘

.. _cbrt:

CBRT
----
Returns the cube root (∛) of a number.

**Example:**

.. code-block:: python

    df = pl.DataFrame({"a": [1.0, 2.0, 4.0]})
    df.sql("""
      SELECT a, CBRT(a) AS cbrt_a FROM self
    """)
    # shape: (3, 2)
    # ┌─────┬──────────┐
    # │ a   ┆ cbrt_a   │
    # │ --- ┆ ---      │
    # │ f64 ┆ f64      │
    # ╞═════╪══════════╡
    # │ 1.0 ┆ 1.0      │
    # │ 2.0 ┆ 1.259921 │
    # │ 4.0 ┆ 1.587401 │
    # └─────┴──────────┘

.. _ceil:

CEIL
----
Returns the nearest integer closest from zero.

.. admonition:: Aliases

   `CEILING`

**Example:**

.. code-block:: python

    df = pl.DataFrame({"a": [0.1, 2.8, 4.30]})
    df.sql("""
      SELECT a, CEIL(a) AS ceil_a FROM self
    """)
    # shape: (3, 2)
    # ┌─────┬────────┐
    # │ a   ┆ ceil_a │
    # │ --- ┆ ---    │
    # │ f64 ┆ f64    │
    # ╞═════╪════════╡
    # │ 0.1 ┆ 1.0    │
    # │ 2.8 ┆ 3.0    │
    # │ 4.3 ┆ 5.0    │
    # └─────┴────────┘

.. _div:

DIV
---
Returns the integer quotient of the division.

**Example:**

.. code-block:: python

    df = pl.DataFrame({"a": [-10.0, 6.5, 25.0]})
    df.sql("""
      SELECT a, DIV(a, 2) AS a_div_2, DIV(a, 5) AS a_div_5 FROM self
    """)
    # shape: (3, 3)
    # ┌───────┬─────────┬─────────┐
    # │ a     ┆ a_div_2 ┆ a_div_5 │
    # │ ---   ┆ ---     ┆ ---     │
    # │ f64   ┆ i64     ┆ i64     │
    # ╞═══════╪═════════╪═════════╡
    # │ -10.0 ┆ -5      ┆ -2      │
    # │ 6.5   ┆ 3       ┆ 1       │
    # │ 25.0  ┆ 12      ┆ 5       │
    # └───────┴─────────┴─────────┘

.. _exp:

EXP
---
Computes the exponential of the given value.

**Example:**

.. code-block:: python

    df = pl.DataFrame({"a": [1, 2, 4]})
    df.sql("""
      SELECT a, EXP(a) AS exp_a FROM self
    """)
    # shape: (3, 2)
    # ┌─────┬──────────┐
    # │ a   ┆ exp_a    │
    # │ --- ┆ ---      │
    # │ i64 ┆ f64      │
    # ╞═════╪══════════╡
    # │ 1   ┆ 2.718282 │
    # │ 2   ┆ 7.389056 │
    # │ 4   ┆ 54.59815 │
    # └─────┴──────────┘

.. _floor_function:

FLOOR
-----
Returns the nearest integer away from zero.

**Example:**

.. code-block:: python

    df = pl.DataFrame({"a": [0.1, 2.8, 4.30]})
    df.sql("""
      SELECT a, FLOOR(a) AS floor_a FROM self
    """)
    # shape: (3, 2)
    # ┌─────┬─────────┐
    # │ a   ┆ floor_a │
    # │ --- ┆ ---     │
    # │ f64 ┆ f64     │
    # ╞═════╪═════════╡
    # │ 0.1 ┆ 0.0     │
    # │ 2.8 ┆ 2.0     │
    # │ 4.3 ┆ 4.0     │
    # └─────┴─────────┘

.. _ln:

LN
--
Computes the natural logarithm of the given value.

**Example:**

.. code-block:: python

    df = pl.DataFrame({"a": [1, 2, 4]})
    df.sql("""
      SELECT a, LN(a) AS ln_a FROM self
    """)
    # shape: (3, 2)
    # ┌─────┬──────────┐
    # │ a   ┆ ln_a     │
    # │ --- ┆ ---      │
    # │ i64 ┆ f64      │
    # ╞═════╪══════════╡
    # │ 1   ┆ 0.0      │
    # │ 2   ┆ 0.693147 │
    # │ 4   ┆ 1.386294 │
    # └─────┴──────────┘

.. _log:

LOG
---
Computes the `base` logarithm of the given value.

**Example:**

.. code-block:: python

    df = pl.DataFrame({"a": [1, 2, 4]})
    df.sql("""
      SELECT a, LOG(a, 16) AS log16_a FROM self
    """)
    # shape: (3, 2)
    # ┌─────┬─────────┐
    # │ a   ┆ log16_a │
    # │ --- ┆ ---     │
    # │ i64 ┆ f64     │
    # ╞═════╪═════════╡
    # │ 1   ┆ 0.0     │
    # │ 2   ┆ 0.25    │
    # │ 4   ┆ 0.5     │
    # └─────┴─────────┘

.. _log2:

LOG2
----
Computes the logarithm of the given value in base 2.

**Example:**

.. code-block:: python

    df = pl.DataFrame({"a": [1, 2, 4]})
    df.sql("""
      SELECT a, LOG2(a) AS a_log2 FROM self
    """)
    # shape: (3, 2)
    # ┌─────┬────────┐
    # │ a   ┆ a_log2 │
    # │ --- ┆ ---    │
    # │ i64 ┆ f64    │
    # ╞═════╪════════╡
    # │ 1   ┆ 0.0    │
    # │ 2   ┆ 1.0    │
    # │ 4   ┆ 2.0    │
    # └─────┴────────┘

.. _log10:

LOG10
-----
Computes the logarithm of the given value in base 10.

**Example:**

.. code-block:: python

    df = pl.DataFrame({"a": [1, 2, 4]})
    df.sql("""
      SELECT a, LOG10(a) AS log10_a FROM self
    """)
    # shape: (3, 2)
    # ┌─────┬─────────┐
    # │ a   ┆ log10_a │
    # │ --- ┆ ---     │
    # │ i64 ┆ f64     │
    # ╞═════╪═════════╡
    # │ 1   ┆ 0.0     │
    # │ 2   ┆ 0.30103 │
    # │ 4   ┆ 0.60206 │
    # └─────┴─────────┘

.. _log1p:

LOG1P
-----
Computes the natural logarithm of "given value plus one".

**Example:**

.. code-block:: python

    df = pl.DataFrame({"a": [1, 2, 4]})
    df.sql("""
      SELECT a, LOG1P(a) AS log1p_a FROM self
    """)
    # shape: (3, 2)
    # ┌─────┬──────────┐
    # │ a   ┆ log1p_a  │
    # │ --- ┆ ---      │
    # │ i64 ┆ f64      │
    # ╞═════╪══════════╡
    # │ 1   ┆ 0.693147 │
    # │ 2   ┆ 1.098612 │
    # │ 4   ┆ 1.609438 │
    # └─────┴──────────┘

.. _mod:

MOD
---
Returns the remainder of a numeric expression divided by another numeric expression.

**Example:**

.. code-block:: python

    df = pl.DataFrame({"x": [0, 1, 2, 3, 4]})
    df.sql("""
      SELECT x, MOD(x, 2) AS a_mod_2 FROM self
    """)
    # shape: (5, 2)
    # ┌─────┬─────────┐
    # │ x   ┆ a_mod_2 │
    # │ --- ┆ ---     │
    # │ i64 ┆ i64     │
    # ╞═════╪═════════╡
    # │ 0   ┆ 0       │
    # │ 1   ┆ 1       │
    # │ 2   ┆ 0       │
    # │ 3   ┆ 1       │
    # │ 4   ┆ 0       │
    # └─────┴─────────┘

.. _pi:

PI
--
Returns a (good) approximation of 𝜋.

**Example:**

.. code-block:: python

    df.sql("""
      SELECT PI() AS pi FROM self
    """)
    # shape: (1, 1)
    # ┌──────────┐
    # │ pi       │
    # │ ---      │
    # │ f64      │
    # ╞══════════╡
    # │ 3.141593 │
    # └──────────┘

.. _pow:

POW
---
Returns the value to the power of the given exponent.

.. admonition:: Aliases

   `POWER`

**Example:**

.. code-block:: python

    df = pl.DataFrame({"x": [0, 1, 2, 4]})
    df.sql("""
      SELECT x, POW(x, 8) AS x_pow_8 FROM self
    """)
    # shape: (4, 2)
    # ┌─────┬─────────┐
    # │ x   ┆ x_pow_8 │
    # │ --- ┆ ---     │
    # │ i64 ┆ i64     │
    # ╞═════╪═════════╡
    # │ 0   ┆ 0       │
    # │ 1   ┆ 1       │
    # │ 2   ┆ 256     │
    # │ 4   ┆ 65536   │
    # └─────┴─────────┘

.. _round:

ROUND
-----
Round a number to `x` decimals (default: 0) away from zero.

**Example:**

.. code-block:: python

    df = pl.DataFrame({"x": [-0.45, -1.81, 2.25, 3.99]})
    df.sql("""
      SELECT x, ROUND(x) AS x_round, ROUND(x, 1) AS x_round_1 FROM self
    """)
    # shape: (4, 3)
    # ┌───────┬─────────┬───────────┐
    # │ x     ┆ x_round ┆ x_round_1 │
    # │ ---   ┆ ---     ┆ ---       │
    # │ f64   ┆ f64     ┆ f64       │
    # ╞═══════╪═════════╪═══════════╡
    # │ -0.45 ┆ -0.0    ┆ -0.5      │
    # │ -1.81 ┆ -2.0    ┆ -1.8      │
    # │ 2.25  ┆ 2.0     ┆ 2.3       │
    # │ 3.99  ┆ 4.0     ┆ 4.0       │
    # └───────┴─────────┴───────────┘

.. _sign:

SIGN
----
Returns the sign of the argument as -1, 0, or +1.

**Example:**

.. code-block:: python

    df = pl.DataFrame({"x": [0.4, -1, 0, -2, 4]})
    df.sql("""
      SELECT x, SIGN(x) AS sign_x FROM self
    """)
    # shape: (5, 2)
    # ┌──────┬────────┐
    # │ x    ┆ sign_x │
    # │ ---  ┆ ---    │
    # │ f64  ┆ i64    │
    # ╞══════╪════════╡
    # │ 0.4  ┆ 1      │
    # │ -1.0 ┆ -1     │
    # │ 0.0  ┆ 0      │
    # │ -2.0 ┆ -1     │
    # │ 4.0  ┆ 1      │
    # └──────┴────────┘

.. _sqrt:

SQRT
----
Returns the square root (√) of a number.

**Example:**

.. code-block:: python

    df = pl.DataFrame({"x": [2, 16, 4096, 65536]})
    df.sql("""
      SELECT x, SQRT(x) AS sqrt_x FROM self
    """)
    # shape: (4, 2)
    # ┌───────┬──────────┐
    # │ x     ┆ sqrt_x   │
    # │ ---   ┆ ---      │
    # │ i64   ┆ f64      │
    # ╞═══════╪══════════╡
    # │ 2     ┆ 1.414214 │
    # │ 16    ┆ 4.0      │
    # │ 4096  ┆ 64.0     │
    # │ 65536 ┆ 256.0    │
    # └───────┴──────────┘