Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/py-polars/tests/unit/operations/test_pct_change.py
7884 views
1
from __future__ import annotations
2
3
import polars as pl
4
from polars.testing import assert_frame_equal, assert_series_equal
5
6
7
def test_pct_change() -> None:
8
s = pl.Series("a", [1, 2, 4, 8, 16, 32, 64])
9
expected = pl.Series("a", [None, None, 3.0, 3.0, 3.0, 3.0, 3.0])
10
assert_series_equal(s.pct_change(2), expected)
11
assert_series_equal(s.pct_change(pl.Series([2])), expected)
12
# negative
13
assert pl.Series(range(5)).pct_change(-1).to_list() == [
14
-1.0,
15
-0.5,
16
-0.3333333333333333,
17
-0.25,
18
None,
19
]
20
21
22
def test_pct_change_nulls() -> None:
23
df = pl.DataFrame(
24
{
25
"a": [10, 11, 12, None, 12, 24],
26
}
27
)
28
result = df.select(pl.col("a").pct_change().alias("pct_change"))
29
expected = pl.DataFrame({"pct_change": [None, 0.1, 0.090909, None, None, 1.0]})
30
assert_frame_equal(result, expected)
31
32