Rilevare, esplorare e convalidare le dipendenze funzionali nei dati utilizzando il collegamento semantico
Le dipendenze funzionali sono relazioni tra le colonne di una tabella, in cui i valori in una colonna vengono usati per determinare i valori in un'altra colonna. La comprensione di queste dipendenze consente di individuare modelli e relazioni nei dati, che a loro volta possono essere utili 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 relativi alla qualità dei dati
- Visualizzare i problemi di qualità dei dati
- Applicare vincoli funzionali tra colonne in un set di dati
Prerequisiti
Ottenere una sottoscrizione di Microsoft Fabric. In alternativa, iscriversi per ottenere una versione di valutazione di Microsoft Fabric gratuita.
Accedere a Microsoft Fabric.
Utilizzare l'interruttore di esperienza sul lato inferiore sinistro della home page per passare a Fabric.
- Passare all'esperienza di data science disponibile in Microsoft Fabric.
- Creare un nuovo notebook per copiare/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.
Per Spark 3.4 e versioni successive, il collegamento semantico è disponibile nel runtime predefinito quando si usa Fabric e non è necessario installarlo. Se si usa Spark 3.3 o versione successiva o se si vuole eseguire l'aggiornamento alla versione più recente di Semantic Link, eseguire questo comando:
%pip install -U semantic-link
```
## Find functional dependencies in data
The SemPy `find_dependencies` function detects functional dependencies between the columns of a FabricDataFrame. The function uses a threshold on conditional entropy to discover approximate functional dependencies, where low conditional entropy indicates strong dependence between columns. To make the `find_dependencies` function more selective, you can set a lower threshold on conditional entropy. The lower threshold means that only stronger dependencies will be detected.
This Python code snippet demonstrates how to use `find_dependencies`:
```python
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 mapping 1:1. La funzione rimuove anche i bordi transitivi, per tentare di eliminare le potenziali dipendenze.
Quando si specifica l'opzione dropna=True
, le righe con valore NaN in una delle colonne vengono eliminate dalla valutazione. Ciò può comportare dipendenze nontransitive, come illustrato in questo esempio:
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 in questo esempio:
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 con 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
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 non vengono trovati candidati appropriati, viene restituito un FabricDataFrame vuoto.
Identificare i problemi relativi alla qualità dei dati
I problemi di qualità dei dati possono avere diverse forme, ad esempio valori mancanti, incoerenze o imprecisioni. Identificare e risolvere questi problemi è importante per garantire l'affidabilità e la validità di qualsiasi analisi o modello basato sui dati. 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 identificare le violazioni delle dipendenze funzionali tra le colonne del set di dati. Data una colonna determinante e una colonna dipendente, questa funzione mostra i valori che violano la dipendenza funzionale, insieme al conteggio delle rispettive occorrenze. In questo modo è possibile esaminare le dipendenze approssimative e identificare i problemi di qualità dei dati.
Questo frammento di codice mostra come usare la list_dependency_violations
funzione :
from sempy.fabric import FabricDataFrame
from sempy.samples import download_synthea
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:
ZIP | CITY | 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 suggerisce un problema di qualità dei dati all'interno del set di dati.
La list_dependency_violations
funzione offre altre opzioni che possono gestire i valori mancanti, mostrare i valori mappati ai valori violando i valori, limitare il numero di violazioni restituite e ordinare i risultati in base al conteggio o alla colonna determinante.
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, è possibile 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.dependencies import plot_dependency_violations
from sempy.samples import download_synthea
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 violanti.
La plot_dependency_violations
funzione offre altre opzioni che possono gestire i valori mancanti, mostrare i valori mappati ai valori violando i valori, limitare il numero di violazioni restituite e ordinare i risultati in base al conteggio o alla colonna 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.
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 consentono di garantire che le relazioni tra colonne abbiano precisione e coerenza, che possono portare a un'analisi o a risultati del modello più accurati.
La drop_dependency_violations
funzione consente di applicare vincoli funzionali tra le colonne di un set di dati. Elimina 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
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 caso, la funzione applica un vincolo funzionale tra le colonne ZIP (determinante) e CITY (dipendente). Per ogni valore della determinante, viene selezionato il valore più comune della dipendente e tutte le righe con altri valori vengono escluse. Ad esempio, dato questo set di dati, la riga con CITY=Seattle verrà eliminata e la dipendenza funzionale ZIP -> CITY contiene nell'output:
ZIP | CITY |
---|---|
12345 | Seattle |
12345 | Boston |
12345 | Boston |
98765 | Baltimore |
00000 | San Francisco |
La drop_dependency_violations
funzione fornisce l'opzione verbose
per controllare il livello di dettaglio dell'output. Impostando verbose=1
è possibile visualizzare il numero di righe eliminate. Un verbose=2
valore mostra l'intero contenuto della riga delle righe eliminate.
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, è necessario 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.