Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
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ú:
- Prečítajte si údaje uložené z delta tabuľky v lakehouse.
- Konvertujte údajový rámec Spark na údajový rámec Pandas, ktorý podporujú knižnice vizualizácií jazyka Python.
- Wrangler data umožňuje vykonávať počiatočné čistenie a transformáciu údajov.
- 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.
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.
Ak chcete otvoriť sprievodný poznámkový blok pre tento kurz, postupujte podľa pokynov v téme Príprava systému na kurzy dátových vied na import notebooku do pracovného priestoru.
Ak by ste radšej skopírovali a prilepili kód z tejto stránky, môžete vytvoriť nový poznámkový blok.
Uistite sa, že pripojiť lakehouse k notebooku, ako začnete bežať kód.
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.
- 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.
- Vyberte údajový rámec, ktorý chcete otvoriť vo Wrangleri údajov. Keďže tento poznámkový blok obsahuje len jeden údajový rámec,
dfvyberte položkudf.
Wrangler údajov sa spustí a vygeneruje popisný prehľad údajov. Tabuľka v strede zobrazuje každý stĺpec údajov. Panel súhrnu
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.
Rozbaľte Nájdite a nahraďte a vyberte položky Položku Rozbaľovacia duplicitné riadky.
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ť.
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.
V
vyberte položky Rozbaľovacia ponuka chýbajúcich hodnôt .Vyberte Zo stĺpcov Targetvyberte všetky .
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.
Rozbaľte
schéma stĺpce .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).)
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.
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])
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)
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()
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.
- Rozbaľte Vzorce
a vyberte One-hotcode . - 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: