Skip to content

demand_pattern

demand_pattern ¤

Demand pattern events for supply chain timeseries.

Aggregates demand by time period, detects demand spikes, and summarizes seasonal demand patterns.

DemandPatternEvents ¤

DemandPatternEvents(
    dataframe: DataFrame,
    demand_uuid: str,
    *,
    event_uuid: str = "sc:demand",
    value_column: str = "value_double",
    time_column: str = "systime"
)

Bases: Base

Analyze demand patterns from a timeseries demand signal.

Each demand event is a numeric value representing demand quantity at a point in time.

Example usage

analyzer = DemandPatternEvents(df, demand_uuid='order_demand') daily = analyzer.demand_by_period(period='1D') spikes = analyzer.detect_demand_spikes(threshold_factor=2.0) seasonal = analyzer.seasonality_summary(period='1D')

Initialize demand pattern analyzer.

Parameters:

Name Type Description Default
dataframe DataFrame

Input DataFrame with timeseries data.

required
demand_uuid str

UUID of the demand signal.

required
event_uuid str

UUID assigned to generated events.

'sc:demand'
value_column str

Column containing numeric demand values.

'value_double'
time_column str

Name of timestamp column.

'systime'

demand_by_period ¤

demand_by_period(period: str = '1D') -> pd.DataFrame

Aggregate demand per time period.

Parameters:

Name Type Description Default
period str

Pandas offset alias for grouping (e.g. '1D', '1h').

'1D'

Returns:

Type Description
DataFrame

DataFrame with columns: period_start, uuid, is_delta,

DataFrame

total_demand, avg_demand, peak_demand.

detect_demand_spikes ¤

detect_demand_spikes(
    threshold_factor: float = 2.0, window: str = "1D"
) -> pd.DataFrame

Flag periods where demand exceeds mean + threshold_factor * std.

Parameters:

Name Type Description Default
threshold_factor float

Number of standard deviations above the mean to flag as a spike.

2.0
window str

Pandas offset alias for aggregation period.

'1D'

Returns:

Type Description
DataFrame

DataFrame with columns: period_start, uuid, is_delta,

DataFrame

demand, baseline_mean, spike_magnitude.

seasonality_summary ¤

seasonality_summary(period: str = '1D') -> pd.DataFrame

Compute demand patterns by day-of-week (for daily) or hour-of-day (for hourly).

When period='1D', groups by day of week (Monday=0 .. Sunday=6). When period is sub-daily (e.g. '1h'), groups by hour of day (0..23).

Parameters:

Name Type Description Default
period str

Pandas offset alias. '1D' for day-of-week analysis, any sub-daily frequency for hour-of-day analysis.

'1D'

Returns:

Type Description
DataFrame

DataFrame with columns: period_label, avg_demand, std_demand,

DataFrame

min_demand, max_demand.