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'
|
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'
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame with columns: period_label, avg_demand, std_demand, |
DataFrame
|
min_demand, max_demand. |