“Understand your time series before you forecast it.”
tseda is a comprehensive, dependency-light Python toolkit for time series Exploratory Data Analysis (EDA). It is to time series what YData-Profiling is to tabular data: a single command that produces a complete understanding of any time series dataset before you start modelling.
Why tseda?
Existing libraries solve individual problems. No single package provides all of:
Comprehensive EDA & data auditing
Forecastability assessment
Automated diagnostics (stationarity, seasonality, anomalies)
Structural break / changepoint detection
Feature engineering
Model recommendations
Interactive reports
tseda fills that gap, using only numpy, pandas, scipy, and matplotlib as core dependencies.
Installation
pip install timeseries-eda
For stationarity tests that use statsmodels (ADF, KPSS, Phillips-Perron):
pip install timeseries-eda[stats]
For building the documentation:
pip install timeseries-eda[docs]
Quick Start
import numpy as np
import pandas as pd
from tseda import TimeSeries
# Build a TimeSeries object
idx = pd.date_range("2020-01-01", periods=365, freq="D")
ts = TimeSeries(
np.cumsum(np.random.randn(365)),
index=idx,
name="stock_price",
unit="USD",
)
print(ts)
# Data quality
from tseda.quality import MissingValueAnalyzer, OutlierDetector
missing = MissingValueAnalyzer().analyze(ts)
outliers = OutlierDetector().mad(ts)
# Statistics
from tseda.statistics import DescriptiveAnalyzer, StationarityTester
stats = DescriptiveAnalyzer().analyze(ts)
adf = StationarityTester().adf(ts)
print(adf.summary() if hasattr(adf, "summary") else adf)
# Decomposition
from tseda.decomposition import STLDecomposer
dec = STLDecomposer().decompose(ts, period=7)
print(dec.summary())
# Seasonality
from tseda.seasonality import SeasonalityDetector
season = SeasonalityDetector().detect(ts)
print(f"Dominant period: {season.dominant_period}")
Modules
Module |
Capability |
|---|---|
core |
TimeSeries data structure & validators |
quality |
Missing values, outlier detection, flat-line checks |
statistics |
Descriptive stats, stationarity, ACF/PACF |
decomposition |
Classical & STL decomposition |
seasonality |
FFT periodogram + ACF-based period detection |
anomaly |
Rolling IQR/Z-score, STL-residual anomaly detection |
changepoint |
Structural break / CUSUM detection |
features |
Temporal, statistical, spectral feature extraction |
forecastability |
Forecast-readiness scoring & leakage detection |
visualization |
Matplotlib plot suite |
report |
HTML & console report generation |
Dependencies
Core (always installed):
numpy >= 1.23
pandas >= 1.5
scipy >= 1.9
matplotlib >= 3.6
Optional:
statsmodels >= 0.14 — ADF, KPSS, Phillips-Perron, STL (pip install timeseries-eda[stats])
Documentation
Contributing
Contributions are welcome! Please open an issue or pull request at https://github.com/amir-jafari/Time-Series-EDA.
License
MIT © 2026 Amirhossein Jafari
Release files for timeseries-eda 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| timeseries_eda-0.1.3.tar.gz | 241.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| timeseries_eda-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 361.6 kB
Release files / timeseries_eda-0.1.3.tar.gz
| Download URL | timeseries_eda-0.1.3.tar.gz |
|---|---|
| Size | 241.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b498c383ff95409081b315ba41930c0be20718a94fdb7af6c8e4521827016bb3
|
|
BLAKE2b-256 checksum How to use checksums |
9a61e5a1dbedfb836b4e7aca048d74adc1e265916a54aa5a9ec341afb2b94b94
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.7
|
Release files / timeseries_eda-0.1.3-py3-none-any.whl
| Download URL | timeseries_eda-0.1.3-py3-none-any.whl |
|---|---|
| Size | 120.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
78ad4fa3d27c7bc94cfe5799dde8b019183e8c2b3415897d12067d29c12447a4
|
|
BLAKE2b-256 checksum How to use checksums |
910b88cc7046038ca26ac76a006c3ba5c0f2369cd250443ff22fbae56a92b6eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.7
|