Vai al contenuto principale

Creare dati sintetici con Python Faker: tutorial

Generare dati sintetici con Python Faker per integrare i dati reali nel testing delle applicazioni e per la privacy dei dati.
Aggiornato 29 set 2026  · 13 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Creating Synthetic Data with Python Faker Tutoria

Che cosa sono i dati sintetici?

I dati sintetici sono dati generati al computer che risultano simili ai dati del mondo reale. Lo scopo principale dei dati sintetici è aumentare la privacy e l’integrità dei sistemi. Ad esempio, per proteggere le informazioni di identificazione personale (PII) o le informazioni sanitarie personali (PHI) degli utenti, le aziende devono implementare strategie di protezione dei dati. L’uso di dati sintetici può aiutare le aziende a testare nuove applicazioni e a proteggere la privacy degli utenti. 

Nel caso del machine learning, usiamo i dati sintetici per migliorare le prestazioni dei modelli. Questo vale anche quando i dati sono scarsi o sbilanciati. Gli impieghi tipici dei dati sintetici nel machine learning riguardano veicoli a guida autonoma, sicurezza, robotica, prevenzione delle frodi e sanità. 

Gartner

Immagine da Nvidia

Secondo i dati di Gartner, entro il 2024 il 60% dei dati utilizzati per sviluppare applicazioni di machine learning e di analisi sarà generato sinteticamente. Ma perché vediamo una tendenza in aumento verso i dati sintetici? 

Raccogliere e ripulire dati reali è costoso e, in alcuni casi, raro. Ad esempio, i dati su frodi bancarie, tumore al seno, auto a guida autonoma e attacchi malware sono difficili da reperire nel mondo reale. Anche quando si riesce a ottenere i dati, serviranno tempo e risorse per pulirli e processarli per i compiti di machine learning. 

Nella prima parte del tutorial vedremo perché servono i dati sintetici, le loro applicazioni e come generarli. Nella parte finale esploreremo la libreria Python Faker e la useremo per creare dati sintetici per il testing e per mantenere la privacy degli utenti. 

Perché dobbiamo generare dati sintetici?

why

Immagine dell’autore

Abbiamo bisogno di dati sintetici per la privacy degli utenti, il testing delle applicazioni, il miglioramento delle prestazioni dei modelli, la rappresentazione di casi rari e la riduzione dei costi operativi.

  • Privacy: per proteggere i dati degli utenti. Puoi sostituire nomi, email e indirizzi con dati sintetici. Aiuta anche a evitare attacchi informatici e di tipo black-box, in cui i modelli deducono dettagli dai dati di addestramento.
  • Testing: testare applicazioni su dati reali è costoso. Testare database, interfacce e applicazioni di IA con dati sintetici è più conveniente e sicuro.
  • Prestazioni del modello: i dati sintetici generati possono migliorare le prestazioni. Ad esempio, nei classificatori di immagini usiamo taglio, traslazione e rotazione per aumentare la dimensione del dataset e migliorare l’accuratezza. 
  • Casi rari: non possiamo aspettare che un evento raro si verifichi per raccogliere dati reali. Esempi: rilevamento di frodi con carta di credito, incidenti stradali, dati sul cancro. 
  • Costo: la raccolta dati richiede tempo e risorse. Acquisire dati reali, pulirli, etichettarli e prepararli per test o training è costoso. 

Quali sono le applicazioni dei dati sintetici?

In questa sezione vedremo come le aziende usano i dati sintetici per costruire applicazioni performanti, rispettose della privacy e a costi contenuti. 

  1. Condivisione dei dati: i dati sintetici consentono alle imprese di condividere internamente e con terze parti informazioni sensibili. Aiutano anche a spostare dati privati nel cloud e a conservarli per l’analisi.
  2. Servizi finanziari: si generano dati sintetici per imitare eventi rari come transazioni fraudolente, rilevamento di anomalie e recessioni economiche. Si usano anche per comprendere i comportamenti dei clienti con strumenti di analisi. 
  3. Quality Assurance: mantenere e testare la qualità di applicazioni o sistemi dati. I dati sintetici vengono generati per testare i sistemi su anomalie più rare e migliorarne le prestazioni.
  4. Sanità: permettono di condividere cartelle cliniche internamente ed esternamente preservando la riservatezza dei pazienti. Puoi usarli anche per studi clinici e per il rilevamento di malattie rare. Impara a trattare informazioni sensibili seguendo un corso su privacy dei dati e anonimizzazione con Python o R. 
  5. Automotive: è difficile e lento ottenere dati reali per robot, droni e auto a guida autonoma. Le aziende testano e addestrano i loro sistemi su dati di simulazione sintetici, riducendo i costi senza compromettere le prestazioni. 
  6. Machine learning: possiamo usare i dati sintetici per aumentare la dimensione dei dataset di training, risolvere problemi di sbilanciamento e testare i modelli per garantirne prestazioni e accuratezza. Si usano anche per ridurre i bias nei dati di immagini e testo esistenti. Aiutano a testare i sistemi e a mantenere la privacy degli utenti. Ad esempio, i DeepFake vengono usati per testare i sistemi di riconoscimento facciale. 

Come generare dati sintetici

Possiamo usare generatori di dati fittizi, strumenti statistici, reti neurali e Generative Adversarial Network per generare dati sintetici.  

Generare database fittizi usando la libreria Faker per testare database e sistemi. Può generare profili utente fittizi con indirizzi e tutte le informazioni essenziali. Puoi usarla anche per generare testo e paragrafi casuali. Aiuta le aziende a proteggere la privacy degli utenti in fase di test e a risparmiare sull’acquisizione di dataset reali. 

Capire la distribuzione dei dati per generare un dataset completamente nuovo con strumenti statistici come Gaussiana, Esponenziale, Chi-quadro, t, lognormale e Uniforme. Serve conoscenza del dominio per generare dati sintetici basati su distribuzioni. 

Variational Autoencoder è un metodo di apprendimento non supervisionato che usa un encoder e un decoder per comprimere il dataset originale e generare una rappresentazione del dataset originale. È progettato per ottimizzare la correlazione tra dataset di input e di output. 

Generative Adversarial Network è il modo più diffuso per generare dati. Puoi usarla per creare immagini, audio, dati tabellari e dati di simulazione sintetici. Utilizza un’architettura di deep learning con generatore e discriminatore per produrre dati sintetici confrontando campioni casuali con dati reali. Leggi il nostro tutorial Demistificare le Generative Adversarial Net per creare i tuoi dati sintetici con Keras.  

Che cos’è Python Faker?

Python Faker è un pacchetto Python open source usato per creare dataset fittizi per il testing delle applicazioni, il bootstrap dei database e il mantenimento dell’anonimato degli utenti.

faker

Immagine dell’autore

Puoi installare Faker con:

pip install faker

Faker offre supporto da riga di comando, fixture per Pytest, localizzazione (supporto per diverse aree geografiche), riproducibilità e provider dinamici (personalizzabili secondo le tue esigenze).

Puoi anche usare le funzionalità di base di Faker per creare rapidamente un dataset e personalizzarlo secondo le tue necessità. Nella tabella seguente trovi varie funzioni di Faker e il loro scopo. 

Funzione Faker

Scopo

name()

Genera un nome completo fittizio

credit_card_full()

Genera un numero di carta di credito con scadenza e CVV

email()

Genera un indirizzo email fittizio

url()

Genera un URL fittizio

phone_number()

Genera un numero di telefono fittizio con prefisso internazionale

address()

Genera un indirizzo completo fittizio

license_plate()

Genera una targa fittizia 

currency()

Genera una tupla con codice valuta e nome per esteso

color_name()

Genera un nome di colore casuale

local_latlng()

Genera latitudine, longitudine, area, paese e stato

domain_name()

Genera un sito web fittizio basato sul nome della persona

text()

Genera un breve testo fittizio

company()

Genera un nome di azienda fittizio

Per scoprire funzioni più avanzate, consulta la documentazione di Faker.

È importante rivedere queste funzioni perché le useremo per creare vari esempi e dataframe. 

Generazione di dati sintetici con Python Faker

In questa sezione useremo Python Faker per generare dati sintetici. Comprende 5 esempi di come usare Faker per vari compiti. L’obiettivo principale è sviluppare un approccio incentrato sulla privacy per testare i sistemi. Nell’ultima parte genereremo dati fittizi per integrare i dati originali utilizzando il provider localizzato di Faker. 

Puoi trovare tutto il codice di questo tutorial in questo workbook DataLab; puoi creare facilmente una tua copia del workbook per eseguire tutto il codice nel browser, senza installare nulla sul tuo computer.

Per iniziare, inizializzeremo un generatore di finti dati con `Faker()`. Per impostazione predefinita usa la locale “en_US”. 

from faker import Faker
fake = Faker()

Esempio 1

L’oggetto “fake” può generare dati usando i nomi delle proprietà. Ad esempio, `fake.name()` genera il nome completo casuale di una persona.

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

Allo stesso modo, possiamo generare un indirizzo email fittizio, un nome di paese, testo, geolocalizzazione e URL, come mostrato di seguito.  

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/

Esempio 2

Puoi usare diverse locale per generare dati in varie lingue e per aree geografiche distinte. 

Nell’esempio seguente genereremo dati in spagnolo per la regione Spagna.

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

Come possiamo vedere, il nome della persona è cambiato e il testo è in spagnolo.

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/

Proviamo ora con la lingua tedesca e la Germania come paese. Per generare un profilo utente completo useremo la funzione `profile()`.

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

Output

È piuttosto chiaro come possiamo usare Faker per generare dati in varie lingue per diversi paesi. Cambiare la locale modificherà nome, lavoro, indirizzo, azienda e altre informazioni identificative in base a lingua e paese.  

{'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)}

Esempio 3

In questo esempio creeremo un dataframe pandas usando Faker.

  1. Crea un dataframe pandas vuoto (data)
  2. Passalo in x cicli per creare più righe
  3. Usa `randint()` per generare un id univoco
  4. Usa Faker per creare nome, indirizzo e geolocalizzazione
  5. Esegui la funzione `input_data()` con 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)

L’output è ottimo: abbiamo colonne id, name, address, latitude e longitude con dati utente univoci. 

Output1

Per riprodurre il risultato dobbiamo impostare il seed. Così, ogni volta che rieseguiamo la cella, otterremo risultati simili. 

Faker.seed(2)
input_data(10)

Output2

Esempio 4

Possiamo anche generare una frase che contenga parole chiave a nostra scelta. Simile a `text(), texts(), paragraph(), word() e words()`. Puoi aumentare il numero di parole in una frase impostando l’argomento nb_words.

Nell’esempio seguente generiamo cinque frasi usando una lista di parole. Non è perfetto, ma può aiutarci a testare applicazioni che richiedono grandi quantità di testo. 

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.

Fondere dati sintetici e reali

In questa parte useremo i dati E‑Commerce dal repository di dataset di DataCamp e aggiungeremo dati utente fittizi utilizzando le colonne CustomerID e Country. Ci aiuterà a mantenere la privacy degli utenti e a testare il sistema su parametri aggiuntivi. 

Per caricare il file CSV useremo la funzione pandas `read_csv()` e mostreremo le prime cinque righe con `head()`

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

Il dataset include le colonne InvoiceNo, StockCode (ID prodotto), Description, Product (nome articolo), Quantity (per transazione), InvoiceDate, UnitPrice (in sterline), CustomerID e Country. 

Output3

Per creare un oggetto faker localizzato, mostreremo i nomi dei paesi unici e li useremo per creare un dizionario. Come possiamo osservare, abbiamo sette paesi e nel prossimo passaggio creeremo sette generatori localizzati di Faker. 

Ecommerce.Country.dropna().unique()

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

Nella funzione `anonymous` abbiamo:

  1. Estratto gli id cliente univoci e rimosso i valori mancanti
  2. Creato un dizionario di nomi di paesi e abbreviazioni delle locale
  3. Estratto l’indice di riga e il paese per ciascun id cliente univoco
  4. Usato il dizionario e il nome del paese per inizializzare un generatore faker localizzato
  5. Aggiunto nome cliente, indirizzo e geolocalizzazione al dataframe esistente. 

La funzione seguente usa il dataframe e aggiunge quattro nuove colonne con dati utente in base alle colonne CustomerID e 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

Useremo seed(5) per la riproducibilità ed eseguiremo la funzione `anonymous` sul dataframe Ecommerce. 

# Using seed for reproducibility
Faker.seed(5)

secure_db = anonymous(Ecommerce)
secure_db

Le prime righe mostrano i dati per 17850, United Kingdom e Pamela Cox‑James. 

Output4

Per visualizzare i risultati localizzati della funzione, dobbiamo osservare i dati per ciascun paese unico nella colonna Country. 

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)

Il risultato è promettente. Puoi vedere nomi diversi per regione e lingua. Gli indirizzi sono coerenti con il paese. Con questo metodo puoi rimuovere i dati identificativi personali e creare dati localizzati con Faker per proteggere la privacy degli utenti e risparmiare denaro. 

Output5

Il codice sorgente è disponibile in questo workbook DataLab.

Conclusione 

Uno degli svantaggi di usare Python Faker è la scarsa qualità dei dati generati. Va bene per il testing delle applicazioni, ma manca di accuratezza. Ad esempio, i nomi non corrispondono a email, dominio o username. 

Puoi personalizzare il provider o crearne uno nuovo in base alle tue preferenze, ma servirà tempo extra per perfezionare il sistema. In quel tempo potresti creare un tuo pacchetto Python usando `random.choice()`.

Nelle big tech, i data scientist usano vari strumenti per trattare dati sensibili e mantenere la privacy. Usano anche dati sintetici per migliorare le prestazioni dei modelli, ridurre i bias, testare applicazioni e risparmiare nello sviluppo di soluzioni di IA all’avanguardia. 

Se vuoi saperne di più, dai un’occhiata al career track Data Scientist with Python per iniziare il tuo percorso e diventare un data scientist sicuro di sé.

In questo tutorial abbiamo visto l’importanza dei dati sintetici e le loro applicazioni. Abbiamo anche generato dati fittizi da zero con Python Faker per testare i sistemi di dati e mantenere la privacy degli utenti.

Argomenti
Python
Data Science

Corsi per Python

Corso

Python - Livello Intermedio

4 ore
1.4M
Migliora le tue competenze nella scienza dei dati creando visualizzazioni con Matplotlib e manipolando DataFrames con pandas.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro