Σημείωση
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να συνδεθείτε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Χρησιμοποιήστε λειτουργικές εξαρτήσεις για να καθαρίσετε δεδομένα. Μια λειτουργική εξάρτηση υπάρχει όταν μία στήλη σε ένα σημασιολογικό μοντέλο (ένα σύνολο δεδομένων Power BI) εξαρτάται από μια άλλη στήλη. Για παράδειγμα, μια ZIP code στήλη μπορεί να καθορίσει την τιμή σε μια city στήλη. Μια συναρτησιακή εξάρτηση εμφανίζεται ως σχέση ένα-προς-πολλά μεταξύ τιμών σε δύο ή περισσότερες στήλες σε ένα DataFrameαρχείο . Αυτό το πρόγραμμα εκμάθησης χρησιμοποιεί το σύνολο δεδομένων Synthea για να δείξει πώς οι λειτουργικές εξαρτήσεις βοηθούν στον εντοπισμό προβλημάτων ποιότητας δεδομένων.
Σε αυτή την εκμάθηση, θα μάθετε πώς μπορείτε να κάνετε τα εξής:
- Εφαρμόστε τη γνώση τομέα για να διαμορφώσετε υποθέσεις σχετικά με τις συναρτησιακές εξαρτήσεις σε ένα σημασιολογικό μοντέλο.
- Εξοικειωθείτε με στοιχεία της βιβλιοθήκης Semantic Link Python (SemPy) που αυτοματοποιούν την ανάλυση ποιότητας δεδομένων. Αυτά τα στοιχεία περιλαμβάνουν:
-
FabricDataFrame—μια δομή που μοιάζει με πάντα με πρόσθετες σημασιολογικές πληροφορίες. - Συναρτήσεις που αυτοματοποιούν την αξιολόγηση υποθέσεων σχετικά με τις συναρτησιακές εξαρτήσεις και εντοπίζουν παραβιάσεις στα σημασιολογικά μοντέλα σας.
-
Προϋποθέσεις
Λάβετε μια συνδρομής Microsoft Fabric . Εναλλακτικά, εγγραφείτε για μια δωρεάν δοκιμαστική έκδοση microsoft Fabric.
Εισέλθετε για να το Microsoft Fabric.
Μεταβείτε στο Fabric χρησιμοποιώντας την εναλλαγή εμπειριών στην κάτω αριστερή πλευρά της αρχικής σελίδας σας.
- Επιλέξτε Χώροι εργασίας στο παράθυρο περιήγησης και, στη συνέχεια, επιλέξτε τον χώρο εργασίας σας για να τον ορίσετε ως τον τρέχοντα χώρο εργασίας.
Ακολουθήστε τις οδηγίες στο σημειωματάριο
Χρησιμοποιήστε το σημειωματάριο data_cleaning_functional_dependencies_tutorial.ipynb για να ακολουθήσετε αυτό το πρόγραμμα εκμάθησης.
Για να ανοίξετε το σημειωματάριο που συνοδεύει αυτό το εκπαιδευτικό βοήθημα, ακολουθήστε τις οδηγίες στο Προετοιμασία του συστήματός σας για εκπαιδευτικά βοηθήματα επιστήμης δεδομένων, να εισαγάγετε το σημειωματάριο στον χώρο εργασίας σας.
Εάν προτιμάτε να αντιγράψετε και να επικολλήσετε τον κώδικα από αυτήν τη σελίδα, μπορείτε να δημιουργήσετε ένα νέο σημειωματάριο.
Βεβαιωθείτε ότι επισυνάψετε μια λίμνη στο σημειωματάριο προτού ξεκινήσετε την εκτέλεση κώδικα.
Ρύθμιση του σημειωματάριου
Σε αυτήν την ενότητα, μπορείτε να ρυθμίσετε ένα περιβάλλον σημειωματαρίου.
Ελέγξτε την έκδοση Spark. Αν χρησιμοποιείτε το Spark 3.4 ή νεότερη έκδοση στο Microsoft Fabric, το Semantic Link περιλαμβάνεται από προεπιλογή, επομένως δεν χρειάζεται να το εγκαταστήσετε. Εάν χρησιμοποιείτε το Spark 3.3 ή παλαιότερη έκδοση ή θέλετε να κάνετε ενημέρωση στην πιο πρόσφατη σημασιολογική σύνδεση, εκτελέστε την ακόλουθη εντολή.
%pip install -U semantic-linkΕισαγάγετε τις λειτουργικές μονάδες που χρησιμοποιείτε σε αυτό το σημειωματάριο.
import pandas as pd import sempy.fabric as fabric from sempy.fabric import FabricDataFrame from sempy.dependencies import plot_dependency_metadataΚάντε λήψη του δείγματος δεδομένων. Σε αυτό το σεμινάριο, χρησιμοποιήστε το σύνολο δεδομένων Synthea των συνθετικών ιατρικών αρχείων (μικρή έκδοση για απλότητα).
download_synthea(which='small')
Εξερεύνηση των δεδομένων
Προετοιμασία a
FabricDataFrameμε το περιεχόμενο του αρχείου providers.csv .providers = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv")) providers.head()Ελέγξτε για προβλήματα ποιότητας δεδομένων με τη λειτουργία του
find_dependenciesSemPy σχεδιάζοντας ένα γράφημα λειτουργικών εξαρτήσεων που ανιχνεύονται αυτόματα.deps = providers.find_dependencies() plot_dependency_metadata(deps)Το γράφημα δείχνει ότι
IdκαθορίζειNAMEκαιORGANIZATION. Αυτό το αποτέλεσμα είναι αναμενόμενο γιατίIdείναι μοναδικό.Επιβεβαιώστε ότι
Idείναι μοναδικό.providers.Id.is_uniqueΟ κώδικας επιστρέφει
Trueγια να επιβεβαιώσει ότιIdείναι μοναδική.
Ανάλυση των λειτουργικών εξαρτήσεων σε βάθος
Το γράφημα λειτουργικών εξαρτήσεων δείχνει επίσης ότι ORGANIZATION προσδιορίζει ADDRESS και ZIP, όπως αναμένεται. Ωστόσο, μπορεί να περιμένετε ZIP να προσδιορίσετε επίσης CITY, αλλά το διακεκομμένη βέλος υποδεικνύει ότι η εξάρτηση είναι προσεγγισμένη μόνο και δείχνει προς ένα ζήτημα ποιότητας δεδομένων.
Υπάρχουν και άλλες ιδιαιτερότητες στο γράφημα. Για παράδειγμα, NAME δεν προσδιορίζει GENDER, Id, SPECIALITYή ORGANIZATION. Κάθε μία από αυτές τις ιδιαιτερότητες μπορεί να αξίζει να διερευνηθεί.
- Ρίξτε μια βαθύτερη ματιά στην κατά προσέγγιση σχέση μεταξύ
ZIPκαιCITYχρησιμοποιώντας τη λειτουργία τουlist_dependency_violationsSemPy για να απαριθμήσετε τις παραβιάσεις:
providers.list_dependency_violations('ZIP', 'CITY')
- Σχεδιάστε ένα γράφημα με τη συνάρτηση
plot_dependency_violationsαπεικόνισης του SemPy. Αυτό το γράφημα είναι χρήσιμο εάν ο αριθμός των παραβιάσεων είναι μικρός:
providers.plot_dependency_violations('ZIP', 'CITY')
Η πλοκή των παραβιάσεων εξάρτησης δείχνει τιμές για ZIP την αριστερή πλευρά και τιμές για CITY τη δεξιά πλευρά. Ένα άκρο συνδέει έναν ταχυδρομικό κώδικα στην αριστερή πλευρά της σχεδίασης με μια πόλη στη δεξιά πλευρά, εάν υπάρχει μια γραμμή που περιέχει αυτές τις δύο τιμές. Τα άκρα επισημαίνονται με το πλήθος αυτών των γραμμών. Για παράδειγμα, υπάρχουν δύο γραμμές με ταχυδρομικό κώδικα 02747-1242, μία γραμμή με την πόλη "NORTH DARTHMOUTH" και η άλλη με την πόλη "DARTHMOUTH", όπως φαίνεται στο προηγούμενο γράφημα και στον παρακάτω κώδικα:
- Επιβεβαιώστε τις παρατηρήσεις από το διάγραμμα εκτελώντας τον ακόλουθο κώδικα:
providers[providers.ZIP == '02747-1242'].CITY.value_counts()
Η πλοκή δείχνει επίσης ότι, μεταξύ των σειρών που έχουν
CITYως "DARTHMOUTH", εννέα σειρές έχουν 02747-1262ZIP. Η μία σειρά έχει 02747-1242ZIP. Μια σειρά έχει έναZIP02747-2537. Επιβεβαιώστε αυτές τις παρατηρήσεις με τον ακόλουθο κωδικό:providers[providers.CITY == 'DARTHMOUTH'].ZIP.value_counts()Υπάρχουν και άλλοι ταχυδρομικοί κώδικες που σχετίζονται με το "DARTMOUTH", αλλά αυτοί οι ταχυδρομικοί κώδικες δεν εμφανίζονται στο γράφημα των παραβιάσεων εξάρτησης, επειδή δεν υποδηλώνουν προβλήματα ποιότητας δεδομένων. Για παράδειγμα, ο ταχυδρομικός κώδικας "02747-4302" σχετίζεται μοναδικά με το "DARTMOUTH" και δεν εμφανίζεται στο γράφημα παραβιάσεων εξάρτησης. Επιβεβαιώστε εκτελώντας τον ακόλουθο κώδικα:
providers[providers.ZIP == '02747-4302'].CITY.value_counts()
Σύνοψη προβλημάτων ποιότητας δεδομένων που εντοπίστηκαν με το SemPy
Το γράφημα παραβιάσεων εξαρτήσεων εμφανίζει διάφορα ζητήματα ποιότητας δεδομένων σε αυτό το σημασιολογικό μοντέλο:
- Ορισμένα ονόματα πόλεων είναι κεφαλαία. Χρησιμοποιήστε μεθόδους συμβολοσειράς για να διορθώσετε αυτό το ζήτημα.
- Ορισμένα ονόματα πόλεων έχουν προσδιοριζόμενα (ή προθέματα), όπως "Βορράς" και "Ανατολή". Για παράδειγμα, ο ταχυδρομικός κώδικας "2128" αντιστοιχεί στο "EAST BOSTON" μία φορά και στο "BOSTON" μία φορά. Ένα παρόμοιο ζήτημα παρουσιάζεται μεταξύ "NORTH DARTMOUTH" και "DARTMOUTH". Αφήστε αυτά τα προσδιοριστικά ή αντιστοιχίστε τους ταχυδρομικούς κώδικες στην πόλη με το πιο συνηθισμένο φαινόμενο.
- Υπάρχουν τυπογραφικά λάθη σε ορισμένα ονόματα πόλεων, όπως "PITTSFIELD" εναντίον "PITTSFILED" και "NEWBURGPORT" εναντίον "NEWBURYPORT". Για το "NEWBURGPORT", διορθώστε αυτό το τυπογραφικό λάθος χρησιμοποιώντας την πιο συνηθισμένη εμφάνιση. Για το "PITTSFIELD", με μόνο μία εμφάνιση το καθένα, η αυτόματη αποσαφήνιση είναι πολύ πιο δύσκολη χωρίς εξωτερική γνώση ή γλωσσικό μοντέλο.
- Μερικές φορές, προθέματα όπως "West" συντομεύονται στο μοναδικό γράμμα "W". Αντικαταστήστε το "W" με το "West" εάν όλες οι εμφανίσεις του "W" σημαίνουν "West".
- Ο ταχυδρομικός κώδικας "02130" αντιστοιχεί στο "BOSTON" μία φορά και στο "Jamaica Plain" μία φορά. Αυτό το ζήτημα δεν είναι εύκολο να διορθωθεί. Με περισσότερα δεδομένα, αντιστοιχίστε το πιο συνηθισμένο φαινόμενο.
Εκκαθάριση των δεδομένων
Διορθώστε την κεφαλαιοποίηση αλλάζοντας τις τιμές σε κεφαλαία τίτλου.
providers['CITY'] = providers.CITY.str.title()Εκτελέστε ξανά τον εντοπισμό παραβίασης για να επιβεβαιώσετε ότι υπάρχουν λιγότερες ασάφειες.
providers.list_dependency_violations('ZIP', 'CITY')
Περιορίστε τα δεδομένα με μη αυτόματο τρόπο ή αποθέστε γραμμές που παραβιάζουν λειτουργικούς περιορισμούς μεταξύ στηλών χρησιμοποιώντας τη συνάρτηση SemPy drop_dependency_violations .
Για κάθε τιμή της καθοριστικής μεταβλητής, drop_dependency_violations επιλέγει την πιο κοινή τιμή της εξαρτημένης μεταβλητής και απορρίπτει όλες τις γραμμές με άλλες τιμές. Εφαρμόστε αυτήν τη λειτουργία μόνο εάν είστε βέβαιοι ότι αυτή η στατιστική ευρετική οδηγεί σε σωστά αποτελέσματα για τα δεδομένα σας. Διαφορετικά, γράψτε τον δικό σας κωδικό για να χειριστείτε τις παραβιάσεις που εντοπίστηκαν.
Εκτελέστε τη
drop_dependency_violationsσυνάρτηση στις στήλες andZIPCITY.providers_clean = providers.drop_dependency_violations('ZIP', 'CITY')Αναφέρετε τυχόν παραβιάσεις εξάρτησης μεταξύ
ZIPκαιCITY.providers_clean.list_dependency_violations('ZIP', 'CITY')
Ο κωδικός επιστρέφει μια κενή λίστα για να υποδείξει ότι δεν υπάρχουν άλλες παραβιάσεις του λειτουργικού περιορισμού ZIP -> CITY.
Σχετικό περιεχόμενο
Δείτε άλλα μαθήματα για σημασιολογικό σύνδεσμο ή SemPy:
- Εκμάθηση : Ανάλυση λειτουργικών εξαρτήσεων σε ένα δείγμα μοντέλου σημασιολογίας
- Εκμάθηση : Εξαγωγή και υπολογισμός μετρήσεων Power BI από ένα σημειωματάριο Jupyter
- Πρόγραμμα εκμάθησης: Ανακαλύψτε σχέσεις σε ένα σημασιολογικό μοντέλο χρησιμοποιώντας σημασιολογική σύνδεση
- Πρόγραμμα εκμάθησης: Ανακαλύψτε σχέσεις στο σύνολο δεδομένων Synthea χρησιμοποιώντας σημασιολογική σύνδεση
- Εκμάθηση : Επικύρωση δεδομένων με χρήση των SemPy και Μεγάλων προσδοκιών (GX)