Oktatóanyag 2. rész: Adatok feltárása és vizualizációja Microsoft Fabric-jegyzetfüzetek használatával

Ebben az oktatóanyagban megtudhatja, hogyan végezhet feltáró adatelemzést (EDA) az adatok vizsgálatához és vizsgálatához, miközben az adatvizualizációs technikák használatával összegzi annak főbb jellemzőit.

Egy Python-adatvizualizációs kódtárat fog használni seaborn, amely magas szintű felületet biztosít a vizualizációk adatkereteken és tömbökön való létrehozásához. További információ: seabornSeaborn: Statisztikai adatvizualizáció.

A Data Wranglert is használhatja, amely egy jegyzetfüzet-alapú eszköz, amely magával ragadó élményt nyújt a feltáró adatelemzés és -tisztítás elvégzéséhez.

Az oktatóanyag fő lépései a következők:

  1. Olvassa el a lakehouse-beli delta táblából tárolt adatokat.
  2. Spark DataFrame konvertálása Pandas DataFrame-gé, amelyet a Python-vizualizációs kódtárak támogatnak.
  3. A Data Wrangler használatával elvégezheti a kezdeti adattisztítást és -átalakítást.
  4. Feltáró adatelemzés végrehajtása a következő használatával seaborn: .

Előfeltételek

  • Microsoft Fabric-előfizetés lekérése. Vagy regisztráljon egy ingyenes Microsoft Fabric-próbaverzióra.

  • Jelentkezzen be a Microsoft Fabricbe.

  • A kezdőlap bal oldalán található élménykapcsolóval válthat a Synapse Adattudomány felületre.

    Képernyőkép a felületváltó menüjéről, amelyen látható, hogy hol válassza ki a Adattudomány.

Ez az oktatóanyag-sorozat 5. része. Az oktatóanyag elvégzéséhez először végezze el a következőket:

Követés a jegyzetfüzetben

A 2-explore-cleanse-data.ipynb az oktatóanyagot kísérő jegyzetfüzet.

Az oktatóanyaghoz mellékelt jegyzetfüzet megnyitásához kövesse a Rendszer előkészítése adatelemzési oktatóanyagokhoz című témakör utasításait, és importálja a jegyzetfüzetet a munkaterületre.

Ha inkább erről a lapról másolja és illessze be a kódot, létrehozhat egy új jegyzetfüzetet.

A kód futtatása előtt mindenképpen csatoljon egy lakehouse-t a jegyzetfüzethez .

Fontos

Csatolja ugyanazt a tóházat, amelyet az 1. részben használt.

Nyers adatok olvasása a lakehouse-ból

Nyers adatok beolvasása a lakehouse Fájlok szakaszából. Ezeket az adatokat az előző jegyzetfüzetbe töltötte fel. A kód futtatása előtt győződjön meg arról, hogy az 1. részben használt tóházat csatolta ehhez a jegyzetfüzethez.

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

Pandas DataFrame létrehozása az adatkészletből

Konvertálja a spark DataFrame-et pandas DataFrame-gé a könnyebb feldolgozás és vizualizáció érdekében.

df = df.toPandas()

Nyers adatok megjelenítése

Megismerheti a nyers adatokat display, elvégezhet néhány alapvető statisztikát, és diagramnézeteket jeleníthet meg. Vegye figyelembe, hogy először importálnia kell a szükséges kódtárakat, például Numpya , Pnadas, Seabornés Matplotlib az adatelemzéshez és a vizualizációhoz.

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)

A Data Wrangler használata kezdeti adattisztításhoz

A pandas Dataframe-ek felfedezéséhez és átalakításához indítsa el közvetlenül a jegyzetfüzetből a Data Wranglert.

Feljegyzés

A Data Wrangler nem nyitható meg, amíg a jegyzetfüzet kernele foglalt. A cellavégrehajtásnak a Data Wrangler elindítása előtt le kell fejeződnie.

  1. A jegyzetfüzet menüszalagJának Adatok lapja alatt válassza az Adatindító indítása lehetőséget. Megjelenik a szerkesztésre elérhető aktivált pandas DataFrame-ek listája.
  2. Válassza ki a Data Wranglerben megnyitni kívánt DataFrame-et. Mivel ez a jegyzetfüzet csak egy DataFrame-et tartalmaz, dfválassza a lehetőséget df.

Képernyőkép arról, hogyan indíthatja el az adatküldőt egy jegyzetfüzetből.

A Data Wrangler elindítja és leíró áttekintést készít az adatokról. A középen lévő táblázat az egyes adatoszlopokat jeleníti meg. A táblázat melletti Összegzés panelen a DataFrame-ről szóló információk láthatók. Amikor kijelöl egy oszlopot a táblában, az összefoglaló a kijelölt oszlopra vonatkozó információkkal frissül. Bizonyos esetekben a megjelenített és összegzett adatok a DataFrame csonkolt nézete lesznek. Ha ez történik, figyelmeztető kép jelenik meg az összefoglaló panelen. Vigye az egérmutatót erre a figyelmeztetésre a helyzetet magyarázó szöveg megtekintéséhez.

Képernyőkép az adatküldő áttekintéséről.

Minden műveletet kattintással alkalmazhat, valós időben frissítheti az adatmegjelenítést, és olyan kódot hozhat létre, amelyet újrahasználható függvényként menthet vissza a jegyzetfüzetbe.

A szakasz további része végigvezeti a Data Wrangler adattisztításának lépésein.

Ismétlődő sorok elvetése

A bal oldali panelen az adathalmazon végrehajtható műveletek (például Keresés és csere, Formátum, Képletek, Numerikus) listája látható.

  1. Bontsa ki a Keresés és csere elemet , és válassza az Ismétlődő sorok elvetése lehetőséget.

    Képernyőkép az ismétlődő sorok keresés és csere alatti elvetésről.

  2. Megjelenik egy panel, amelyen kiválaszthatja azoknak az oszlopoknak a listáját, amelyeket össze szeretne hasonlítani egy ismétlődő sor definiálásához. Válassza a RowNumber és a CustomerId lehetőséget.

    A középső panelen a művelet eredményeinek előnézete látható. Az előnézet alatt található a művelet végrehajtásához szükséges kód. Ebben az esetben az adatok változatlannak tűnnek. Mivel azonban csonkolt nézetet lát, érdemes továbbra is alkalmazni a műveletet.

    A Data Wrangler ismétlődő sorainak elvetése képernyőképe.

  3. A következő lépéshez válassza az Alkalmaz elemet (az oldalon vagy az alján).

Hiányzó adatokkal rendelkező sorok elvetése

A Data Wrangler használatával a hiányzó adatokat tartalmazó sorokat az összes oszlopba elvetheti.

  1. Válassza a Hiányzó értékek elvetése lehetőséget a Keresés és csere listában.

  2. Válassza az Összes kijelölése lehetőséget a Céloszlopok közül.

    Képernyőkép a hiányzó sorok eltávolításáról a Data Wranglerben.

  3. Válassza az Alkalmaz lehetőséget a következő lépésre való ugráshoz.

Oszlopok eltávolítása

A Data Wrangler használatával elvetheti a szükségtelen oszlopokat.

  1. Bontsa ki a sémát, és válassza az Oszlopok elvetése lehetőséget.

  2. Válassza a RowNumber, CustomerId, Surname lehetőséget. Ezek az oszlopok piros színben jelennek meg az előnézetben, hogy megjelenjenek a kód által módosítottak (ebben az esetben elvetve).)

    A Data Wranglerben lévő oszlopok elvetése képernyőképe.

  3. Válassza az Alkalmaz lehetőséget a következő lépésre való ugráshoz.

Kód hozzáadása jegyzetfüzethez

Minden alkalommal, amikor az Alkalmaz lehetőséget választja, egy új lépés jön létre a bal alsó részén található Tisztítási lépések panelen. A panel alján válassza az előnézeti kódot az összes lépéshez az összes külön lépés kombinációjának megtekintéséhez.

A bal felső sarokban válassza a Kód hozzáadása jegyzetfüzethez lehetőséget a Data Wrangler bezárásához és a kód automatikus hozzáadásához. A Kód hozzáadása jegyzetfüzethez tördeli a kódot egy függvényben, majd meghívja a függvényt.

Képernyőkép az előnézeti kódról és a jegyzetfüzethez való hozzáadás helyéről.

Tipp.

A Data Wrangler által létrehozott kód csak akkor lesz alkalmazva, ha manuálisan futtatja az új cellát.

Ha nem a Data Wranglert használta, használhatja ezt a következő kódcellát.

Ez a kód hasonló a Data Wrangler által létrehozott kódhoz, de hozzáadja az argumentumot inplace=True az egyes generált lépésekhez. A beállítással inplace=Truea pandas felülírja az eredeti DataFrame-et ahelyett, hogy egy új DataFrame-et állít elő kimenetként.

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

Az adatok feltárása

A megtisztított adatok összegzéseinek és vizualizációinak megjelenítése.

Kategorikus, numerikus és célattribútumok meghatározása

Ezzel a kóddal kategorikus, numerikus és célattribútumokat határozhat meg.

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

Az öt szám összegzése

A numerikus attribútumok ötszámos összegzésének (a minimális pontszám, az első kvartilis, a medián, a harmadik kvartilis, a maximális pontszám) megjelenítése dobozdiagramok használatával.

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

A gráf az öt számból álló összegzéseket jeleníti meg.

Kilépett és nem létező ügyfelek elosztása

A kilépett és a nem létező ügyfelek eloszlásának megjelenítése a kategorikus attribútumok között.

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)

A diagram a kilépő és a nem létező ügyfelek sávdiagramjait jeleníti meg.

Numerikus attribútumok eloszlása

Numerikus attribútumok gyakoriságeloszlásának megjelenítése hisztogram használatával.

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

A gráf a numerikus attribútumok eloszlását mutatja.

Funkciófejlesztés végrehajtása

Szolgáltatásfejlesztés elvégzése új attribútumok létrehozásához az aktuális attribútumok alapján:

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

A Data Wrangler használata egy gyakori kódolás végrehajtásához

A Data Wrangler egy gyakori kódolás végrehajtására is használható. Ehhez nyissa meg újra a Data Wranglert. Ezúttal válassza ki az df_clean adatokat.

  1. Bontsa ki a képleteket , és válassza az Egy gyakori elérésű kód lehetőséget.
  2. Megjelenik egy panel, amelyen kiválaszthatja azoknak az oszlopoknak a listáját, amelyen egy gyakori kódolást szeretne végrehajtani. Válassza a Földrajzi hely és a Nem lehetőséget.

Másolhatja a létrehozott kódot, bezárhatja az Data Wranglert a jegyzetfüzetbe való visszatéréshez, majd beillesztheti egy új cellába. Vagy válassza a kód hozzáadása a jegyzetfüzethez a bal felső sarokban az Data Wrangler bezárásához és a kód automatikus hozzáadásához.

Ha nem a Data Wranglert használta, használhatja ezt a következő kódcellát:

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

A feltáró adatelemzés megfigyeléseinek összegzése

  • A legtöbb ügyfél Franciaországból származik, Spanyolországhoz és Németországhoz képest, míg Spanyolországban a legalacsonyabb a forgalom aránya Franciaországhoz és Németországhoz képest.
  • A legtöbb ügyfél hitelkártyával rendelkezik.
  • Vannak olyan ügyfelek, akiknek az életkora és a hitelképessége 60 év feletti, illetve 400 év alatti, de nem tekinthetők kiugró értéknek.
  • Nagyon kevés ügyfélnek van több mint két bank terméke.
  • Azok az ügyfelek, akik nem aktívak, magasabb a forgalom aránya.
  • Úgy tűnik, hogy a nemi és a bérleti évek nem befolyásolják az ügyfél bankszámlájának bezárására vonatkozó döntését.

Delta-tábla létrehozása a megtisztított adatokhoz

Ezeket az adatokat a sorozat következő jegyzetfüzetében fogja használni.

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

Következő lépés

Gépi tanulási modellek betanítása és regisztrálása az alábbi adatokkal: