pmdarima
Python's forecast::auto.arima equivalent
What it is and what it does
Pmdarima is a statistical library that brings R's auto.arima forecasting capability to Python with a scikit-learn-style API. It wraps statsmodels internally but presents a more accessible interface for developers familiar with scikit-learn's estimator and pipeline patterns. The package includes automated ARIMA order selection, stationarity and seasonality tests, time series transformations (Box-Cox, Fourier), seasonal decomposition, cross-validation utilities, and built-in datasets for prototyping.
You use it to fit forecasting models on historical time series data and generate predictions for future periods. It supports both simple auto-ARIMA calls and complex preprocessing pipelines with multiple transformers. The library targets financial, insurance, and research domains where time series forecasting is central. Its main dependencies—numpy, pandas, scikit-learn, scipy, statsmodels—are standard in the data science ecosystem, making it a natural fit for projects already using those tools.
Use it for:
- Automatically select optimal ARIMA parameters and fit a forecasting model without manual hyperparameter tuning.
- Build a preprocessing pipeline combining Box-Cox transformation with seasonal ARIMA for improved forecast accuracy.
- Serialize and deploy a fitted time series model to production using pickle, then load and predict on new data.
- Detect and handle seasonality in sales, demand, or financial data using seasonal decomposition and m-parameter tuning.
- Perform cross-validation on time series splits to evaluate model generalization before deployment.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Pmdarima provides automated ARIMA time series forecasting with a scikit-learn-compatible interface, wrapping statsmodels to deliver R's auto.arima functionality in Python.
Yes, if you need automated ARIMA forecasting with scikit-learn integration. The package is mature, well-maintained, MIT-licensed, and widely downloaded (top 5000 PyPI). Install friction is moderate due to multiple dependencies and potential C compilation, but prebuilt wheels for Python 3.10+ on major platforms mitigate this. No known security vulnerabilities. Suitable for production time series work in finance, insurance, and research.
Install
pmdarima on PyPI
pip
pip install pmdarimauv
uv add pmdarimapoetry
poetry add pmdarimaInstalling pmdarima
Before you install
Medium install friction due to 10 runtime dependencies including Cython, numpy, pandas, scikit-learn, scipy, and statsmodels. The package is aging (270 days since last release) but maintains an active repository with 1733 stars and recent commits. Prebuilt wheels available for Python 3.10–3.13 on major platforms reduce compilation burden.
License in practice
Licensed under MIT (permissive), allowing use in commercial and proprietary projects without restriction, though attribution is customary.
Quickstart
pip install pmdarima
import pmdarima as pm
from pmdarima.model_selection import train_test_split
y = pm.datasets.load_wineind()
train, test = train_test_split(y, train_size=150)
model = pm.auto_arima(train, seasonal=True, m=12)
forecasts = model.predict(test.shape[0])
Requires Python 3.10 or later. If a prebuilt wheel is unavailable for your platform, building from source requires Cython >= 0.29 and a C compiler (gcc/Clang on Mac/Linux, MinGW on Windows).
Verify before relying
- Whether the package's aging status (270 days since release) reflects maintenance slowdown or stable maturity.
- Performance characteristics on large datasets or high-frequency time series.
- Compatibility of serialized models across pmdarima versions when using pickle.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 10 — joblib, Cython, numpy, pandas, scikit-learn, scipy, statsmodels, urllib3, setuptools, packaging |
| Maintenance | aging — 270 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 3,290,471/month — #2,672 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pmdarima-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl; pmdarima-2.1.1-cp310-cp310-macosx_11_0_arm64.whl; pmdarima-2.1.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pmdarima-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; pmdarima-2.1.1-cp310-cp310-win_amd64.whl; pmdarima-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl; pmdarima-2.1.1-cp311-cp311-macosx_11_0_arm64.whl; pmdarima-2.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pmdarima-2.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pmdarima-2.1.1-cp311-cp311-win_amd64.whl; pmdarima-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl; pmdarima-2.1.1-cp312-cp312-macosx_11_0_arm64.whl; pmdarima-2.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pmdarima-2.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pmdarima-2.1.1-cp312-cp312-win_amd64.whl; pmdarima-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl; pmdarima-2.1.1-cp313-cp313-macosx_11_0_arm64.whl; pmdarima-2.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pmdarima-2.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pmdarima-2.1.1-cp313-cp313-win_amd64.whl
Keywords: arima, timeseries, forecasting, pyramid, pmdarima, pyramid-arima, scikit-learn, statsmodels
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
dartsDarts provides forecasting and anomaly…
permissive · top 15,000 on PyPI
tbatsImplements BATS and TBATS exponential smoothing…
permissive · top 15,000 on PyPI
statsforecastStatsForecast provides fast implementations of…
permissive · top 5,000 on PyPI
u8dartsu8darts is a deprecated compatibility shim that…
permissive · top 15,000 on PyPI
statsmodelsstatsmodels provides statistical models,…
permissive · top 1,000 on PyPI
prophetProphet forecasts time series data using an…
permissive · top 5,000 on PyPI
pytorch-forecastingPyTorch Forecasting provides neural network…
permissive · top 15,000 on PyPI
hierarchicalforecastReconciles hierarchical time-series forecasts…
permissive · top 15,000 on PyPI
chronos-forecastingChronos provides pretrained transformer-based…
permissive · top 15,000 on PyPI
skforecastSkforecast is a Python library for time series…
permissive · top 15,000 on PyPI