Skip to content

Commit bcdc8a5

Browse files
committed
test: add numerical stability tests for kurt and skew
1 parent 2d73d62 commit bcdc8a5

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

pandas/tests/window/test_rolling.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1521,16 +1521,41 @@ def test_rolling_skew_kurt_numerical_stability(method):
15211521
[3000000, 1, 1, 2, 3, 4, 999],
15221522
[np.nan] * 3 + [4.0, -1.289256, -1.2, 3.999946],
15231523
),
1524+
(
1525+
"kurt",
1526+
[1e6, -1e6, 1, 2, 3, 4, 5, 6],
1527+
[np.nan] * 3 + [1.5, 4.0, -1.2, -1.2, -1.2],
1528+
),
15241529
],
15251530
)
15261531
def test_rolling_skew_kurt_large_value_range(method, data, values):
1527-
# GH: 37557, 47461
1532+
# GH: 37557, 47461, 61416
15281533
s = Series(data)
15291534
result = getattr(s.rolling(4), method)()
15301535
expected = Series(values)
15311536
tm.assert_series_equal(result, expected)
15321537

15331538

1539+
@pytest.mark.parametrize("method", ["skew", "kurt"])
1540+
def test_same_result_with_different_lengths(method):
1541+
# GH-54380
1542+
len_smaller = 10
1543+
len_bigger = 12
1544+
window_size = 8
1545+
1546+
rng = np.random.default_rng(2)
1547+
data = rng.normal(loc=0.0, scale=1e3, size=len_bigger)
1548+
window_smaller = Series(data[:len_smaller]).rolling(window_size)
1549+
window_bigger = Series(data).rolling(window_size)
1550+
1551+
result_smaller = getattr(window_smaller, method)()
1552+
result_bigger = getattr(window_bigger, method)()
1553+
1554+
result_bigger_trimmed = result_bigger[:len_smaller]
1555+
1556+
tm.assert_series_equal(result_smaller, result_bigger_trimmed, check_exact=True)
1557+
1558+
15341559
def test_invalid_method():
15351560
with pytest.raises(ValueError, match="method must be 'table' or 'single"):
15361561
Series(range(1)).rolling(1, method="foo")

0 commit comments

Comments
 (0)