Εκμάθηση: Ανάλυση λειτουργικών εξαρτήσεων σε ένα σημασιολογικό μοντέλο
Σε αυτή την εκμάθηση, θα βασιστείτε σε προηγούμενες εργασίες που έγιναν από έναν αναλυτή Power BI και αποθηκεύατε με τη μορφή σημασιολογικών μοντέλων (σύνολα δεδομένων Power BI). Χρησιμοποιώντας το SemPy (προεπισκόπηση) στην εμπειρία Synapse Data Science εντός του Microsoft Fabric, αναλύετε τις λειτουργικές εξαρτήσεις που υπάρχουν σε στήλες ενός DataFrame. Αυτή η ανάλυση σάς βοηθά να ανακαλύψετε μη εγγενή προβλήματα ποιότητας δεδομένων, προκειμένου να λάβετε πιο ακριβείς πληροφορίες.
Σε αυτή την εκμάθηση, θα μάθετε πώς μπορείτε να κάνετε τα εξής:
- Εφαρμόστε γνώσεις τομέα σε υποθέσεις τύπων σχετικά με λειτουργικές εξαρτήσεις σε ένα μοντέλο σημασιολογίας.
- Εξοικειωθείτε με τα στοιχεία της βιβλιοθήκης Python της σημασιολογικής σύνδεσης (SemPy) που υποστηρίζουν ενοποίηση με το Power BI και βοηθούν στην αυτοματοποίηση της ανάλυσης ποιότητας δεδομένων. Αυτά τα στοιχεία περιλαμβάνουν:
- FabricDataFrame - μια δομή που μοιάζει με pandas ενισχυμένη με πρόσθετες σημασιολογικές πληροφορίες.
- Χρήσιμες συναρτήσεις για την άντληση σημασιολογικών μοντέλων από έναν χώρο εργασίας Fabric στο σημειωματάριό σας.
- Χρήσιμες συναρτήσεις που αυτοματοποιούν την αξιολόγηση υποθέσεων σχετικά με λειτουργικές εξαρτήσεις και που αναγνωρίζουν παραβιάσεις των σχέσεων στα σημασιολογικά μοντέλα σας.
Προϋποθέσεις
Λάβετε μια συνδρομής Microsoft Fabric . Εναλλακτικά, εγγραφείτε για μια δωρεάν δοκιμαστική έκδοση microsoft Fabric.
Εισέλθετε για να το Microsoft Fabric.
Χρησιμοποιήστε την εναλλαγή εμπειρίας στην κάτω αριστερή πλευρά της αρχικής σελίδας σας για να μεταβείτε σε Fabric.
Επιλέξτε χώροι εργασίας από το αριστερό παράθυρο περιήγησης για να βρείτε και να επιλέξετε τον χώρο εργασίας σας. Αυτός ο χώρος εργασίας γίνεται ο τρέχων χώρος εργασίας σας.
Κάντε λήψη του
σημασιολογικό μοντέλο από το αποθετήριοCustomer Profitability Sample.pbix fabric-samples GitHub . Στον χώρο εργασίας σας, επιλέξτε
Εισαγωγή Αναφορά ή Σελιδοποιημένη αναφορά Από αυτόν τον υπολογιστή για να αποστείλετε το αρχείο Δείγμα κερδοφορίας πελάτη.pbix στον χώρο εργασίας σας.
Ακολουθήστε τις οδηγίες στο σημειωματάριο
Το σημειωματάριο
Για να ανοίξετε το σημειωματάριο που συνοδεύει αυτό το εκπαιδευτικό βοήθημα, ακολουθήστε τις οδηγίες στο Προετοιμασία του συστήματός σας για εκπαιδευτικά βοηθήματα επιστήμης δεδομένων, να εισαγάγετε το σημειωματάριο στον χώρο εργασίας σας.
Εάν προτιμάτε να αντιγράψετε και να επικολλήσετε τον κώδικα από αυτήν τη σελίδα, μπορείτε να δημιουργήσετε ένα νέο σημειωματάριο.
Βεβαιωθείτε ότι επισυνάψετε μια λίμνη στο σημειωματάριο προτού ξεκινήσετε την εκτέλεση κώδικα.
Ρύθμιση του σημειωματάριου
Σε αυτή την ενότητα, ρυθμίζετε ένα περιβάλλον σημειωματάριου με τις απαραίτητες λειτουργικές μονάδες και δεδομένα.
Εγκαταστήστε
SemPy
από το PyPI χρησιμοποιώντας τη δυνατότητα εγκατάστασης%pip
εντός του σημειωματάριου:%pip install semantic-link
Εκτελέστε τις απαραίτητες εισαγωγές λειτουργικών μονάδων που θα χρειαστείτε αργότερα:
import sempy.fabric as fabric from sempy.dependencies import plot_dependency_metadata
Φόρτωση και προεπεξεργασία των δεδομένων
Αυτό το εκπαιδευτικό βοήθημα χρησιμοποιεί ένα τυπικό δείγμα σημασιολογικού μοντέλου δείγμα κερδοφορίας πελάτη.pbix. Για μια περιγραφή του μοντέλου σημασιολογίας, ανατρέξτε στο θέμα δείγμα κερδοφορίας πελάτη για το Power BI.
Φορτώστε τα δεδομένα του Power BI στο FabricDataFrames, χρησιμοποιώντας τη
read_table
συνάρτηση του SemPy:dataset = "Customer Profitability Sample" customer = fabric.read_table(dataset, "Customer") customer.head()
Φορτώστε τον πίνακα
State
σε ένα FabricDataFrame:state = fabric.read_table(dataset, "State") state.head()
Παρόλο που το αποτέλεσμα αυτού του κώδικα μοιάζει με pandas DataFrame, στην πραγματικότητα έχετε προετοιμάσει μια δομή δεδομένων που ονομάζεται
FabricDataFrame
που υποστηρίζει ορισμένες χρήσιμες λειτουργίες με βάση τα pandas.Ελέγξτε τον τύπο δεδομένων του
customer
:type(customer)
Η έξοδος επιβεβαιώνει ότι
customer
είναι τύπουsempy.fabric._dataframe._fabric_dataframe.FabricDataFrame
."Συμμετάσχετε στα
customer
καιstate
DataFrames:customer_state_df = customer.merge(state, left_on="State", right_on="StateCode", how='left') customer_state_df.head()
Προσδιορισμός λειτουργικών εξαρτήσεων
Μια λειτουργική εξάρτηση εκδηλώνεται ως σχέση ένα-προς-πολλά μεταξύ των τιμών σε δύο (ή περισσότερες) στήλες μέσα σε ένα DataFrame. Αυτές οι σχέσεις μπορούν να χρησιμοποιηθούν για τον αυτόματο εντοπισμό προβλημάτων ποιότητας δεδομένων.
Εκτελέστε τη συνάρτηση
find_dependencies
του SemPy στο συγχωνευμένο DataFrame για να αναγνωρίσετε τυχόν υπάρχουσες λειτουργικές εξαρτήσεις μεταξύ των τιμών στις στήλες:dependencies = customer_state_df.find_dependencies() dependencies
Απεικονίστε τις εξαρτήσεις που εντοπίστηκαν χρησιμοποιώντας τη συνάρτηση
plot_dependency_metadata
του SemPy:plot_dependency_metadata(dependencies)
Όπως αναμενόταν, το γράφημα λειτουργικών εξαρτήσεων δείχνει ότι η στήλη
Customer
προσδιορίζει ορισμένες στήλες όπωςCity
,Postal Code
καιName
.Παραδόξως, το γράφημα δεν εμφανίζει λειτουργική εξάρτηση μεταξύ
City
καιPostal Code
, πιθανώς επειδή υπάρχουν πολλές παραβιάσεις στις σχέσεις μεταξύ των στηλών. Μπορείτε να χρησιμοποιήσετε τη συνάρτησηplot_dependency_violations
του SemPy για να απεικονίσετε παραβιάσεις των εξαρτήσεων μεταξύ συγκεκριμένων στηλών.
Εξερεύνηση των δεδομένων για ποιοτικά προβλήματα
Σχεδιάστε ένα γράφημα με τη συνάρτηση
plot_dependency_violations
απεικόνισης του SemPy.customer_state_df.plot_dependency_violations('Postal Code', 'City')
Η σχεδίαση των παραβιάσεων εξάρτησης εμφανίζει τιμές για
Postal Code
στην αριστερή πλευρά και τιμές γιαCity
στη δεξιά πλευρά. Ένα άκρο συνδέει έναPostal Code
στην αριστερή πλευρά με έναCity
στη δεξιά πλευρά, εάν υπάρχει μια γραμμή που περιέχει αυτές τις δύο τιμές. Τα άκρα επισημαίνονται με το πλήθος αυτών των γραμμών. Για παράδειγμα, υπάρχουν δύο γραμμές με ταχυδρομικό κώδικα 20004, η μία με την πόλη "Βόρειος Πύργος" και η άλλη με την πόλη "Ουάσιγκτον".Επιπλέον, η σχεδίαση παρουσιάζει μερικές παραβιάσεις και πολλές κενές τιμές.
Επιβεβαιώστε τον αριθμό των κενών τιμών για
Postal Code
:customer_state_df['Postal Code'].isna().sum()
50 γραμμές έχουν NA για ταχυδρομικό κώδικα.
Αποθέστε γραμμές με κενές τιμές. Στη συνέχεια, βρείτε τις εξαρτήσεις χρησιμοποιώντας τη συνάρτηση
find_dependencies
. Παρατηρήστε ότι η επιπλέον παράμετροςverbose=1
που προσφέρει μια ματιά στις εσωτερικές λειτουργίες του SemPy:customer_state_df2=customer_state_df.dropna() customer_state_df2.find_dependencies(verbose=1)
Η εντροπία υπό όρους για
Postal Code
καιCity
είναι 0,049. Αυτή η τιμή υποδεικνύει ότι υπάρχουν παραβιάσεις λειτουργικής εξάρτησης. Πριν διορθώσετε τις παραβιάσεις, αυξήστε το όριο στην εντροπία υπό όρους από την προεπιλεγμένη τιμή του0.01
σε0.05
, απλώς για να δείτε τις εξαρτήσεις. Τα χαμηλότερα όρια έχουν ως αποτέλεσμα λιγότερες εξαρτήσεις (ή υψηλότερη επιλεκτικότητα).Αυξήστε το όριο στην εντροπία υπό όρους από την προεπιλεγμένη τιμή του
0.01
σε0.05
:plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
Εάν εφαρμόζετε γνώση τομέα για την οποία η οντότητα προσδιορίζει τις τιμές άλλων οντοτήτων, αυτό το γράφημα εξαρτήσεων φαίνεται ακριβές.
Εξερευνήστε περισσότερα προβλήματα ποιότητας δεδομένων που εντοπίστηκαν. Για παράδειγμα, ένα διακεκομμένη βέλος συνδέει
City
καιRegion
, το οποίο υποδεικνύει ότι η εξάρτηση είναι μόνο κατά προσέγγιση. Αυτή η κατά προσέγγιση σχέση μπορεί να σημαίνει ότι υπάρχει μια μερική λειτουργική εξάρτηση.customer_state_df.list_dependency_violations('City', 'Region')
Ρίξτε μια πιο προσεκτική ματιά σε κάθε μία από τις περιπτώσεις όπου μια μη
Region
τιμή προκαλεί παραβίαση:customer_state_df[customer_state_df.City=='Downers Grove']
Το αποτέλεσμα δείχνει την πόλη Ντάουνερς Γκρόουβ να εμφανίζεται στο Ιλινόις και τη Νεμπράσκα. Ωστόσο, το Downer's Grove είναι μια πόλη στο Ιλινόις, όχι στη Νεμπράσκα.
Ρίξτε μια ματιά στην πόλη του Fremont:
customer_state_df[customer_state_df.City=='Fremont']
Υπάρχει μια πόλη που λέγεται Φρεμόντ στην Καλιφόρνια. Ωστόσο, για το Τέξας, η μηχανή αναζήτησης επιστρέφει Premont, όχι στο Fremont.
Είναι επίσης ύποπτο να δείτε παραβιάσεις της εξάρτησης μεταξύ
Name
καιCountry/Region
, όπως υποδεικνύεται από τη διάστικτη γραμμή στο αρχικό γράφημα παραβιάσεων εξάρτησης (πριν από την πτώση των γραμμών με κενές τιμές).customer_state_df.list_dependency_violations('Name', 'Country/Region')
Φαίνεται ότι ένας πελάτης, SDI Design υπάρχει σε δύο περιοχές - Ηνωμένες Πολιτείες και Καναδάς. Αυτό το περιστατικό μπορεί να μην αποτελεί σημασιολογική παραβίαση, αλλά μπορεί να είναι μια ασυνήθιστη περίπτωση. Ωστόσο, αξίζει να ρίξετε μια προσεκτική ματιά:
Ρίξτε μια πιο προσεκτική ματιά στοσχεδίασης SDI
πελάτη: customer_state_df[customer_state_df.Name=='SDI Design']
Περαιτέρω επιθεώρηση δείχνει ότι είναι στην πραγματικότητα δύο διαφορετικοί πελάτες (από διαφορετικές βιομηχανίες) με το ίδιο όνομα.
Η διερευνητική ανάλυση δεδομένων είναι μια συναρπαστική διαδικασία, το ίδιο και η εκκαθάριση δεδομένων. Πάντα υπάρχει κάτι που κρύβεται από τα δεδομένα, ανάλογα με το πώς τα βλέπετε, τι θέλετε να ρωτήσετε και ούτω καθεξής. Η Σύνδεση σημασιολογίας σάς παρέχει νέα εργαλεία που μπορείτε να χρησιμοποιήσετε για να επιτύχετε περισσότερα με τα δεδομένα σας.
Σχετικό περιεχόμενο
Δείτε άλλα προγράμματα εκμάθησης για τη σημασιολογική σύνδεση / SemPy:
- Εκμάθηση : Καθαρισμός δεδομένων με λειτουργικές εξαρτήσεις
- Εκμάθηση : Εξαγωγή και υπολογισμός μετρήσεων Power BI από ένα σημειωματάριο Jupyter
- Εκμάθηση : Εντοπισμός σχέσεων σε ένα μοντέλο σημασιολογίας, χρησιμοποιώντας σημασιολογική σύνδεση
- Εκμάθηση : Εντοπισμός σχέσεων στο σύνολο δεδομένων Synthea, με χρήση σύνδεσης σημασιολογίας
- Εκμάθηση : Επικύρωση δεδομένων με χρήση των SemPy και Μεγάλων προσδοκιών (GX)