Faker : fabrique des données synthétiques crédibles pour tes modèles IA

De quoi avez-vous besoin

Version de Python

3.x

Packages

  • {"nom": "Faker", "version": "40.39.0"}

Difficulté

Débutant

Tester un modèle de machine learning, c'est bien. Le tester sur des données bidon qui ressemblent à de vraies données, c'est mieux. Faker est la bibliothèque Python qui génère des noms, des adresses, des e-mails et des entreprises fictives mais cohérentes, en une ligne. Tu peux remplir une base, prototyper un pipeline ou entraîner un classifieur sans jamais toucher à de vraies données personnelles. Résultat : zéro risque RGPD, aucun accord de confidentialité à signer, et un environnement reproductible à l'infini. Le tout en local, gratuit, sans aucune API.

bash
pip install Faker

Étape 1 — Génère ta première donnée fictive. Une fois installé, Faker s'utilise en deux lignes. Chaque appel renvoie une valeur inventée, différente à chaque exécution, mais parfaitement plausible.

python
from faker import Faker

fake = Faker()

print(fake.name())
print(fake.email())
print(fake.address())

Étape 2 — Localise les données en français. Par défaut, Faker parle anglais américain. Passe la locale fr_FR au constructeur et tes données sonneront immédiatement juste : accents, formats de téléphone et adresses à la française.

python
from faker import Faker

fake = Faker("fr_FR")

print(fake.name())
print(fake.address())
print(fake.phone_number())

Étape 3 — Construis un vrai jeu de données. Une simple boucle suffit pour générer des centaines de lignes réalistes, prêtes à être écrites dans un CSV que ton pipeline de données pourra lire directement.

python
from faker import Faker
import csv

fake = Faker("fr_FR")

with open("clients.csv", "w", newline="", encoding="utf-8") as fichier:
    writer = csv.writer(fichier)
    writer.writerow(["nom", "email", "ville", "entreprise", "age"])
    for _ in range(500):
        writer.writerow([
            fake.name(),
            fake.email(),
            fake.city(),
            fake.company(),
            fake.random_int(min=18, max=85),
        ])

Étape 4 — Reproductible et sans doublons. Pour comparer des expériences entre elles, fige le générateur avec Faker.seed(42) : les mêmes données sortiront à chaque exécution. Et pour garantir des valeurs uniques, utilise l'attribut unique.

python
from faker import Faker

fake = Faker("fr_FR")
Faker.seed(42)

emails = [fake.unique.email() for _ in range(1000)]
print(len(set(emails)))  # 1000 : aucun doublon

Étape 5 — Les données spécialisées qui changent tout. Faker ne se limite pas aux noms. Dates de naissance cohérentes, IBAN, numéro SIRET, coordonnées GPS : des dizaines de providers couvrent des cas métier précis et se combinent librement.

python
from faker import Faker

fake = Faker("fr_FR")

print(fake.date_of_birth(minimum_age=18, maximum_age=90))
print(fake.iban())
print(fake.siret())
print(fake.latlng())  # coordonnées GPS

Étape 6 — Nourris un DataFrame pour l'entraînement. Combine Faker avec Pandas et tu obtiens un jeu d'entraînement complet en quelques lignes, idéal pour tester un modèle de régression ou de classification avant d'avoir accès à de vraies données.

python
from faker import Faker
import pandas as pd

fake = Faker("fr_FR")

data = [{
    "nom": fake.name(),
    "email": fake.email(),
    "ville": fake.city(),
    "revenu_annuel": fake.random_int(min=18000, max=120000),
} for _ in range(2000)]

df = pd.DataFrame(data)
print(df.head())
print(f"{len(df)} lignes générées")

Faker ne remplace pas de vraies données, et il ne faut jamais faire passer du synthétique pour du réel dans un modèle de production. Mais pour prototyper, tester tes pipelines ou préparer une démo, c'est imbattable. Une fois ton code validé sur des données fictives, tu branches tes vraies données et le travail est déjà fait.