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
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 |
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.
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.
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.
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.