Ga naar hoofdinhoud

Synthetische data maken met Python Faker – Tutorial

Synthetische data genereren met Python Faker om echte data aan te vullen voor applicatietests en gegevensprivacy.
Bijgewerkt 2 okt 2026  · 13 min lezen

Verken met AI

ChatGPTClaudePerplexity

Creating Synthetic Data with Python Faker Tutoria

Wat is synthetische data?

Synthetische data is door de computer gegenereerde data die lijkt op echte data. Het primaire doel van synthetische data is het vergroten van de privacy en integriteit van systemen. Zo moeten bedrijven om Persoonlijk Identificeerbare Informatie (PII) of Persoonlijke Gezondheidsinformatie (PHI) van gebruikers te beschermen, strategieën voor gegevensbescherming implementeren. Met synthetische data kunnen bedrijven nieuwe applicaties testen en de privacy van gebruikers waarborgen. 

Bij machine learning gebruiken we synthetische data om de modelprestaties te verbeteren. Dit geldt ook voor situaties waarin data schaars of uit balans is. Typische toepassingen van synthetische data in machine learning zijn zelfrijdende voertuigen, beveiliging, robotica, fraudebescherming en zorg. 

Gartner

Afbeelding van Nvidia

Volgens gegevens van Gartner zal in 2024 60% van de data die wordt gebruikt om machinelearning- en analytische applicaties te ontwikkelen, synthetisch zijn. Maar waarom zien we een opwaartse trend in synthetische data? 

Het is kostbaar om echte data te verzamelen en op te schonen, en in sommige gevallen is die schaars. Fraude bij banken, borstkanker, data van zelfrijdende auto's en malware-aanvallen zijn bijvoorbeeld zeldzaam in de echte wereld. Zelfs als je de data hebt, kost het tijd en middelen om die te schonen en te verwerken voor machinelearningtaken. 

In het eerste deel van de tutorial leren we waarom we synthetische data nodig hebben, welke toepassingen er zijn en hoe je die genereert. In het laatste deel verkennen we de Python Faker-bibliotheek en gebruiken we die om synthetische data te maken voor testen en het behouden van gebruikersprivacy. 

Waarom moeten we synthetische data genereren?

why

Afbeelding door de auteur

We hebben synthetische data nodig voor gebruikersprivacy, applicatietests, het verbeteren van modelprestaties, het representeren van zeldzame gevallen en het verlagen van operationele kosten.

  • Privacy: om gegevens van gebruikers te beschermen. Je kunt namen, e-mails en adressen vervangen door synthetische data. Dit helpt cyber- en blackboxaanvallen te voorkomen waarbij modellen details van trainingsdata afleiden.
  • Testen: applicaties testen op echte data is duur. Databases, UI en AI-applicaties testen op synthetische data is goedkoper en veiliger.
  • Modelprestaties: gegenereerde synthetische data kan de prestaties van een model verbeteren. Bijvoorbeeld: bij beeldclassificatie gebruiken we schuin trekken, verschuiven en roteren van afbeeldingen om de dataset te vergroten en de nauwkeurigheid te verbeteren. 
  • Zeldzame gevallen: we kunnen niet wachten tot een zeldzame gebeurtenis zich voordoet om echte data te verzamelen. Voorbeelden: detectie van kredietfraude, auto-ongelukken en kankergegevens. 
  • Kosten: dataverzameling kost tijd en middelen. Het is duur om echte data te verkrijgen, op te schonen, te labelen en voor te bereiden voor testen of het trainen van modellen. 

Wat zijn toepassingen van synthetische data?

In deze sectie leren we hoe bedrijven synthetische data gebruiken om kostenefficiënte, privacyvriendelijke en krachtige applicaties te bouwen. 

  1. Gegevensdeling: synthetische data stelt organisaties in staat om gevoelige data intern en met derden te delen. Het helpt ook om privédata naar de cloud te verplaatsen en data te behouden voor analytics.
  2. Financiële dienstverlening: synthetische data wordt gegenereerd om zeldzame gebeurtenissen na te bootsen, zoals frauduleuze transacties, anomaliedetectie en economische recessies. Het wordt ook gebruikt om klantgedrag te begrijpen met analysetools. 
  3. Quality Assurance: het onderhouden en testen van de kwaliteit van applicaties of datasystemen. De synthetische data wordt gebruikt om systemen te testen op zeldzamere anomalieën en prestaties te verbeteren.
  4. Zorg: stelt ons in staat om medische dossiers intern en extern te delen met behoud van de vertrouwelijkheid van patiënten. Je kunt het ook gebruiken voor klinische proeven en het detecteren van zeldzame ziekten. Leer gevoelige informatie verwerken met een cursus over gegevensprivacy en anonimisering in Python of R. 
  5. Automotive: het is moeilijk en traag om echte data te krijgen voor robots, drones en zelfrijdende auto's. Bedrijven testen en trainen hun systemen op synthetische simulatiegegevens en besparen kosten bij het bouwen van oplossingen zonder in te leveren op prestaties. 
  6. Machine learning: we kunnen synthetische data gebruiken om de trainingsdataset te vergroten, ongebalanceerde data op te lossen en modellen te testen om prestaties en nauwkeurigheid te borgen. Het wordt ook gebruikt om vooroordelen in bestaande beeld- en tekstdata te verminderen. Dit helpt om systemen te testen en gebruikersprivacy te behouden. DeepFake wordt bijvoorbeeld gebruikt om gezichtsherkenningssystemen te testen. 

Hoe genereer je synthetische data

We kunnen nepdatasetgeneratoren, statistische tools, neurale netwerken en generative adversarial networks gebruiken om synthetische data te genereren.  

Nepdatabases genereren met de Faker-bibliotheek om databases en systemen te testen. Het kan nepgebruikersprofielen genereren met adressen en alle essentiële informatie. Je kunt het ook gebruiken om willekeurige tekst en alinea's te genereren. Dit helpt bedrijven de privacy van gebruikers te beschermen in de testfase en geld te besparen op het verwerven van echte datasets. 

Dataverdeling begrijpen om een volledig nieuwe dataset te genereren met statistische tools zoals Gauss, Exponentieel, Chi-kwadraat, t, lognormaal en Uniform. Je hebt domeinkennis nodig om distributiegebaseerde synthetische data te genereren. 

Variational Autoencoder is een unsupervised leermethode die een encoder en decoder gebruikt om de oorspronkelijke dataset te comprimeren en een representatie van de originele dataset te genereren. Het is ontworpen om de correlatie tussen input- en outputdatasets te optimaliseren. 

Generative Adversarial Network is de populairste manier om data te genereren. Je kunt het gebruiken om synthetische afbeeldingen, geluid, tabeldata en simulatiegegevens te maken. Het gebruikt een generator- en discriminator-architectuur uit deep learning om synthetische data te genereren door willekeurige samples te vergelijken met echte data. Lees onze tutorial Demystifying Generative Adversarial Nets om je eigen synthetische data te maken met Keras.  

Wat is Python Faker?

Python Faker is een open-source Python-pakket dat wordt gebruikt om een nepdataset te maken voor applicatietests, het vullen van de database en het behouden van gebruikersanonimiteit.

faker

Afbeelding door de auteur

Je kunt Faker installeren met:

pip install faker

Faker biedt ondersteuning voor de command line, Pytest fixtures, lokalisatie (ondersteuning voor verschillende regio's), reproduceerbaarheid en dynamische providers (aan te passen aan je behoeften).

Je kunt ook de basisfunctionaliteit van Faker gebruiken om snel een dataset te maken en die aan te passen aan jouw wensen. In de onderstaande tabel zie je verschillende Faker-functies en hun doel. 

Faker-functie

Doel

name()

Genereert een nep volledige naam

credit_card_full()

Genereert een creditcardnummer met verloopdatum en CVV

email()

Genereert een nepmailadres

url()

Genereert een nep-URL

phone_number()

Genereert een neptelefoonnummer met landcode

address()

Genereert een nep volledig adres

license_plate()

Genereert een nepkenteken 

currency()

Genereert een tuple met valutacode en voluit

color_name()

Genereert een willekeurige kleurnaam

local_latlng()

Genereert breedtegraad, lengtegraad, gebied, land en deelstaten

domain_name()

Genereert een nepwebsite op basis van een nepnaam

text()

Genereert korte neptekst

company()

Genereert een nepbedrijfsnaam

Voor meer geavanceerde functies, bekijk de Faker-documentatie.

Het is belangrijk om deze functies te bekijken, omdat we ze gaan gebruiken om verschillende voorbeelden en dataframes te maken. 

Synthetische data genereren met Python Faker

In deze sectie gebruiken we Python Faker om synthetische data te genereren. Het bestaat uit 5 voorbeelden van hoe je Faker voor verschillende taken kunt inzetten. Het hoofddoel is een privacygerichte aanpak ontwikkelen voor het testen van systemen. In het laatste deel genereren we nepdata om de oorspronkelijke data aan te vullen met de gelokaliseerde provider van Faker. 

Je vindt alle code voor deze tutorial in deze DataLab-werkmap; je kunt eenvoudig je eigen kopie maken om alle code in de browser uit te voeren, zonder iets op je computer te installeren.

Eerst starten we een nep-generator met `Faker()`. Standaard wordt de “en_US”-locale gebruikt. 

from faker import Faker
fake = Faker()

Voorbeeld 1

Het “fake”-object kan data genereren met behulp van eigenschapsnamen. Zo wordt `fake.name()` gebruikt om de volledige naam van een willekeurig persoon te genereren.

print(fake.name())
>>> Jessica Robinson

Op dezelfde manier kunnen we een nep e-mailadres, landnaam, tekst, geolocatie en URL genereren, zoals hieronder getoond.  

print(fake.email())
print(fake.country())
print(fake.name())
print(fake.text())
print(fake.latitude(), fake.longitude())
print(fake.url())

Output

ybanks@example.com
Mayotte
Mr. Jose Browning DDS
Dog might bank dog total life financial. Dark view doctor time just.
Stay second treatment language theory. Space seek adult create matter imagine lay.
51.7514185 -148.802970
http://fischer.info/

Voorbeeld 2

Je kunt verschillende locales gebruiken om data te genereren in diverse talen en voor verschillende regio's. 

In het onderstaande voorbeeld genereren we data in het Spaans en de regio is Spanje.

fake = Faker("es_ES")
print(fake.email())
print(fake.country())
print(fake.name())
print(fake.text())
print(fake.latitude(), fake.longitude())
print(fake.url())

Output

Zoals we zien, is de naam van de persoon veranderd en is de tekst in het Spaans.

casandrahierro@example.com
Tonga
Juan Solera-Mancebo
Cumque adipisci eligendi aperiam. Quas laboriosam amet at dignissimos. Excepturi pariatur ipsam esse.
89.180798 -2.274117
https://corbacho-galan.net/

Laten we het nog eens proberen met de Duitse taal en Duitsland als land. Om een volledig gebruikersprofiel te genereren, gebruiken we de functie `profile()`.

fake = Faker("de_DE")
fake.profile()

Output

Het is duidelijk hoe we Faker kunnen gebruiken om data te genereren in verschillende talen voor verschillende landen. Het wijzigen van de locale verandert naam, functie, adres, bedrijf en andere identificerende gegevens op basis van taal en land.  

{'job': 'Erzieher',
'company': 'Stadelmann Thanel GmbH',
'ssn': '631-64-0521',
'residence': 'Leo-Schinke-Allee 298\n26224 Altötting',
'current_location': (Decimal('51.5788595'), Decimal('29.780659')),
'blood_group': 'B+',
'website': ['https://www.schmidtke.de/',
  'https://roskoth.com/',
  'http://www.textor.de/',
  'https://www.zirme.com/'],
'username': 'vdoerr',
'name': 'Francesca Fröhlich',
'sex': 'F',
'address': 'Steinbergallee 13\n84765 Saarbrücken',
'mail': 'smuehle@gmail.com',
'birthdate': datetime.date(1998, 3, 19)}

Voorbeeld 3

In dit voorbeeld maken we een pandas-dataframe met Faker.

  1. Maak een leeg pandas-dataframe (data)
  2. Haal het door x aantal lussen om meerdere rijen te maken
  3. Gebruik `randint()` om een unieke id te genereren
  4. Gebruik Faker om een naam, adres en geolocatie te maken
  5. Voer de functie `input_data()` uit met x=10
from random import randint 
import pandas as pd 
 
fake = Faker()
 
def input_data(x):
   
    # pandas dataframe
    data = pd.DataFrame()
    for i in range(0, x):
        data.loc[i,'id']= randint(1, 100)
        data.loc[i,'name']= fake.name()
        data.loc[i,'address']= fake.address()
        data.loc[i,'latitude']= str(fake.latitude())
        data.loc[i,'longitude']= str(fake.longitude())
    return data
   

input_data(10)

De output ziet er uitstekend uit. We hebben kolommen id, name, address, latitude en longitude met unieke gebruikersdata. 

Output1

Om het resultaat te reproduceren, moeten we de seed instellen. Zo krijgen we vergelijkbare resultaten wanneer we de codecel opnieuw uitvoeren. 

Faker.seed(2)
input_data(10)

Output2

Voorbeeld 4

We kunnen ook een zin genereren die door ons gekozen trefwoorden bevat. Vergelijkbaar met `text(), texts(), paragraph(), word(), en words()`. Je kunt het aantal woorden in een zin verhogen door het argument nb_words in te stellen.

In het onderstaande voorbeeld genereren we vijf zinnen met een woordenlijst. Het is niet perfect, maar het kan helpen bij het testen van applicaties die veel tekstdata vereisen. 

word_list = ["DataCamp", "says", "great", "loves", "tutorial", "workplace"]

for i in range(0, 5):
    print(fake.sentence(ext_word_list=word_list))

Output

Loves great says.
Says workplace workplace tutorial great loves.
Loves workplace workplace loves workplace loves great DataCamp.
Loves says workplace great.
Workplace great DataCamp.

Synthetische en echte data combineren

In dit deel gebruiken we E-Commerce Data uit de dataset-repository van DataCamp en voegen we nepgebruikersdata toe aan de hand van de kolommen CustomerID en Country. Dit helpt om de privacy van gebruikers te behouden en het systeem te testen op extra parameters. 

Om een CSV-bestand te laden, gebruiken we de pandas-functie `read_csv()` en tonen we de bovenste vijf rijen met `head()`

# Loading CSV file
Ecommerce = pd.read_csv("e-commerce.csv")
Ecommerce.head()

De dataset bestaat uit de kolommen InvoiceNo, StockCode (product-ID), Description, Product (item) name, Quantity (per transactie), InvoiceDate, UnitPrice (in Pounds), CustomerID en Country. 

Output3

Om een gelokaliseerd faker-object te maken, tonen we unieke landnamen en gebruiken we die om een woordenboek te maken. Zoals we zien hebben we zeven landen, en in het volgende deel maken we zeven gelokaliseerde faker-generators. 

Ecommerce.Country.dropna().unique()

>>> array(['United Kingdom', 'France', 'Australia', 'Netherlands', 'Germany',
      'Norway', 'EIRE'], dtype=object)

In de functie `anonymous` hebben we:

  1. Unieke klant-id's geëxtraheerd en missende waarden verwijderd
  2. Een woordenboek gemaakt met landnamen en afgekorte locale
  3. Rij-index en landnaam voor een unieke klant-id geëxtraheerd
  4. Woordenboek en landnaam gebruikt om een gelokaliseerde faker-generator te initialiseren
  5. Klantnaam, adres en geolocatie toegevoegd aan het bestaande dataframe. 

De onderstaande functie gebruikt het dataframe en voegt vier nieuwe kolommen toe met gebruikersdata op basis van de kolommen CustomerID en Country. 

def anonymous(df):
   
    # Extracting unique CustomerID
    unique_id = df.CustomerID.dropna().unique()
   
    # Creating the dictionary for Faker localized providers
    local = {
        "United Kingdom": "en_GB",
        "France": "fr_FR",
        "Australia": "en_AU",
        "Netherlands": "nl_NL",
        "Germany": "de_DE",
        "Norway": "no_NO",
        "EIRE": "ga_IE",
    }

    for i in unique_id:
       
        # Extracting row index
        row_id = df[df["CustomerID"] == i].index
       
        # Extracting country name for faker locale
        CountryName = Ecommerce.loc[
            Ecommerce["CustomerID"] == i, "Country"
        ].to_numpy()[0]

        # Using locale dictionary to create faker locale generator
        code = local[CountryName]
        fake = Faker(code)

        # Generating fake data and adding it to dataframe
        CustomerName = fake.name()
        Address = fake.address()
        Latitude = str(fake.latitude())
        Longitude = str(fake.longitude())

        for x in row_id:
            df.loc[x, "CustomerName"] = CustomerName
            df.loc[x, "Address"] = Address
            df.loc[x, "Latitude"] = Latitude
            df.loc[x, "Longitude"] = Longitude

    return df

We gebruiken seed(5) voor reproduceerbaarheid en draaien de functie `anonymous` op het Ecommerce-dataframe. 

# Using seed for reproducibility
Faker.seed(5)

secure_db = anonymous(Ecommerce)
secure_db

De eerste resultaten tonen de data van 17850, United Kingdom en Pamela Cox-James. 

Output4

Om de gelokaliseerde resultaten van de functie te visualiseren, moeten we de data bekijken voor een unieke Country-kolom. 

display_db = []
for i in Ecommerce.Country.dropna().unique():
    display_db.append(secure_db[secure_db["Country"] == i].to_numpy()[0])
pd.DataFrame(display_db, columns=Ecommerce.columns)

Het resultaat is veelbelovend. Je ziet verschillende namen per regio en taal. De adressen komen overeen met het land. Met deze methode kun je persoonsgegevens weglaten en gelokaliseerde data maken met Faker om de privacy van gebruikers te beschermen en geld te besparen. 

Output5

De broncode is beschikbaar in deze DataLab-werkmap.

Conclusie 

Een van de nadelen van Python Faker is dat het data van matige kwaliteit oplevert. Het werkt voor applicatietests, maar het ontbreekt aan datanauwkeurigheid. Namen komen bijvoorbeeld niet overeen met e-mail, domeinnaam of gebruikersnaam. 

Je kunt de provider aanpassen of een nieuwe maken op basis van je voorkeur, maar het kost extra tijd om het systeem te perfectioneren. In die tijd kun je ook je eigen Python-pakket maken met `random.choice()`.

In big tech gebruiken data scientists verschillende tools om gevoelige data te verwerken en gegevensprivacy te behouden. Ze gebruiken ook synthetische data om modelprestaties te verbeteren, bias te verminderen, applicaties te testen en kosten te besparen bij het ontwikkelen van geavanceerde AI-oplossingen. 

Ben je geïnteresseerd om meer te leren? Bekijk dan het carrièrepad Data Scientist with Python en start je reis om een zelfverzekerde data scientist te worden.

In deze tutorial hebben we het belang van synthetische data en de toepassingen ervan geleerd. We hebben ook vanaf nul nepdata gegenereerd met Python Faker om datasystemen te testen en de privacy van gebruikers te behouden.

Onderwerpen
Python
Data Science

Cursussen voor Python

Cursus

Python voor gemiddeld niveau

4 uur
1.4M
Maak je data science skills sterker: creëer visualisaties met Matplotlib en bewerk DataFrames met pandas.
Bekijk detailsRight Arrow
Start Cursus
Meer bekijkenRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken