MCPcopy Create free account
hub / github.com/dask/dask / test_dataframe_quantile

Function test_dataframe_quantile

dask/dataframe/tests/test_dataframe.py:1453–1510  ·  view source on GitHub ↗
(method, expected, numeric_only)

Source from the content-addressed store, hash-verified

1451)
1452@pytest.mark.parametrize("numeric_only", [None, True, False])
1453def test_dataframe_quantile(method, expected, numeric_only):
1454 # column X is for test column order and result division
1455 df = pd.DataFrame(
1456 {
1457 "A": np.arange(20),
1458 "X": np.arange(20, 40),
1459 "B": np.arange(10, 30),
1460 "C": ["a", "b", "c", "d"] * 5,
1461 },
1462 columns=["A", "X", "B", "C"],
1463 )
1464 ddf = dd.from_pandas(df, 3)
1465
1466 numeric_only_kwarg = {}
1467 if numeric_only is not None:
1468 numeric_only_kwarg = {"numeric_only": numeric_only}
1469
1470 if numeric_only is False or numeric_only is None:
1471 # TypeError for pandas<3, ArrowNotImplementedError for pandas>=3
1472 with pytest.raises((TypeError, ArrowNotImplementedError)):
1473 df.quantile(**numeric_only_kwarg)
1474 with pytest.raises(
1475 (TypeError, ArrowNotImplementedError, ValueError),
1476 match="unsupported operand|no kernel|non-numeric|not supported",
1477 ):
1478 ddf.quantile(**numeric_only_kwarg)
1479 else:
1480 result = ddf.quantile(method=method, **numeric_only_kwarg)
1481 assert result.npartitions == 1
1482 assert result.divisions == ("A", "X")
1483
1484 result = result.compute()
1485 assert isinstance(result, pd.Series)
1486 assert result.name == 0.5
1487 assert_eq(result, expected[0], check_names=False)
1488
1489 result = ddf.quantile([0.25, 0.75], method=method, **numeric_only_kwarg)
1490 assert result.npartitions == 1
1491 assert result.divisions == (0.25, 0.75)
1492
1493 result = result.compute()
1494 assert isinstance(result, pd.DataFrame)
1495 tm.assert_index_equal(result.index, pd.Index([0.25, 0.75]))
1496 tm.assert_index_equal(result.columns, pd.Index(["A", "X", "B"]))
1497
1498 assert (result == expected[1]).all().all()
1499
1500 with warnings.catch_warnings(record=True):
1501 warnings.filterwarnings("ignore", category=FutureWarning)
1502 # pandas issues a warning with 1.5, but not 1.3
1503 expected = df.quantile(axis=1, **numeric_only_kwarg)
1504
1505 result = ddf.quantile(axis=1, method=method, **numeric_only_kwarg)
1506
1507 assert_eq(result, expected)
1508
1509 with pytest.raises(ValueError):
1510 ddf.quantile([0.25, 0.75], axis=1, method=method, **numeric_only_kwarg)

Callers

nothing calls this directly

Calls 6

quantileMethod · 0.95
assert_eqFunction · 0.90
arangeMethod · 0.45
quantileMethod · 0.45
computeMethod · 0.45
allMethod · 0.45

Tested by

no test coverage detected