Source code for interpreTS.core.features.feature_spikeness

import pandas as pd
import numpy as np

[docs] def calculate_spikeness(data): """ Calculate the spikeness (skewness) of a time series. Parameters ---------- data : pd.Series or np.ndarray The time series data for which the spikeness is to be calculated. Returns ------- float The spikeness (skewness) of the provided time series. Raises ------ TypeError If the data is not a valid time series type or contains non-numeric values. ValueError If the data is empty. Examples -------- >>> import pandas as pd >>> data = pd.Series([1, 2, 3, 4, 5]) >>> calculate_spikeness(data) 0.0 """ # Ensure data is a pandas Series for compatibility with .skew() if isinstance(data, np.ndarray): data = pd.Series(data) # Drop NaN values to avoid issues with skewness calculation original_length = len(data) data = data.dropna() # Handle empty series after dropping NaNs if len(data) == 0: return np.nan # Check if data is numeric if not np.issubdtype(data.dtype, np.number): raise TypeError("Data must contain only numeric values.") # Calculate and return spikeness (skewness) spikeness = data.skew() # Log adjustment if NaN values were dropped if len(data) < original_length: print(f"Warning: {original_length - len(data)} NaN values were dropped for spikeness calculation.") return spikeness