Overview
ydata-synthetic is a Python package for generating synthetic tabular and time-series data from real datasets. It bundles several generative models, from Generative Adversarial Networks (GANs) to a faster Gaussian Mixture approach, so you can produce artificial data that keeps the statistical shape of the original without carrying identifiable records.
It is aimed at data scientists and ML engineers who need extra or privacy-safe data. Common reasons include sharing data without exposing personal information, balancing or augmenting small datasets, and reducing bias before training a model.
In the synthetic data category, it covers both structured tables and sequential data. The deep learning models are built on TensorFlow 2, and a Streamlit UI is included so you can train a synthesizer and generate samples without writing much code. Note: the project was renamed and now installs from the fg-data-synthetic package.
What it does
- Generates both tabular and time-series synthetic data from real datasets
- Includes multiple GAN models: CGAN, WGAN, WGANGP, DRAGAN, CRAMER, and CTGAN
- Supports time-series generation with TimeGAN and DoppelGANger
- Offers a fast Gaussian Mixture model that runs without a GPU
- Ships a Streamlit UI to train a synthesizer and generate or profile samples
- Deep learning models implemented on TensorFlow 2 with example notebooks
Getting started
Install the package from PyPI, then either use the Python API or launch the Streamlit UI. Note that the package is now published as fg-data-synthetic and imported as data_synthetic.
Install the package
Install the latest release from PyPI with pip.
pip install fg-data-syntheticImport a synthesizer
Import the regular synthesizer from the data_synthetic package to generate tabular data.
from data_synthetic.synthesizers.regular import RegularSynthesizerOptional: install and run the Streamlit UI
For a low-code experience, install the streamlit extra and start the app from a Python file (notebooks are not supported).
pip install fg-data-synthetic[streamlit]
# in a python file:
from data_synthetic import streamlit_app
streamlit_app.run()Commands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Share a dataset for analysis or ML without exposing personal or identifiable records
- Augment a small training set with additional synthetic rows to improve model coverage
- Balance an imbalanced dataset by generating more samples of underrepresented classes
- Create realistic synthetic time-series, such as stock or usage data, for testing and prototyping
How ydata-synthetic compares
ydata-synthetic alongside other open-source synthetic data tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| Easy Dataset | ★ 15k | An application that parses your documents and converts them into structured question-answer datasets for fine-tuning, RAG, and model evaluation. |
| SDV (Synthetic Data Vault) | ★ 3.6k | A Python library that learns patterns from real tabular data and generates realistic synthetic tables. |
| distilabel | ★ 3.4k | A framework for building synthetic-data and AI-feedback pipelines that call any LLM to generate and judge datasets. |
| NeMo Data Designer | ★ 2.4k | An NVIDIA library for orchestrating LLM-based synthetic-data pipelines with validation and quality scoring. |
| Augmentoolkit | ★ 1.9k | A tool that turns raw documents into synthetic instruction and conversation datasets for fine-tuning models. |
| NeMo Curator | ★ 1.8k | An NVIDIA toolkit for cleaning, deduplicating, and curating large text datasets used to train LLMs. |
| Curator | ★ 1.8k | A Python library for generating and curating large synthetic datasets to train and post-train language models. |
| ydata-synthetic | ★ 1.7k | Generate synthetic tabular and time-series data with GANs and Gaussian Mixtures |

