Κοινή χρήση μέσω


Εκπαιδευτικό βοήθημα, Μέρος 2: Εξερεύνηση και απεικόνιση δεδομένων με χρήση σημειωματάριων Microsoft Fabric

Σε αυτή την εκμάθηση, θα μάθετε πώς να διεξάγετε διερευνητική ανάλυση δεδομένων (EDA) για να εξετάσετε και να διερευνήσετε τα δεδομένα, συνοψίζοντας παράλληλα τα βασικά χαρακτηριστικά τους μέσω της χρήσης τεχνικών απεικόνισης δεδομένων.

Θα χρησιμοποιήσετε seaborn, μια βιβλιοθήκη απεικόνισης δεδομένων Python που παρέχει μια διασύνδεση υψηλού επιπέδου για τη δημιουργία απεικονίσεων σε πλαίσια δεδομένων και πίνακες. Για περισσότερες πληροφορίες σχετικά με seaborn, ανατρέξτε στο θέμα Seaborn: Statistical Data Visualization.

Θα χρησιμοποιήσετε επίσης το Data Wrangler, ένα εργαλείο που βασίζεται σε σημειωματάριο, το οποίο σας παρέχει μια συναρπαστική εμπειρία για τη διεξαγωγή διερευνητικής ανάλυσης και εκκαθάρισης δεδομένων.

Τα κύρια βήματα σε αυτή την εκμάθηση είναι τα εξής:

  1. Διαβάστε τα δεδομένα που είναι αποθηκευμένα από έναν πίνακα δέλτα στο lakehouse.
  2. Μετατρέψτε ένα Spark DataFrame σε Pandas DataFrame, το οποίο υποστηρίζουν οι βιβλιοθήκες απεικόνισης python.
  3. Χρησιμοποιήστε το Data Wrangler για την εκτέλεση αρχικής εκκαθάρισης και μετασχηματισμού δεδομένων.
  4. Εκτελέστε διερευνητική ανάλυση δεδομένων χρησιμοποιώντας seaborn.

Προϋποθέσεις

  • Λάβετε μια συνδρομής Microsoft Fabric . Εναλλακτικά, εγγραφείτε για μια δωρεάν δοκιμαστική έκδοση microsoft Fabric.

  • Εισέλθετε για να το Microsoft Fabric.

  • Χρησιμοποιήστε την εναλλαγή εμπειρίας στην κάτω αριστερή πλευρά της αρχικής σελίδας σας για να μεταβείτε σε Fabric.

    Στιγμιότυπο οθόνης του μενού εναλλαγής εμπειρίας, που εμφανίζει πού μπορείτε να επιλέξετε Επιστήμη δεδομένων.

Αυτό είναι το μέρος 2 από το 5 της σειράς εκμάθησης. Για να ολοκληρώσετε αυτή την εκμάθηση, ολοκληρώστε πρώτα τα εξής:

Παρακολούθηση στο σημειωματάριο

2-explore-cleanse-data.ipynb είναι το σημειωματάριο που συνοδεύει αυτό το πρόγραμμα εκμάθησης.

Σημαντικός

Επισυνάψτε το ίδιο lakehouse που χρησιμοποιήσατε στο Μέρος 1.

Ανάγνωση ανεπεξέργαστων δεδομένων από το lakehouse

Διαβάστε ανεπεξέργαστα δεδομένα από το τμήμα Files του lakehouse. Αποστείλατε αυτά τα δεδομένα στο προηγούμενο σημειωματάριο. Βεβαιωθείτε ότι έχετε επισυνάψει την ίδια λίμνη που χρησιμοποιήσατε στο Μέρος 1 σε αυτό το σημειωματάριο προτού εκτελέσετε αυτόν τον κώδικα.

df = (
    spark.read.option("header", True)
    .option("inferSchema", True)
    .csv("Files/churn/raw/churn.csv")
    .cache()
)

Δημιουργία dataFrame pandas από το σύνολο δεδομένων

Μετατρέψτε το spark DataFrame σε pandas DataFrame για ευκολότερη επεξεργασία και απεικόνιση.

df = df.toPandas()

Εμφάνιση ανεπεξέργαστων δεδομένων

Εξερευνήστε τα ανεπεξέργαστα δεδομένα με display, κάντε ορισμένα βασικά στατιστικά στοιχεία και εμφανίστε προβολές γραφήματος. Σημειώστε ότι πρέπει πρώτα να εισαγάγετε τις απαιτούμενες βιβλιοθήκες, όπως οι Numpy, Pnadas, Seabornκαι Matplotlib για την ανάλυση δεδομένων και την απεικόνιση.

import seaborn as sns
sns.set_theme(style="whitegrid", palette="tab10", rc = {'figure.figsize':(9,6)})
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
from matplotlib import rc, rcParams
import numpy as np
import pandas as pd
import itertools
display(df, summary=True)

Χρήση του Data Wrangler για την εκτέλεση αρχικής εκκαθάρισης δεδομένων

Για να εξερευνήσετε και να μετασχηματίστε οποιαδήποτε πλαίσια δεδομένων pandas στο σημειωματάριό σας, εκκινήστε το Data Wrangler απευθείας από το σημειωματάριο.

Σημείωση

Δεν είναι δυνατό το άνοιγμα του Wrangler δεδομένων, ενώ ο πυρήνας σημειωματάριου είναι απασχολημένος. Η εκτέλεση του κελιού πρέπει να ολοκληρωθεί πριν την εκκίνηση του Data Wrangler.

  1. Στην κορδέλα σημειωματάριου καρτέλα Δεδομένα, επιλέξτε Εκκίνηση του data Wrangler. Θα δείτε μια λίστα με τα ενεργοποιημένα dataFrames pandas που είναι διαθέσιμα για επεξεργασία.
  2. Επιλέξτε το DataFrame που θέλετε να ανοίξετε στο Data Wrangler. Δεδομένου ότι αυτό το σημειωματάριο περιέχει μόνο ένα DataFrame, df, επιλέξτε df.

Στιγμιότυπο οθόνης που δείχνει πώς μπορείτε να εκκινήσετε τη διαχείριση δεδομένων από ένα σημειωματάριο.

Το Data Wrangler εκκινεί και δημιουργεί μια περιγραφική επισκόπηση των δεδομένων σας. Ο πίνακας στο μέσον εμφανίζει κάθε στήλη δεδομένων. Ο πίνακας σύνοψης δίπλα στον πίνακα εμφανίζει πληροφορίες σχετικά με το DataFrame. Όταν επιλέγετε μια στήλη στον πίνακα, η σύνοψη ενημερώνεται με πληροφορίες σχετικά με την επιλεγμένη στήλη. Σε ορισμένες παρουσίες, τα δεδομένα που εμφανίζονται και συνοψίζονται θα είναι μια περικομμένη προβολή του DataFrame. Όταν συμβεί αυτό, θα δείτε μια προειδοποιητική εικόνα στο τμήμα παραθύρου σύνοψης. Τοποθετήστε τον δείκτη του ποντικιού πάνω σε αυτήν την προειδοποίηση για να προβάλετε κείμενο που εξηγεί την κατάσταση.

Στιγμιότυπο οθόνης που εμφανίζει επισκόπηση wrangler δεδομένων.

Κάθε λειτουργία που κάνετε μπορεί να εφαρμοστεί σε ένα θέμα κλικ, την ενημέρωση της εμφάνισης των δεδομένων σε πραγματικό χρόνο και τη δημιουργία κώδικα που μπορείτε να αποθηκεύσετε ξανά στο σημειωματάριό σας ως λειτουργία που μπορεί να επαναχρησιμοποιηθεί.

Η υπόλοιπη ενότητα σάς καθοδηγεί στα βήματα για την εκτέλεση εκκαθάρισης δεδομένων με το Data Wrangler.

Κατάργηση διπλότυπων γραμμών

Στον αριστερό πίνακα υπάρχει μια λίστα λειτουργιών (όπως Εύρεση και αντικατάσταση, Μορφοποίηση, Τύποι, Αριθμητικοί) που μπορείτε να εκτελέσετε στο σύνολο δεδομένων.

  1. Αναπτύξτε Εύρεση και αντικαταστήστε και επιλέξτε Απόθεση διπλότυπων γραμμών.

    Στιγμιότυπο οθόνης που εμφανίζει την απόθεση διπλότυπων γραμμών στην περιοχή εύρεσης και αντικατάστασης.

  2. Εμφανίζεται ένας πίνακας για να επιλέξετε τη λίστα των στηλών που θέλετε να συγκρίνετε για να ορίσετε μια διπλότυπη γραμμή. Επιλέξτε RowNumber και CustomerId.

    Στον μεσαίο πίνακα υπάρχει μια προεπισκόπηση των αποτελεσμάτων αυτής της λειτουργίας. Στην προεπισκόπηση βρίσκεται ο κώδικας για την εκτέλεση της λειτουργίας. Σε αυτή την περίπτωση, τα δεδομένα φαίνεται να είναι αμετάβλητα. Ωστόσο, δεδομένου ότι εξετάζετε μια περικομημένη προβολή, είναι καλή ιδέα να εφαρμόσετε ακόμα τη λειτουργία.

    Στιγμιότυπο οθόνης που εμφανίζει την απόθεση διπλότυπων γραμμών στο Data Wrangler.

  3. Επιλέξτε Εφαρμογή (είτε στο πλάι είτε στο κάτω μέρος) για να μεταβείτε στο επόμενο βήμα.

Απόθεση γραμμών με δεδομένα που απουσίες

Χρησιμοποιήστε το Data Wrangler για να αποθέσετε γραμμές με δεδομένα που απουσίες σε όλες τις στήλες.

  1. Επιλέξτε απουσιάζει τιμές από Εύρεση και αντικαταστήστε.

  2. Επιλέξτε Επιλογή όλων των από τις στήλες Target.

    Στιγμιότυπο οθόνης που εμφανίζει την απόρριψη των γραμμών που λείπουν στο Data Wrangler.

  3. Επιλέξτε Εφαρμογή για να προχωρήσετε στο επόμενο βήμα.

Απόθεση στηλών

Χρησιμοποιήστε το Data Wrangler για να αποθέσετε στήλες που δεν χρειάζεστε.

  1. Αναπτύξτε σχήματος και επιλέξτε Στήλες απόθεσης.

  2. Επιλέξτε πεδίο RowNumber, CustomerId, Surname. Αυτές οι στήλες εμφανίζονται με κόκκινο χρώμα στην προεπισκόπηση, για να δείξουν ότι έχουν αλλάξει από τον κώδικα (σε αυτή την περίπτωση, απορρίπτονται.)

    Στιγμιότυπο οθόνης που εμφανίζει στήλες απόθεσης στο Data Wrangler.

  3. Επιλέξτε Εφαρμογή για να προχωρήσετε στο επόμενο βήμα.

Προσθήκη κώδικα στο σημειωματάριο

Κάθε φορά που επιλέγετε Εφαρμογή, δημιουργείται ένα νέο βήμα στα Βήματα καθαρισμού πίνακα κάτω αριστερά. Στο κάτω μέρος του πίνακα, επιλέξτε Κωδικός προεπισκόπησης για όλα τα βήματα να προβάλετε έναν συνδυασμό όλων των ξεχωριστών βημάτων.

Επιλέξτε Προσθήκη κώδικα στο σημειωματάριο στην επάνω αριστερή γωνία για να κλείσετε το Data Wrangler και να προσθέσετε αυτόματα τον κώδικα. Το Προσθήκη κώδικα στο σημειωματάριο ενσωματώνει τον κώδικα σε μια συνάρτηση και, στη συνέχεια, καλεί τη συνάρτηση.

Στιγμιότυπο οθόνης που εμφανίζει τον κώδικα προεπισκόπησης και το σημείο πρόσβασης για προσθήκη στο σημειωματάριο.

Φιλοδώρημα

Ο κώδικας που δημιουργείται από το Data Wrangler δεν θα εφαρμοστεί μέχρι να εκτελέσετε με μη αυτόματο τρόπο το νέο κελί.

Εάν δεν χρησιμοποιήσατε τη δυνατότητα Data Wrangler, μπορείτε να χρησιμοποιήσετε αυτό το επόμενο κελί κώδικα.

Αυτός ο κώδικας είναι παρόμοιος με τον κώδικα που παράγεται από τη Data Wrangler, αλλά προσθέτει το όρισμα inplace=True σε καθένα από τα βήματα που δημιουργούνται. Ορίζοντας inplace=True, τα pandas θα αντικαταστήσουν το αρχικό DataFrame αντί να παράγουν ένα νέο DataFrame ως έξοδο.

# Modified version of code generated by Data Wrangler 
# Modification is to add in-place=True to each step

# Define a new function that include all above Data Wrangler operations
def clean_data(df):
    # Drop rows with missing data across all columns
    df.dropna(inplace=True)
    # Drop duplicate rows in columns: 'RowNumber', 'CustomerId'
    df.drop_duplicates(subset=['RowNumber', 'CustomerId'], inplace=True)
    # Drop columns: 'RowNumber', 'CustomerId', 'Surname'
    df.drop(columns=['RowNumber', 'CustomerId', 'Surname'], inplace=True)
    return df

df_clean = clean_data(df.copy())
df_clean.head()

Εξερεύνηση των δεδομένων

Εμφανίστε ορισμένες συνόψεις και απεικονίσεις των καθαρισμένων δεδομένων.

Προσδιορισμός κατηγορικών, αριθμητικών και χαρακτηριστικών προορισμού

Χρησιμοποιήστε αυτόν τον κώδικα για να προσδιορίσετε τα χαρακτηριστικά κατηγορίας, αριθμών και προορισμού.

# Determine the dependent (target) attribute
dependent_variable_name = "Exited"
print(dependent_variable_name)
# Determine the categorical attributes
categorical_variables = [col for col in df_clean.columns if col in "O"
                        or df_clean[col].nunique() <=5
                        and col not in "Exited"]
print(categorical_variables)
# Determine the numerical attributes
numeric_variables = [col for col in df_clean.columns if df_clean[col].dtype != "object"
                        and df_clean[col].nunique() >5]
print(numeric_variables)

Η σύνοψη πέντε αριθμών

Εμφανίστε τη σύνοψη πέντε αριθμών (την ελάχιστη βαθμολογία, το πρώτο τεταρτημόριο, τη διάμεσο, το τρίτο τεταρτημόριο, τη μέγιστη βαθμολογία) για τα αριθμητικά χαρακτηριστικά, χρησιμοποιώντας γραφήματα πλαισίων.

df_num_cols = df_clean[numeric_variables]
sns.set(font_scale = 0.7) 
fig, axes = plt.subplots(nrows = 2, ncols = 3, gridspec_kw =  dict(hspace=0.3), figsize = (17,8))
fig.tight_layout()
for ax,col in zip(axes.flatten(), df_num_cols.columns):
    sns.boxplot(x = df_num_cols[col], color='green', ax = ax)
fig.delaxes(axes[1,2])

Γράφημα εμφανίζει τις συνόψεις πέντε αριθμών.

Διανομή πελατών που έχουν αποχωρήσει και δεν έχουν κάνει αλλαγές

Εμφάνιση της κατανομής των εξόδων έναντι πελατών χωρίς εξουσιοδότηση σε όλα τα κατηγορικά χαρακτηριστικά.

attr_list = ['Geography', 'Gender', 'HasCrCard', 'IsActiveMember', 'NumOfProducts', 'Tenure']
fig, axarr = plt.subplots(2, 3, figsize=(15, 4))
for ind, item in enumerate (attr_list):
    sns.countplot(x = item, hue = 'Exited', data = df_clean, ax = axarr[ind%2][ind//2])
fig.subplots_adjust(hspace=0.7)

Graph εμφανίζει τα γραφήματα ράβδων για πελάτες που έχουν αποχωρήσει και δεν έχουν εμφανίσει στοιχεία.

Κατανομή αριθμητικών χαρακτηριστικών

Εμφάνιση της κατανομής συχνότητας αριθμητικών χαρακτηριστικών με χρήση ιστογράμματος.

columns = df_num_cols.columns[: len(df_num_cols.columns)]
fig = plt.figure()
fig.set_size_inches(18, 8)
length = len(columns)
for i,j in itertools.zip_longest(columns, range(length)):
    plt.subplot((length // 2), 3, j+1)
    plt.subplots_adjust(wspace = 0.2, hspace = 0.5)
    df_num_cols[i].hist(bins = 20, edgecolor = 'black')
    plt.title(i)
plt.show()

Γράφημα εμφανίζει την κατανομή αριθμητικών χαρακτηριστικών.

Εκτέλεση μηχανικής δυνατοτήτων

Εκτελέστε τη μηχανική δυνατοτήτων για να δημιουργήσετε νέα χαρακτηριστικά με βάση τα τρέχοντα χαρακτηριστικά:

df_clean["NewTenure"] = df_clean["Tenure"]/df_clean["Age"]
df_clean["NewCreditsScore"] = pd.qcut(df_clean['CreditScore'], 6, labels = [1, 2, 3, 4, 5, 6])
df_clean["NewAgeScore"] = pd.qcut(df_clean['Age'], 8, labels = [1, 2, 3, 4, 5, 6, 7, 8])
df_clean["NewBalanceScore"] = pd.qcut(df_clean['Balance'].rank(method="first"), 5, labels = [1, 2, 3, 4, 5])
df_clean["NewEstSalaryScore"] = pd.qcut(df_clean['EstimatedSalary'], 10, labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

Χρήση του Data Wrangler για εκτέλεση κωδικοποίησης μίας χρήσης

Το Data Wrangler μπορεί επίσης να χρησιμοποιηθεί για την εκτέλεση κωδικοποίησης μίας χρήσης. Για να το κάνετε αυτό, ανοίξτε ξανά το Data Wrangler. Αυτή τη φορά, επιλέξτε τα df_clean δεδομένα.

  1. Αναπτύξτε Τύποι και επιλέξτε κωδικοποιητής μίας πρόσβασης.
  2. Εμφανίζεται ένας πίνακας για να επιλέξετε τη λίστα των στηλών στις οποίες θέλετε να εκτελέσετε κωδικοποίηση μίας ώρας. Επιλέξτε geography και Gender.

Μπορείτε να αντιγράψετε τον κώδικα που δημιουργήθηκε, να κλείσετε το Data Wrangler για να επιστρέψετε στο σημειωματάριο και, στη συνέχεια, να το επικολλήσετε σε ένα νέο κελί. Εναλλακτικά, επιλέξτε Προσθήκη κώδικα στο σημειωματάριο επάνω αριστερά για να κλείσετε το Data Wrangler και να προσθέσετε αυτόματα τον κώδικα.

Εάν δεν χρησιμοποιήσατε τη δυνατότητα Data Wrangler, μπορείτε να χρησιμοποιήσετε αυτό το επόμενο κελί κώδικα:

# This is the same code that Data Wrangler will generate
 
import pandas as pd
 
def clean_data(df_clean):
    # One-hot encode columns: 'Geography', 'Gender'
    df_clean = pd.get_dummies(df_clean, columns=['Geography', 'Gender'])
    return df_clean
 
df_clean_1 = clean_data(df_clean.copy())
df_clean_1.head()

Σύνοψη παρατηρήσεων από την διερευνητική ανάλυση δεδομένων

  • Οι περισσότεροι πελάτες προέρχονται από τη Γαλλία σε σύγκριση με την Ισπανία και τη Γερμανία, ενώ η Ισπανία έχει το χαμηλότερο ποσοστό απώλειας σε σύγκριση με τη Γαλλία και τη Γερμανία.
  • Οι περισσότεροι πελάτες έχουν πιστωτικές κάρτες.
  • Υπάρχουν πελάτες των οποίων η ηλικία και το πιστωτικό αποτέλεσμα είναι πάνω από 60 και κάτω από 400, αντίστοιχα, αλλά δεν μπορούν να θεωρηθούν ως έκτοπα.
  • Πολύ λίγοι πελάτες έχουν περισσότερα από δύο προϊόντα της τράπεζας.
  • Οι πελάτες που δεν είναι ενεργοί έχουν υψηλότερο ποσοστό απώλειας.
  • Τα έτη φύλου και διάρκειας δεν φαίνεται να επηρεάζουν την απόφαση του πελάτη να κλείσει τον τραπεζικό λογαριασμό.

Δημιουργία πίνακα δέλτα για τα καθαροποιημένα δεδομένα

Θα χρησιμοποιήσετε αυτά τα δεδομένα στο επόμενο σημειωματάριο αυτής της σειράς.

table_name = "df_clean"
# Create Spark DataFrame from pandas
sparkDF=spark.createDataFrame(df_clean_1) 
sparkDF.write.mode("overwrite").format("delta").save(f"Tables/{table_name}")
print(f"Spark dataframe saved to delta table: {table_name}")

Επόμενο βήμα

Εκπαιδεύστε και καταχωρήστε μοντέλα εκμάθησης μηχανής με αυτά τα δεδομένα: