--- id: pygrinder version: "0.7" license: Copyright (c) 2023-present, Wenjie Du All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are… (full text in the JSON record) license_treatment: permissive maintenance: active --- # pygrinder — A Python toolkit for introducing missing values into datasets License: permissive · Maintenance: active · Downloads: 122.8K/mo ## What it is and what it does PyGrinder is a data corruption toolkit designed to inject missing values into datasets using multiple well-defined patterns. It was originally part of PyPOTS (a time-series data mining framework) and separated to decouple missingness generation from learning algorithms. The package supports MCAR (Missing Completely At Random), MAR (Missing At Random), MNAR (Missing Not At Random with variants), RDO (Random Data Observation), and structured patterns like sequential and block missing values. The typical use case is preparing synthetic incomplete datasets for evaluating how machine learning models handle partial observations or for testing data reconstruction algorithms. You pass a numpy array (often time-series data with shape like samples × timesteps × features) and a pattern function with parameters controlling the missing rate or structure, and receive back a dataset with missing values injected. The package also provides a utility to calculate the resulting missing rate. Use it for: - Evaluate time-series imputation models by creating datasets with known missingness patterns to test reconstruction accuracy. - Generate partially-observed datasets for training robust models that must handle incomplete real-world observations. - Benchmark data mining algorithms on incomplete data without needing to manually corrupt or collect partial datasets. - Simulate different missing-data mechanisms (MCAR vs. MNAR) to study how model performance varies with missingness type. - Create test suites for data preprocessing pipelines that must handle missing values in production. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. PyGrinder introduces missing values into datasets using multiple patterns (MCAR, MAR, MNAR, RDO, sequential, block) to simulate incomplete data for model evaluation and testing. Yes. PyGrinder is actively maintained, has no known vulnerabilities, uses a permissive license, and solves a specific and common problem in machine learning: creating incomplete datasets for model evaluation. The low install friction and production-stable status make it a straightforward choice if you need to simulate missing data patterns. Install it if you work with time-series data or incomplete observations in model development or research. ## Install pip install pygrinder uv add pygrinder poetry add pygrinder ## Installing pygrinder Before you install: Low friction installation via wheel; active maintenance with recent commits and production-stable status. Runtime dependencies on numpy, scikit-learn, pandas, torch, and tsdb are standard data science libraries. License in practice: BSD license (permissive); allows commercial and private use with attribution and liability disclaimers. No restrictions on modification or redistribution. Quickstart: pip install pygrinder import numpy as np from pygrinder import mcar, calc_missing_rate ts_dataset = np.random.randn(128, 10, 36) X_with_mcar = mcar(ts_dataset, p=0.1) missing_rate = calc_missing_rate(X_with_mcar) Requires Python >=3.8; torch dependency may require separate installation depending on your system. Verify before relying: - Whether all five runtime dependencies (torch, tsdb, etc.) are always required or only for specific patterns. - Performance characteristics when working with very large time-series datasets. - Whether the package supports GPU acceleration through torch. ## Package facts - License: Copyright (c) 2023-present, Wenjie Du All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are… (full text in the JSON record) (permissive) - Python support: supports_current - Install friction: low - Maintenance: active - Downloads: 122.8K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags missing data simulation, data corruption patterns, incomplete time series generation, missing value injection, partially observed data creation, time series data masking, synthetic missingness patterns, time-series, data-simulation, missing-data [View on SkillFed](https://skillfed.io/packages/pygrinder) · [View on PyPI](https://pypi.org/project/pygrinder/)