123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- from datetime import datetime
- import numpy as np
- import pytest
- from pandas import (
- DataFrame,
- Series,
- )
- from pandas.core.indexes.datetimes import date_range
- from pandas.core.indexes.period import period_range
- # The various methods we support
- downsample_methods = [
- "min",
- "max",
- "first",
- "last",
- "sum",
- "mean",
- "sem",
- "median",
- "prod",
- "var",
- "std",
- "ohlc",
- "quantile",
- ]
- upsample_methods = ["count", "size"]
- series_methods = ["nunique"]
- resample_methods = downsample_methods + upsample_methods + series_methods
- @pytest.fixture(params=downsample_methods)
- def downsample_method(request):
- """Fixture for parametrization of Grouper downsample methods."""
- return request.param
- @pytest.fixture(params=resample_methods)
- def resample_method(request):
- """Fixture for parametrization of Grouper resample methods."""
- return request.param
- @pytest.fixture
- def simple_date_range_series():
- """
- Series with date range index and random data for test purposes.
- """
- def _simple_date_range_series(start, end, freq="D"):
- rng = date_range(start, end, freq=freq)
- return Series(np.random.randn(len(rng)), index=rng)
- return _simple_date_range_series
- @pytest.fixture
- def simple_period_range_series():
- """
- Series with period range index and random data for test purposes.
- """
- def _simple_period_range_series(start, end, freq="D"):
- rng = period_range(start, end, freq=freq)
- return Series(np.random.randn(len(rng)), index=rng)
- return _simple_period_range_series
- @pytest.fixture
- def _index_start():
- """Fixture for parametrization of index, series and frame."""
- return datetime(2005, 1, 1)
- @pytest.fixture
- def _index_end():
- """Fixture for parametrization of index, series and frame."""
- return datetime(2005, 1, 10)
- @pytest.fixture
- def _index_freq():
- """Fixture for parametrization of index, series and frame."""
- return "D"
- @pytest.fixture
- def _index_name():
- """Fixture for parametrization of index, series and frame."""
- return None
- @pytest.fixture
- def index(_index_factory, _index_start, _index_end, _index_freq, _index_name):
- """
- Fixture for parametrization of date_range, period_range and
- timedelta_range indexes
- """
- return _index_factory(_index_start, _index_end, freq=_index_freq, name=_index_name)
- @pytest.fixture
- def _static_values(index):
- """
- Fixture for parametrization of values used in parametrization of
- Series and DataFrames with date_range, period_range and
- timedelta_range indexes
- """
- return np.arange(len(index))
- @pytest.fixture
- def _series_name():
- """
- Fixture for parametrization of Series name for Series used with
- date_range, period_range and timedelta_range indexes
- """
- return None
- @pytest.fixture
- def series(index, _series_name, _static_values):
- """
- Fixture for parametrization of Series with date_range, period_range and
- timedelta_range indexes
- """
- return Series(_static_values, index=index, name=_series_name)
- @pytest.fixture
- def empty_series_dti(series):
- """
- Fixture for parametrization of empty Series with date_range,
- period_range and timedelta_range indexes
- """
- return series[:0]
- @pytest.fixture
- def frame(index, _series_name, _static_values):
- """
- Fixture for parametrization of DataFrame with date_range, period_range
- and timedelta_range indexes
- """
- # _series_name is intentionally unused
- return DataFrame({"value": _static_values}, index=index)
- @pytest.fixture
- def empty_frame_dti(series):
- """
- Fixture for parametrization of empty DataFrame with date_range,
- period_range and timedelta_range indexes
- """
- index = series.index[:0]
- return DataFrame(index=index)
- @pytest.fixture(params=[Series, DataFrame])
- def series_and_frame(request, series, frame):
- """
- Fixture for parametrization of Series and DataFrame with date_range,
- period_range and timedelta_range indexes
- """
- if request.param == Series:
- return series
- if request.param == DataFrame:
- return frame
|