Skip to content

Commit e3062ca

Browse files
committed
test: add numerical stability tests for kurt and skew
1 parent e982ba2 commit e3062ca

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
@@ -1516,16 +1516,41 @@ def test_rolling_skew_kurt_numerical_stability(method):
15161516
[3000000, 1, 1, 2, 3, 4, 999],
15171517
[np.nan] * 3 + [4.0, -1.289256, -1.2, 3.999946],
15181518
),
1519+
(
1520+
"kurt",
1521+
[1e6, -1e6, 1, 2, 3, 4, 5, 6],
1522+
[np.nan] * 3 + [1.5, 4.0, -1.2, -1.2, -1.2],
1523+
),
15191524
],
15201525
)
15211526
def test_rolling_skew_kurt_large_value_range(method, data, values):
1522-
# GH: 37557, 47461
1527+
# GH: 37557, 47461, 61416
15231528
s = Series(data)
15241529
result = getattr(s.rolling(4), method)()
15251530
expected = Series(values)
15261531
tm.assert_series_equal(result, expected)
15271532

15281533

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

0 commit comments

Comments
 (0)