Skip to main content

A Python toolkit for introducing missing values into datasets

Project description

Welcome to PyGrinder

a Python toolkit for grinding data beans into the incomplete

Python version the latest release version BSD-3 license Community GitHub contributors GitHub Repo stars GitHub Repo forks Code Climate maintainability Coveralls report GitHub Testing arXiv DOI Conda downloads PyPI downloads

PyGrinder is a part of PyPOTS (a Python toolbox for data mining on Partially-Observed Time Series), was called PyCorruptor and separated from PyPOTS for decoupling missingness-creating functionalities from learning algorithms.

In data analysis and modeling, sometimes we may need to corrupt the original data to achieve our goal, for instance, evaluating models' ability to reconstruct corrupted data or assessing the model's performance on only partially-observed data. PyGrinder is such a tool to help you corrupt your data, which provides several patterns to create missing values in the given data.

❖ Usage Examples

PyGrinder now is available on ❗️

Install it with conda install pygrinder, you may need to specify the channel with option -c conda-forge

or install from PyPI:

pip install pygrinder

or install from source code:

pip install https://github.com/WenjieDu/PyGrinder/archive/main.zip

import numpy as np
import pygrinder

# given a time-series dataset with 128 samples, each sample with 10 time steps and 36 data features
ts_dataset = np.random.randn(128, 10, 36)

# grind the dataset with MCAR pattern, 10% missing probability, and using 0 to fill missing values
X_intact, X, missing_mask, indicating_mask = pygrinder.mcar(ts_dataset, p=0.1, nan=0)

# grind the dataset with MAR pattern
X_intact, X, missing_mask, indicating_mask = pygrinder.mar_logistic(ts_dataset[:, 0, :], obs_rate=0.1, missing_rate=0.1, nan=0)

# grind the dataset with MNAR pattern
X_intact, X, missing_mask, indicating_mask = pygrinder.mnar_x(ts_dataset, offset=0.1, nan=0)
X_intact, X, missing_mask, indicating_mask = pygrinder.mnar_t(ts_dataset, cycle=20, pos = 10, scale = 3, nan=0)

❖ Citing PyGrinder/PyPOTS

The paper introducing PyPOTS project is available on arXiv at this URL, and we are pursuing to publish it in prestigious academic venues, e.g. JMLR (track for Machine Learning Open Source Software). If you use PyGrinder in your work, please cite PyPOTS project as below and 🌟star this repository to make others notice this library. 🤗 Thank you!

@article{du2023PyPOTS,
title={{PyPOTS: a Python toolbox for data mining on Partially-Observed Time Series}},
author={Wenjie Du},
year={2023},
eprint={2305.18811},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2305.18811},
doi={10.48550/arXiv.2305.18811},
}

Wenjie Du. (2023). PyPOTS: a Python toolbox for data mining on Partially-Observed Time Series. arXiv, abs/2305.18811.https://arxiv.org/abs/2305.18811

or

@inproceedings{du2023PyPOTS,
title={{PyPOTS: a Python toolbox for data mining on Partially-Observed Time Series}},
booktitle={9th SIGKDD workshop on Mining and Learning from Time Series (MiLeTS'23)},
author={Wenjie Du},
year={2023},
url={https://arxiv.org/abs/2305.18811},
}

Wenjie Du. (2023). PyPOTS: a Python toolbox for data mining on Partially-Observed Time Series. In 9th SIGKDD workshop on Mining and Learning from Time Series (MiLeTS'23). https://arxiv.org/abs/2305.18811

🏠 Visits

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygrinder-0.3.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

pygrinder-0.3-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file pygrinder-0.3.tar.gz.

File metadata

  • Download URL: pygrinder-0.3.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.6

File hashes

Hashes for pygrinder-0.3.tar.gz
Algorithm Hash digest
SHA256 f59e5cc58fb21f29a11c0739c8367225c7184d9f966dfb581a52f2494373aea7
MD5 4ecb4cf9c7559a9f900a90ce562b2ec4
BLAKE2b-256 f5d9f1b62cf4f58db4dd2d5d2e012fadf4e9ead72d2825b87bdbc2fe3b1048ac

See more details on using hashes here.

File details

Details for the file pygrinder-0.3-py3-none-any.whl.

File metadata

  • Download URL: pygrinder-0.3-py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.6

File hashes

Hashes for pygrinder-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4cb6ef4fd944ff3c226d5f9ed012811377f123a02917e9878ef465a0e138b1d2
MD5 790f56a036757743c603797aa59b1dd0
BLAKE2b-256 accda78f0f086f51cc3807607b434414135052b16bee32ddf40f92b164be1d7e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page