Condividi tramite


Rilevare, esplorare e convalidare le dipendenze funzionali nei dati usando il collegamento semantico

Le dipendenze funzionali sono relazioni tra colonne in una tabella, in cui i valori in una colonna determinano i valori in un'altra colonna. Comprendere queste dipendenze consente di individuare modelli e relazioni nei dati. Questa comprensione può essere utile per la progettazione delle funzionalità, la pulizia dei dati e le attività di compilazione dei modelli. Le dipendenze funzionali fungono da invariante efficace che consente di trovare e risolvere problemi di qualità dei dati che potrebbero essere difficili da rilevare in caso contrario.

In questo articolo si usa il collegamento semantico per:

  • Trovare le dipendenze tra le colonne di un FabricDataFrame
  • Visualizza le dipendenze
  • Identificare i problemi di qualità dei dati
  • Visualizzare i problemi di qualità dei dati
  • Applicare vincoli funzionali tra colonne in un set di dati

Prerequisiti

  • Ottenere una sottoscrizione Microsoft Fabric. In alternativa, iscriversi per ottenere una versione di valutazione gratuita Microsoft Fabric.

  • Accedere a Microsoft Fabric.

  • Passare a Fabric usando il commutatore dell'esperienza in basso a sinistra della tua home page.

    Screenshot che mostra la selezione di

  • Passare all'esperienza di data science disponibile in Microsoft Fabric.
  • Creare un nuovo notebook per copiare e incollare il codice nelle celle.
  • Per Spark 3.4 e versioni successive, il collegamento semantico è disponibile nel runtime predefinito quando si usa Fabric e non è necessario installarlo. Se si sta usando Spark 3.3 o versioni precedenti, o se si vuole eseguire l'aggiornamento alla versione più recente del collegamento semantico, è possibile eseguire il comando: python %pip install -U semantic-link
  • Aggiungere un lakehouse al notebook.

Il collegamento semantico è disponibile nel runtime predefinito di Fabric. Per eseguire l'aggiornamento alla versione più recente del collegamento semantico, eseguire questo comando:

%pip install -U semantic-link

Trovare dipendenze funzionali nei dati

La funzione SemPy find_dependencies rileva le dipendenze funzionali tra le colonne di un FabricDataFrame. La funzione usa una soglia sull'entropia condizionale per individuare dipendenze funzionali approssimative, in cui l'entropia condizionale bassa indica una forte dipendenza tra le colonne. Per rendere la find_dependencies funzione più selettiva, impostare una soglia inferiore sull'entropia condizionale. La soglia inferiore indica che vengono rilevate solo dipendenze più forti.

Questo frammento di codice Python illustra come usare find_dependencies:

from sempy.fabric import FabricDataFrame
from sempy.dependencies import plot_dependency_metadata
import pandas as pd


df = FabricDataFrame(pd.read_csv("your_data.csv"))

deps = df.find_dependencies()

La funzione find_dependencies restituisce un FabricDataFrame con dipendenze rilevate tra colonne. Un elenco rappresenta le colonne con corrispondenza 1:1. La funzione rimuove anche i bordi transitivi, per tentare di eliminare le potenziali dipendenze.

Quando si specifica l'opzione dropna=True , la funzione elimina le righe con un valore NaN in entrambe le colonne dalla valutazione. Questa eliminazione può comportare dipendenze nontransitive, come illustrato nell'esempio seguente:

Un B C
1 1 1
1 1 1
1 NaN 9
2 NaN 2
2 2 2

In alcuni casi, la catena di dipendenze può formare cicli quando si specifica l'opzione dropna=True , come illustrato nell'esempio seguente:

Un B C
1 1 NaN
2 1 NaN
NaN 1 1
NaN 2 1
1 NaN 1
1 NaN 2

Visualizza le dipendenze nei dati

Dopo aver individuato le dipendenze funzionali in un set di dati usando find_dependencies, è possibile visualizzare le dipendenze usando la plot_dependency_metadata funzione . Questa funzione accetta l'oggetto FabricDataFrame risultante da find_dependencies e crea una rappresentazione visiva delle dipendenze tra colonne e gruppi di colonne.

Questo frammento di codice Python illustra come usare plot_dependencies:

from sempy.fabric import FabricDataFrame
from sempy.dependencies import plot_dependency_metadata
from sempy.samples import download_synthea
import pandas as pd

download_synthea(which='small')

df = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv"))

deps = df.find_dependencies()
plot_dependency_metadata(deps)

La funzione plot_dependency_metadata genera una visualizzazione che mostra i raggruppamenti 1:1 delle colonne. Le colonne che appartengono a un singolo gruppo vengono inserite in una singola cella. Se la funzione non trova candidati adatti, restituisce un FabricDataFrame vuoto. Screenshot che mostra l'output della funzione plot_dependencies.

Screenshot che mostra i risultati della funzione plot_dependencies.

Identificare i problemi di qualità dei dati

I problemi di qualità dei dati possono assumere molte forme, ad esempio valori mancanti, incoerenze o imprecisioni. Per garantire l'affidabilità e la validità di qualsiasi analisi o modello basato sui dati, è importante identificare e risolvere questi problemi. Un modo per rilevare i problemi di qualità dei dati consiste nell'esaminare le violazioni delle dipendenze funzionali tra colonne in un set di dati.

La list_dependency_violations funzione consente di trovare violazioni delle dipendenze funzionali tra le colonne del set di dati. Quando si specifica una colonna determinante e una colonna dipendente, la funzione mostra i valori che violano la dipendenza funzionale, insieme al conteggio delle rispettive occorrenze. Queste informazioni consentono di esaminare le dipendenze approssimative e identificare i problemi di qualità dei dati.

Il frammento di codice seguente illustra come usare la list_dependency_violations funzione :

from sempy.fabric import FabricDataFrame
from sempy.samples import download_synthea
import pandas as pd

download_synthea(which='small')

df = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv"))

violations = df.list_dependency_violations(determinant_col="ZIP", dependent_col="CITY")

In questo esempio, la funzione presuppone una dipendenza funzionale tra le colonne ZIP (determinante) e CITY (dipendente). Se il set di dati presenta problemi di qualità dei dati, ad esempio lo stesso codice POSTALE assegnato a più città, la funzione restituisce i dati con i problemi:

formato ZIP CITTÀ numero
12345 Boston 2
12345 Seattle 1

Questo output indica che due città diverse (Boston e Seattle) hanno lo stesso valore di CAP (12345). Questo risultato suggerisce un problema di qualità dei dati all'interno del set di dati.

La funzione list_dependency_violations offre più opzioni che possono gestire i valori mancanti, mostrare i valori mappati a quelli violati, limitare il numero di violazioni restituite e ordinare i risultati in base al numero o alla colonna chiave.

L'output list_dependency_violations consente di identificare i problemi di qualità dei dati del set di dati. Tuttavia, è necessario esaminare attentamente i risultati e considerare il contesto dei dati, per determinare il corso di azione più appropriato per risolvere i problemi identificati. Questo approccio potrebbe comportare una maggiore pulizia, convalida o esplorazione dei dati per garantire l'affidabilità e la validità dell'analisi o del modello.

Visualizzare i problemi di qualità dei dati

I problemi di qualità dei dati possono danneggiare l'affidabilità e la validità di qualsiasi analisi o modello basato su tali dati. Identificare e risolvere questi problemi è importante per garantire l'accuratezza dei risultati. Per rilevare i problemi di qualità dei dati, esaminare le violazioni delle dipendenze funzionali tra colonne in un set di dati. La visualizzazione di queste violazioni può mostrare più chiaramente i problemi e aiutarvi a risolverli in modo più efficace.

La funzione plot_dependency_violations consente di identificare le violazioni delle dipendenze funzionali tra colonne in un set di dati. Data una colonna determinante e una colonna dipendente, questa funzione mostra i valori violanti in un formato grafico, per semplificare la comprensione della natura e della portata dei problemi di qualità dei dati.

Questo frammento di codice mostra come usare la plot_dependency_violations funzione :

from sempy.fabric import FabricDataFrame
from sempy.samples import download_synthea
import pandas as pd

download_synthea(which='small')

df = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv"))

df.plot_dependency_violations(determinant_col="ZIP", dependent_col="CITY")

In questo esempio, la funzione presuppone una dipendenza funzionale esistente tra le colonne ZIP (determinante) e CITY (dipendente). Se il set di dati presenta problemi di qualità dei dati, ad esempio lo stesso codice POSTALE assegnato a più città, la funzione genera un grafico dei valori che violano.

La plot_dependency_violations funzione offre ulteriori opzioni che possono gestire i valori mancanti, mostrare i valori mappati ai valori di violazione, limitare il numero di violazioni restituite e ordinare i risultati in base al conteggio o alla colonna di determinante.

La plot_dependency_violations funzione genera una visualizzazione che consente di identificare i problemi di qualità dei dati del set di dati. Tuttavia, è necessario esaminare attentamente i risultati e considerare il contesto dei dati, per determinare il corso di azione più appropriato per risolvere i problemi identificati. Questo approccio potrebbe comportare una maggiore pulizia, convalida o esplorazione dei dati per garantire l'affidabilità e la validità dell'analisi o del modello.

Screenshot che mostra l'output della funzione plot_dependency_violations.

Applicare vincoli funzionali

La qualità dei dati è fondamentale per garantire l'affidabilità e la validità di qualsiasi analisi o modello basato su un set di dati. L'applicazione di vincoli funzionali tra colonne in un set di dati può contribuire a migliorare la qualità dei dati. I vincoli funzionali assicurano che le relazioni tra le colonne abbiano precisione e coerenza, che possono portare a un'analisi o a risultati del modello più accurati.

La drop_dependency_violations funzione applica vincoli funzionali tra le colonne di un set di dati. Rimuove le righe che violano un determinato vincolo. Data una colonna determinante e una colonna dipendente, questa funzione rimuove le righe con valori non conformi al vincolo funzionale tra le due colonne.

Questo frammento di codice mostra come usare la drop_dependency_violations funzione :

from sempy.fabric import FabricDataFrame
from sempy.samples import download_synthea
import pandas as pd

download_synthea(which='small')

df = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv"))

cleaned_df = df.drop_dependency_violations(determinant_col="ZIP", dependent_col="CITY")

In questo esempio, la funzione applica un vincolo funzionale tra le colonne ZIP (determinante) e CITY (dipendente). Per ogni valore del determinante, la funzione seleziona il valore più comune della colonna dipendente e elimina tutte le righe con altri valori. Ad esempio, dato questo set di dati, la riga con CITY=Seattle viene eliminata e la dipendenza funzionale ZIP -> CITY vale nell'output.

formato ZIP CITTÀ
12345 Seattle
12345 Boston
12345 Boston
98765 Baltimore
00000 San Francisco

La funzione drop_dependency_violations fornisce l'opzione verbose per controllare il livello di dettaglio dell'output. Impostando verbose=1è possibile visualizzare il numero di righe eliminate. Un valore verbose=2 mostra il contenuto completo delle righe rimosse.

La drop_dependency_violations funzione può applicare vincoli funzionali tra le colonne nel set di dati, che consentono di migliorare la qualità dei dati e di ottenere risultati più accurati nell'analisi o nel modello. Tuttavia, considerare attentamente il contesto dei dati e i vincoli funzionali che si sceglie di applicare, per assicurarsi di non rimuovere accidentalmente informazioni preziose dal set di dati.