Kurz Časť 2: Preskúmanie a vizualizácia údajov pomocou poznámkových blokov služby Microsoft Fabric

V tomto kurze sa dozviete, ako vykonávať prieskumné analýzy údajov (EDA) na preskúmanie a skúmanie údajov a zároveň sumarizovať jej kľúčové vlastnosti pomocou techník vizualizácie údajov.

Použijete knižnicu vizualizácií údajov jazyka Python seaborn, ktorá poskytuje rozhranie vysokej úrovne na vytváranie vizuálov na údajových rámec a poliach. Ďalšie informácie o seabornnájdete v téme Seaborn: Štatistická vizualizácia údajov.

Tiež použijete Data Wrangler, nástroj na zápisníku, ktorý vám zabezpečí nový zážitok pri vykonávaní prieskumnej analýzy a čistenia údajov.

Hlavné kroky v tomto kurze sú:

  1. Prečítajte si údaje uložené z delta tabuľky v lakehouse.
  2. Konvertujte údajový rámec Spark na údajový rámec Pandas, ktorý podporujú knižnice vizualizácií jazyka Python.
  3. Wrangler data umožňuje vykonávať počiatočné čistenie a transformáciu údajov.
  4. Pomocou seabornvykonajte prieskumnú analýzu údajov.

Predpoklady

  • Získajte predplatné služby Microsoft Fabric . Alebo si zaregistrujte bezplatnú skúšobnú služby Microsoft Fabric.

  • Prihláste sa do služby Microsoft Fabric.

  • Prepnite na Fabric pomocou prepínača skúseností v ľavom dolnom rohu domovskej stránky.

    Screenshot, ktorý ukazuje výber Fabric v menu prepínača zážitkov.

Toto je 2. diel z 5 série kurzov. Ak chcete dokončiť tento kurz, najskôr dokončite tieto kroky:

Sledovanie v notebooku

2-explore-cleanse-data.ipynb je notebook, ktorý sprevádza tento kurz.

Dôležitý

Pripojte rovnaký lakehouse ste použili v časti 1.

Prečítajte si nespracované údaje z jazera

Prečítajte si nespracované údaje zo sekcie Files lokalite lakehouse. Tieto údaje ste nahrali v predchádzajúcom poznámkovom bloku. Uistite sa, že ste pripojili rovnaký lakehouse ste použili v časti 1 do tohto notebooku pred spustením tohto kódu.

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

Vytvorenie údajového rámca pandas z množiny údajov

Konvertujte údajový rámec spark na údajový rámec Pandas na jednoduchšie spracovanie a vizualizáciu.

df = df.toPandas()

Zobrazenie nespracovaných údajov

Preskúmajte nespracované údaje pomocou display, vykonajte základné štatistiky a zobrazte zobrazenia grafu. Najskôr musíte importovať požadované knižnice, ako napríklad Numpy, Pnadas, Seaborna Matplotlib na analýzu a vizualizáciu údajov.

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)
# Code generated by Data Wrangler for pandas DataFrame

def clean_data(df):
    # Drop duplicate rows in columns: 'CustomerId', 'RowNumber'
    df = df.drop_duplicates(subset=['CustomerId', 'RowNumber'])
    # Drop rows with missing data across all columns
    df = df.dropna()
    # Drop columns: 'CustomerId', 'RowNumber', 'Surname'
    df = df.drop(columns=['CustomerId', 'RowNumber', 'Surname'])
    return df

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

Použitie funkcie Data Wrangler na vykonanie počiatočného čistenia údajov

Ak chcete preskúmať a transformovať všetky údajové rámce pandas v notebooku, spustite službu Data Wrangler priamo z notebooku.

Nota

Wrangler dáta nemožno otvoriť, zatiaľ čo jadro notebooku je zaneprázdnený. Spustenie bunky sa musí dokončiť pred spustením Wranglera údajov.

  1. Na páse s nástrojmi poznámkového bloku karte údaje vyberte položky SpustiťWrangler údajov. Zobrazí sa zoznam aktivovaných údajových rámca pandas, ktorý je k dispozícii na úpravu.
  2. Vyberte údajový rámec, ktorý chcete otvoriť vo Wrangleri údajov. Keďže tento poznámkový blok obsahuje len jeden údajový rámec, dfvyberte položku df.

Snímka obrazovky ukazuje, ako spustiť wrangler údajov z notebooku.

Wrangler údajov sa spustí a vygeneruje popisný prehľad údajov. Tabuľka v strede zobrazuje každý stĺpec údajov. Panel súhrnu vedľa tabuľky zobrazuje informácie o prvku DataFrame. Keď v tabuľke vyberiete stĺpec, súhrn sa aktualizuje informáciami o vybratom stĺpci. V niektorých prípadoch budú zobrazované a súhrnné údaje skrátené zobrazenie údajového rámca. Keď sa to stane, na table súhrnu sa zobrazí výstražný obrázok. Ukázaním na toto upozornenie zobrazíte text vysvetľujúci situáciu.

Snímka obrazovky zobrazuje prehľad wranglerov údajov.

Každá operácia, ktorú vykonáte, sa dá použiť v priebehu kliknutí, aktualizovania zobrazenia údajov v reálnom čase a generovania kódu, ktorý môžete uložiť späť do poznámkového počítača ako opätovne použiteľnú funkciu.

Zvyšok tejto časti vás prevedie krokmi na čistenie údajov pomocou služby Data Wrangler.

Rozbaľovacia ponuka duplicitných riadkov

Na ľavom paneli je zoznam operácií (napríklad vyhľadávať a nahrádzať, Format, vzorce, číselná), ktorú môžete vykonávať v množine údajov.

  1. Rozbaľte Nájdite a nahraďte a vyberte položky Položku Rozbaľovacia duplicitné riadky.

    Snímka obrazovky zobrazuje rozbaľovacie duplicitné riadky v časti Vyhľadanie a nahradenie.

  2. Zobrazí sa panel, v rámci ktorému môžete vybrať zoznam stĺpcov, ktoré chcete porovnať a definovať duplicitný riadok. Vyberte položky RowNumber a CustomerId.

    Na strednom paneli je ukážka výsledkov tejto operácie. Pod ukážkou je kód na vykonanie operácie. V tomto prípade sa údaje nezmýlia. Keďže sa však pozeráte na skrátené zobrazenie, je vhodné operáciu stále použiť.

    Snímka obrazovky zobrazuje uloženie duplicitných riadkov vo Wrangleri údajov.

  3. Výberom položky Použiť (buď na bočnej strane alebo v dolnej časti) prejdite na ďalší krok.

Rozbaľovacia ponuka riadkov so chýbajúcimi údajmi

Pomocou funkcie Data Wrangler môžete rozložiť riadky s chýbajúcimi údajmi vo všetkých stĺpcoch.

  1. V vyberte položky Rozbaľovacia ponuka chýbajúcich hodnôt .

  2. Vyberte Zo stĺpcov Targetvyberte všetky .

    Snímka obrazovky zobrazuje pád chýbajúcich riadkov vo Wrangleri údajov.

  3. Výberom položky Použiť prejdite na ďalší krok.

Rozbaľovacie stĺpce

Použitie funkcie Wrangler na rozdeľovanie stĺpcov, ktoré nepotrebujete.

  1. Rozbaľte schéma stĺpce.

  2. Vyberte položky RowNumber, CustomerId, Surname. Tieto stĺpce sa v ukážke zobrazia červenou a zobrazia sa, že sú zmenené kódom (v tomto prípade vyradili).)

    Snímka obrazovky zobrazuje uloženie stĺpcov vo Wrangleri údajov.

  3. Výberom položky Použiť prejdite na ďalší krok.

Pridanie kódu do poznámkového bloku

Vždy, keď vyberiete Použiť, na paneli Kroky v ľavom dolnom rohu sa vytvorí nový krok. V dolnej časti panela výberom položky ukážky kódu pre všetky kroky zobrazíte kombináciu všetkých samostatných krokov.

Výberom položky Pridanie kódu do poznámkového v ľavom hornom rohu zatvorte službu Data Wrangler a pridajte kód automaticky. Pridať kód do poznámkového bloku zalomí kód do funkcie a potom zavolá funkciu.

Snímka obrazovky znázorňuje kód ukážky a miesto, kde možno pridať do poznámkového bloku.

Tip

Kód vygenerovaný službou Data Wrangler sa nepoužije, kým nespúšťate novú bunku manuálne.

Ak ste nepoužili funkciu Data Wrangler, môžete namiesto toho použiť túto nasledujúcu bunku kódu.

Tento kód je podobný kódu, ktorý vytvoril Wrangler s údajmi, ale do každého z vygenerovaných krokov sa pridá v inplace=True argumentu. Nastavením inplace=Truepandas prepíše pôvodný údajový rámec namiesto vytvárania nového prvku DataFrame ako výstupu.

# 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()

Preskúmanie údajov

Zobrazí niekoľko súhrnov a vizualizácií vyčistených údajov.

Určenie kategorických, číselných a cieľových atribútov

Pomocou tohto kódu môžete určiť kategorické, číselné a cieľové atribúty.

# 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)

Súhrn piatich čísel

Pomocou vykreslených polí môžete zobraziť súhrn piatich čísel (minimálne skóre, prvý quartile, medián, tretí quartile, maximálne skóre) pre číselné atribúty.

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])

Graph zobrazuje päťčíslové súhrny.

Distribúcia výstupných a žiadnych zákazníkov

Zobraziť distribúciu výstupných zákazníkov v porovnaní so žiadnymi zákazníkmi v rámci kategorických atribútov.

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

Graph zobrazuje pruhové grafy pre výstupných aj žiadnych zákazníkov.

Distribúcia číselných atribútov

Zobrazí distribúciu frekvencie číselných atribútov pomocou histogramu.

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()

Graph zobrazuje distribúciu číselných atribútov.

Vykonávanie inžinierskych funkcií

Vykonajte inžiniersku funkciu na generovanie nových atribútov na základe aktuálnych atribútov:

df_clean['Tenure'] = df_clean['Tenure'].astype(int)
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])

Použitie služby Data Wrangler na vykonanie one-hotového kódovania

Wrangler údajov možno použiť aj na vykonanie one-hotového kódovania. Znova otvorte Wrangler údajov. Tentoraz vyberte df_clean údaje.

  1. Rozbaľte Vzorce a vyberte One-hotcode.
  2. Zobrazí sa panel, kde môžete vybrať zoznam stĺpcov, v ktoré chcete vykonať jednosmerné kódovanie. Vyberte Geografia a pohlavie.

Mohli by ste skopírovať vygenerovaný kód, zavrieť Wrangler a vrátiť sa do notebooku a potom prilepiť do novej bunky. Prípadne výberom položky Pridať kód do poznámkového v ľavom hornom rohu zatvorte službu Data Wrangler a pridajte kód automaticky.

Ak ste nepoužili funkciu Data Wrangler, môžete namiesto toho použiť túto nasledujúcu bunku kódu:

# 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'
    for column in ['Geography', 'Gender']:
        insert_loc = df_clean.columns.get_loc(column)
        df_clean = pd.concat([df_clean.iloc[:,:insert_loc], pd.get_dummies(df_clean.loc[:, [column]]), df_clean.iloc[:,insert_loc+1:]], axis=1)
    return df_clean

df_clean_1 = clean_data(df_clean.copy())
df_clean_1.head()
# 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()

Súhrn pozorovaní z prieskumnej analýzy údajov

  • Väčšina zákazníkov pochádza z Francúzska, ktoré porovnáva Španielsko a Nemecko, zatiaľ čo Španielsko má najnižšiu mieru výpovedí v porovnaní s Francúzskom a Nemeckom.
  • Väčšina zákazníkov má kreditné karty.
  • Sú tu zákazníci, ktorých vek a kreditné skóre majú viac ako 60 rokov a menej ako 400 rokov, ale nemôžu sa považovať za odľahlé hodnoty.
  • Len veľmi málo zákazníkov má viac ako dva produkty banky.
  • Zákazníci, ktorí nie sú aktívni, majú vyššiu mieru odchodov.
  • Zdá sa, že pohlavie a roky na pôsobenia nemajú vplyv na rozhodnutie zákazníka zrušiť bankový účet.

Vytvorenie delta tabuľky pre vyčistené údaje

Tieto údaje použijete v ďalšom notebooku tejto série.

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}")

Ďalší krok

Trénovanie a registrácia modelov strojového učenia pomocou týchto údajov: