123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import itertools
- import numpy as np
- import pytest
- from pandas import (
- DataFrame,
- Series,
- notna,
- )
- def create_series():
- return [
- Series(dtype=np.float64, name="a"),
- Series([np.nan] * 5),
- Series([1.0] * 5),
- Series(range(5, 0, -1)),
- Series(range(5)),
- Series([np.nan, 1.0, np.nan, 1.0, 1.0]),
- Series([np.nan, 1.0, np.nan, 2.0, 3.0]),
- Series([np.nan, 1.0, np.nan, 3.0, 2.0]),
- ]
- def create_dataframes():
- return [
- DataFrame(columns=["a", "a"]),
- DataFrame(np.arange(15).reshape((5, 3)), columns=["a", "a", 99]),
- ] + [DataFrame(s) for s in create_series()]
- def is_constant(x):
- values = x.values.ravel("K")
- return len(set(values[notna(values)])) == 1
- @pytest.fixture(
- params=(
- obj
- for obj in itertools.chain(create_series(), create_dataframes())
- if is_constant(obj)
- ),
- )
- def consistent_data(request):
- return request.param
- @pytest.fixture(params=create_series())
- def series_data(request):
- return request.param
- @pytest.fixture(params=itertools.chain(create_series(), create_dataframes()))
- def all_data(request):
- """
- Test:
- - Empty Series / DataFrame
- - All NaN
- - All consistent value
- - Monotonically decreasing
- - Monotonically increasing
- - Monotonically consistent with NaNs
- - Monotonically increasing with NaNs
- - Monotonically decreasing with NaNs
- """
- return request.param
- @pytest.fixture(params=[0, 2])
- def min_periods(request):
- return request.param
|