Sdílet prostřednictvím


Kurz 2. část: Prozkoumání a vizualizace dat pomocí poznámkových bloků Microsoft Fabric

V tomto kurzu se dozvíte, jak provádět průzkumnou analýzu dat (EDA), abyste zkoumali a analyzovali data a současně sumarizovali jejich klíčové charakteristiky pomocí technik vizualizace dat.

Použijete seaborn, knihovnu vizualizace dat Pythonu, která poskytuje rozhraní vysoké úrovně pro vytváření vizuálů na datových rámcích a polích. Další informace o seabornnaleznete v tématu Seaborn: Statistické vizualizace dat.

Použijete také Data Wrangler , nástroj založený na poznámkových blocích, který poskytuje imerzivní prostředí pro provádění průzkumných analýz a čištění dat.

Hlavními kroky v tomto kurzu jsou:

  1. Přečtěte si data uložená z tabulky Delta v jezeře.
  2. Převeďte datový rámec Sparku na datový rámec Pandas, který knihovny vizualizací Pythonu podporují.
  3. Pomocí nástroje Data Wrangler proveďte počáteční čištění a transformaci dat.
  4. Provádět průzkumnou analýzu dat pomocí seaborn.

Požadavky

Toto je část 2 z 5 v sérii kurzů. K dokončení tohoto kurzu nejprve dokončete:

Sledujte v poznámkovém bloku

2-explore-cleanse-data.ipynb je poznámkový blok, který doprovází tento kurz.

Důležitý

Připojte stejný jezerní dům, který jste použili v části 1.

Čtení nezpracovaných dat ze systému lakehouse

Číst nezpracovaná data z oddílu Files v lakehouse. Tato data jste nahráli v předchozím poznámkovém bloku. Před spuštěním tohoto kódu se ujistěte, že jste k tomuto poznámkovému bloku připojili stejný jezerní dům, který jste použili v části 1.

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

Vytvoření datového rámce pandas z datové sady

Převeďte datový rámec Sparku na datový rámec pandas pro snadnější zpracování a vizualizaci.

df = df.toPandas()

Zobrazení nezpracovaných dat

Prozkoumejte nezpracovaná data pomocí display, proveďte některé základní statistiky a zobrazte zobrazení grafu. Nezapomeňte, že nejprve musíte importovat požadované knihovny, jako jsou Numpy, Pnadas, Seaborna Matplotlib pro analýzu a vizualizaci dat.

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)

Použijte Data Wrangler pro počáteční čištění dat.

Pokud chcete prozkoumat a transformovat datové rámce pandas v poznámkovém bloku, spusťte přímo z poznámkového bloku službu Data Wrangler.

Poznámka

Data Wrangler nelze otevřít, když je jádro zápisníku zaneprázdněné. Provedení buňky musí být dokončeno před spuštěním Data Wrangler.

  1. Na pásu karet poznámkového bloku kartě Data vyberte Spustit Data Wrangler. Zobrazí se seznam aktivovaných datových rámců pandas, které jsou k dispozici pro úpravy.
  2. Vyberte datový rámec, který chcete otevřít v objektu Data Wrangler. Vzhledem k tomu, že tento sešit obsahuje pouze jeden datový rámec df, vyberte df.

Snímek obrazovky ukazuje, jak spustit nástroj pro správu dat z poznámkového bloku.

Data Wrangler se spustí a vygeneruje popisný přehled vašich dat. Tabulka uprostřed zobrazuje každý sloupec dat. Panel Souhrn vedle tabulky zobrazuje informace o datovém rámci. Když vyberete sloupec v tabulce, souhrn se aktualizuje informacemi o vybraném sloupci. V některých případech budou zobrazená a souhrnná data zkráceným pohledem na váš datový rámec. V takovém případě se v podokně souhrnu zobrazí obrázek upozornění. Najeďte myší na toto upozornění a zobrazte text vysvětlující situaci.

Snímek obrazovky s přehledem nástroje pro úpravu dat

Každou operaci, kterou uděláte, můžete použít na kliknutí, aktualizovat zobrazení dat v reálném čase a vygenerovat kód, který můžete uložit zpět do poznámkového bloku jako opakovaně použitelnou funkci.

Zbývající část této části vás provede postupem čištění dat pomocí služby Data Wrangler.

Odstranit duplicitní řádky

Na levém panelu je seznam operací, které můžete s datovou sadou provádět (například Najít a nahradit, Formát, Vzorce, Číselné).

  1. Rozbalte Najít a nahradit a vyberte Zahodit duplicitní řádky.

    Snímek obrazovky ukazuje odstranění duplicitních řádků v rámci funkce Najít a nahradit.

  2. Zobrazí se panel pro výběr seznamu sloupců, které chcete porovnat, aby se definoval duplicitní řádek. Vyberte RowNumber a CustomerId.

    Na prostředním panelu je náhled výsledků této operace. Ve verzi Preview je kód k provedení operace. V tomto případě se data jeví jako nezměněná. Ale vzhledem k tomu, že se díváte na zkrácené zobrazení, je vhodné operaci přesto použít.

    Snímek obrazovky ukazuje vyřazení duplicitních řádků ve službě Data Wrangler.

  3. Vyberte Použít (na straně nebo ve spodní části) pro přechod k dalšímu kroku.

Odstranění řádků s chybějícími daty

Pomocí služby Data Wrangler můžete vypustit řádky s chybějícími daty napříč všemi sloupci.

  1. Vyberte Vypustit chybějící hodnoty z Najít a nahradit.

  2. Vyberte Vybrat všechny z cílových sloupců.

    Snímek obrazovky ukazuje vyřazení chybějících řádků v objektu Data Wrangler.

  3. Vyberte Použít a přejděte k dalšímu kroku.

Odstranit sloupce

Pomocí služby Data Wrangler zahoďte sloupce, které nepotřebujete.

  1. Rozbalte schéma a vyberte odebrání sloupců.

  2. Vyberte RowNumber , CustomerId, Příjmení. Tyto sloupce se v náhledu zobrazují červeně, aby se ukázalo, že byly změněny kódem (v tomto případě, odstraněny.)

    Snímek obrazovky ukazuje odstranění sloupců ve službě Data Wrangler.

  3. Vyberte Použít pro pokračování na další krok.

Přidání kódu do poznámkového bloku

Pokaždé, když vyberete Použít, se vlevo dole v panelu Kroky čištění vytvoří nový krok. V dolní části panelu vyberte Kód náhledu pro všechny kroky, abyste zobrazili kombinaci všech samostatných kroků.

Vyberte Přidat kód do poznámkového bloku vlevo nahoře, abyste zavřeli aplikaci Data Wrangler a kód automaticky přidali. Přidat kód do poznámkového bloku kód zabalí do funkce a pak funkci zavolá.

Snímek obrazovky ukazuje kód náhledu a možnost přidání do poznámkového bloku.

Spropitné

Kód vygenerovaný službou Data Wrangler se nepoužije, dokud ručně nespustíte novou buňku.

Pokud jste nepoužíli službu Data Wrangler, můžete místo toho použít tuto další buňku kódu.

Tento kód se podobá kódu vytvořenému rozhraním Data Wrangler, ale přidá do argumentu inplace=True ke každému vygenerovanému postupu. Když nastavíte inplace=True, pandas přepíše původní datový rámec místo vytvoření nového datového rámce jako 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()

Prozkoumání dat

Zobrazí některé souhrny a vizualizace vyčištěných dat.

Určení kategorických, číselných a cílových atributů

Tento kód slouží k určení kategorických, číselných a cílových atributů.

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

Statistický souhrn pěti čísel

Zobrazte souhrn s pěti čísly (minimální skóre, první kvartil, medián, třetí kvartil, maximální skóre) pro číselné atributy pomocí krabicových grafů.

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 souhrny s pěti čísly.

Distribuce ukončených a neexitovaných zákazníků

Umožňuje zobrazit distribuci ukončených a neexitovaných zákazníků napříč atributy kategorií.

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)

Graf zobrazuje pruhové grafy pro ukončené a neukončené zákazníky.

Rozdělení číselných atributů

Pomocí histogramu můžete zobrazit rozdělení četnosti číselných atributů.

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 rozdělení číselných atributů.

Provádění přípravy funkcí

Vytváření funkcí za účelem generování nových atributů na základě aktuálních atributů:

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žijte Data Wrangler k provedení jednorozměrného kódování.

Data Wrangler lze také použít k provedení jednohotového kódování. Uděláte to tak, že znovu otevřete Data Wrangler. Tentokrát vyberte údaje df_clean.

  1. Rozbalte Vzorce a vyberte jednohotové kódování.
  2. Zobrazí se panel, ve kterém si můžete vybrat sloupce, které chcete zakódovat metodou one-hot. Vyberte Zeměpis a pohlaví.

Vygenerovaný kód můžete zkopírovat, zavřít data Wrangler a vrátit se do poznámkového bloku a pak vložit do nové buňky. Nebo vyberte Přidat kód do poznámkového bloku v levém horním rohu a zavřete aplikaci Data Wrangler a přidejte kód automaticky.

Pokud jste službu Data Wrangler nepoužíli, můžete místo toho použít tuto další buňku 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'
    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()

Shrnutí pozorování z průzkumné analýzy dat

  • Většina zákazníků je z Francie porovnání se Španělskem a Německem, zatímco Španělsko má nejnižší četnost změn oproti Francii a Německu.
  • Většina zákazníků má platební karty.
  • Existují zákazníci, jejichž skóre věku a kreditu je vyšší než 60 a nižší než 400, ale nedají se považovat za odlehlé hodnoty.
  • Velmi málo zákazníků má více než dva produkty banky.
  • Zákazníci, kteří nejsou aktivní, mají vyšší míru odchodů.
  • Gender a délka zaměstnání se zdají nemít vliv na rozhodnutí zákazníka uzavřít bankovní účet.

Vytvoření tabulky delta pro vyčištěná data

Tato data použijete v dalším poznámkovém bloku této řady.

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

Další krok

Trénování a registrace modelů strojového učení s využitím těchto dat: