█

AI/TLDR

Buy me a coffee
Buy me a coffee

SDV (Synthetic Data Vault)

Learn patterns from real tables and generate realistic synthetic data in Python

Synthetic DataOpen source
Language
Python
License
Business Source License
$pip install sdv

Overview

SDV (Synthetic Data Vault) is a Python library for creating tabular synthetic data. It uses machine learning models to learn the patterns in your real data, then generates new tables that follow those same statistical patterns without copying the original rows.

It is meant for data scientists and engineers who need realistic test data, want to share datasets without exposing sensitive values, or need extra training data. SDV handles single tables, multiple connected tables, and sequential (time-based) data.

Within the synthetic data category, SDV covers the full workflow: it describes your data with metadata, fits a synthesizer, samples new rows, and then evaluates how close the synthetic data is to the real data with a quality report.

What it does

  • Multiple models, from the statistical GaussianCopula to the deep-learning CTGAN
  • Generates data for single tables, multiple connected tables, or sequential tables
  • Quality reports and column plots to compare synthetic data against the real data
  • Built-in anonymization for sensitive columns such as emails, addresses, and credit card numbers
  • Preserves keys and relationships, including unique primary keys and primary/foreign key links
  • Logical constraints to encode business rules during data processing

Getting started

Install SDV with pip, load a demo dataset, fit a synthesizer, and sample synthetic rows.

Install SDV

Install from PyPI (a virtual environment is recommended). Conda is also supported.

bashbash
pip install sdv

Load a demo dataset

Download a built-in single-table demo. This returns both the data and its metadata.

pythonpython
from sdv.datasets.demo import download_demo

real_data, metadata = download_demo(modality='single_table', dataset_name='fake_hotel_guests')

Fit a synthesizer and sample data

Create a synthesizer, fit it on the real data, then sample new synthetic rows.

pythonpython
from sdv.single_table import GaussianCopulaSynthesizer

synthesizer = GaussianCopulaSynthesizer(metadata)
synthesizer.fit(data=real_data)

synthetic_data = synthesizer.sample(num_rows=500)

Evaluate the synthetic data

Generate a quality report that scores how closely the synthetic data matches the real data.

pythonpython
from sdv.evaluation.single_table import evaluate_quality

quality_report = evaluate_quality(real_data, synthetic_data, metadata)

Commands and code are distilled from the project's own documentation — always check the official repo for the latest.

When to use it

  • Generate safe test and demo data that mirrors production without exposing real customer values
  • Share or publish a dataset by replacing sensitive columns with anonymized synthetic ones
  • Create extra training data when a real dataset is small or imbalanced
  • Reproduce multi-table or time-series data while keeping keys and relationships intact

How SDV (Synthetic Data Vault) compares

SDV (Synthetic Data Vault) alongside other open-source synthetic data tools AI/TLDR tracks, ranked by GitHub stars.

ToolStarsWhat it does
Easy Dataset★ 15kAn 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.6kLearn patterns from real tables and generate realistic synthetic data in Python
distilabel★ 3.4kA framework for building synthetic-data and AI-feedback pipelines that call any LLM to generate and judge datasets.
NeMo Data Designer★ 2.4kAn NVIDIA library for orchestrating LLM-based synthetic-data pipelines with validation and quality scoring.
Augmentoolkit★ 1.9kA tool that turns raw documents into synthetic instruction and conversation datasets for fine-tuning models.
NeMo Curator★ 1.8kAn NVIDIA toolkit for cleaning, deduplicating, and curating large text datasets used to train LLMs.
Curator★ 1.8kA Python library for generating and curating large synthetic datasets to train and post-train language models.
ydata-synthetic★ 1.7kA collection of generators for creating synthetic tabular and time-series data from real datasets.