Aracılığıyla paylaş


Öğretici 2. Bölüm: Microsoft Fabric not defterlerini kullanarak verileri keşfetme ve görselleştirme

Bu öğreticide, veri görselleştirme tekniklerini kullanarak temel özelliklerini özetlerken verileri incelemek ve araştırmak için keşif veri analizi (EDA) gerçekleştirmeyi öğreneceksiniz.

Veri çerçeveleri ve diziler üzerinde görsel oluşturmak için üst düzey bir arabirim sağlayan bir Python veri görselleştirme kitaplığı olan seabornkullanacaksınız. seabornhakkında daha fazla bilgi için bkz. Seaborn: İstatistiksel Veri Görselleştirme.

Ayrıca keşif veri analizi ve temizleme işlemleri gerçekleştirmek için size etkileyici bir deneyim sağlayan, not defteri tabanlı bir araç olan Data Wrangler'ı da kullanacaksınız.

Bu öğreticideki ana adımlar şunlardır:

  1. Lakehouse'taki bir delta tablosundan saklanan verileri okuyun.
  2. Spark DataFrame'i Python görselleştirme kitaplıklarının desteklediği Pandas DataFrame'e dönüştürün.
  3. İlk veri temizleme ve dönüştürme işlemlerini gerçekleştirmek için Data Wrangler kullanın.
  4. seabornkullanarak keşif veri analizi gerçekleştirin.

Önkoşullar

Bu, öğretici serisindeki 5'in 2. bölümüdür. Bu eğitimi tamamlamak için önce şunları yapın:

Not defterini takip edin

2-explore-cleanse-data.ipynb bu öğreticiye eşlik eden not defteridir.

  • Bu öğreticide eşlik eden not defterini açmak için, Not defterini çalışma alanınıza aktarmak sisteminizi veri bilimi öğreticilerine hazırlama başlığındaki yönergeleri izleyin.

  • Bu sayfadaki kodu kopyalayıp yapıştırmayı tercih ederseniz, yeni bir not defteri oluşturabilirsiniz.

  • Kod çalıştırmaya başlamadan önce not defteri bir göl evi eklemeyi unutmayın.

Önemli

Bölüm 1'de kullandığınız aynı göl evini bağlayın.

Lakehouse'dan ham verileri okuma

Lakehouse'un Dosyalar bölümünden ham verileri okuyun. Bu verileri önceki not defterine yüklemişsiniz. Bu kodu çalıştırmadan önce Bölüm 1'de kullandığınız lakehouse'u bu not defterine eklediğinizden emin olun.

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

Veri kümesinden pandas DataFrame oluşturma

Daha kolay işleme ve görselleştirme için spark DataFrame'i pandas DataFrame'e dönüştürün.

df = df.toPandas()

Ham verileri görüntüleme

displayile ham verileri keşfedin, bazı temel istatistikler yapın ve grafik görünümlerini gösterin. Veri analizi ve görselleştirme için önce Numpy, Pnadas, Seabornve Matplotlib gibi gerekli kitaplıkları içeri aktarmanız gerektiğini unutmayın.

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)

İlk veri temizleme işlemini gerçekleştirmek için Data Wrangler kullanma

Not defterinizdeki pandas Dataframe'leri keşfetmek ve dönüştürmek için Data Wrangler'ı doğrudan not defterinden başlatın.

Not

Not defteri çekirdeği meşgulken veri Wrangler açılamıyor. Data Wrangler başlatılmadan önce hücre yürütmenin tamamlanması gerekir.

  1. Not defteri şeridi Veri sekmesinin altında Veri Wrangler'ı başlatseçin. Düzenleme için etkinleştirilmiş pandas DataFrame'lerin listesini görürsünüz.
  2. Data Wrangler'da açmak istediğiniz DataFrame'i seçin. Bu not defteri yalnızca bir DataFrame içerdiğinden dfdfseçin.

Ekran görüntüsü, bir not defterinden veri düzenleyicinin nasıl başlatıldığını gösterir.

Data Wrangler başlatılır ve verilerinize açıklayıcı bir genel bakış oluşturur. Ortadaki tabloda her veri sütunu gösterilir. Tablonun yanındaki Özeti panelinde DataFrame hakkındaki bilgiler gösterilir. Tabloda bir sütun seçtiğinizde, özet seçili sütun hakkındaki bilgilerle güncelleştirilir. Bazı durumlarda, görüntülenen ve özetlenen veriler DataFrame'inizin kesilmiş bir görünümü olur. Bu durumda, özet bölmesinde uyarı görüntüsü görürsünüz. Durumu açıklayan metni görüntülemek için bu uyarının üzerine gelin.

Veri düzenleyiciye genel bakış gösteren ekran görüntüsü.

Yaptığınız her işlem tıklamalar halinde uygulanabilir, verilerin gerçek zamanlı olarak görüntülenmesi güncelleştirilebilir ve not defterinize yeniden kullanılabilir bir işlev olarak kaydedebileceğiniz kod oluşturulabilir.

Bu bölümün geri kalanı, Data Wrangler ile veri temizleme gerçekleştirme adımlarını gösterir.

Yinelenen satırları bırakma

Sol panelde, veri kümesinde gerçekleştirebileceğiniz işlemlerin listesi (Bul ve değiştir, Biçim, Formüller, Sayısalgibi).

  1. genişletin ve bul ve değiştir'i açın, yinelenen satırları bırakseçin.

    Bul ve değiştir altında yinelenen satırları kaldır ekran görüntüsü gösterilir.

  2. Yinelenen bir satır tanımlamak üzere karşılaştırmak istediğiniz sütunların listesini seçmeniz için bir panel görüntülenir. RowNumber'yi ve CustomerId'ü seçin.

    Orta panelde bu işlemin sonuçlarının önizlemesi yer alır. Önizlemenin altında işlemi gerçekleştirmek için kod bulunur. Bu örnekte veriler değişmemiş gibi görünür. Ancak kesilmiş bir görünüme baktığınız için işlemi yine de uygulamak iyi bir fikirdir.

    Data Wrangler'da yinelenen satırların bırakılmasını gösteren ekran görüntüsü.

  3. Sonraki adıma geçmek için seçin, uygula (yan tarafta veya altta) seçeneğini kullanın.

Eksik veri içeren satırları bırakma

Veri Wrangler’ı kullanarak tüm sütunlarda eksik veri bulunan satırları kaldırın.

  1. bul ve değiştireksik değerleri Bırak'ı seçin.

  2. Seçin'i tüm Hedef sütunlarından.

    Data Wrangler'da eksik satırların çıkarıldığını gösteren ekran görüntüsü.

  3. Sonraki adıma geçmek için seçin, ardından Uygula'yı tıklayın.

Sütunları kaldır

İhtiyacınız olmayan sütunları bırakmak için Data Wrangler'ı kullanın.

  1. şema genişletin ve sütunlarıBırakın'ı seçin.

  2. RowNumber, CustomerIdSoyadıöğesini seçin. Bu sütunlar, kod tarafından değiştirildiğini göstermek için önizlemede kırmızıyla gösterilir (bu durumda bırakılır.)

    Data Wrangler'da sütunların kaldırılmasını gösteren ekran görüntüsü.

  3. Bir sonraki adıma geçmek için 'ı seçin ve ardından'i uygulayın.

Deftere kod ekle

Her Uygulaseçtiğinizde, sol altta bulunan Temizleme adımları panelinde yeni bir adım oluşturulur. Panelin en altında, tüm ayrı adımların birleşimini görüntülemek tüm adımlar için Önizleme kodu'nu seçin.

Data Wrangler'ı kapatmak ve kodu otomatik olarak eklemek için sol üstteki Not defterine kod ekle seçin. Deftere Kod Ekle kodu bir fonksiyona sarar ve fonksiyonu çağırır.

Ekran görüntüsü, önizleme kodunu ve not defterine eklemeye nereden erişileceği gösterir.

İpucu

Yeni hücreyi el ile çalıştırmadığınız sürece Data Wrangler tarafından oluşturulan kod uygulanmaz.

Data Wrangler kullanmadıysanız, bunun yerine bu sonraki kod hücresini kullanabilirsiniz.

Bu kod, Data Wrangler tarafından üretilen koda benzer, ancak oluşturulan adımların her birine inplace=True bağımsız değişkenini ekler. inplace=Truedeğerini ayarlayarak, Pandas çıkış olarak yeni bir DataFrame oluşturmak yerine özgün DataFrame'in üzerine yazar.

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

Verileri keşfetme

Temizlenen verilerin bazı özetlerini ve görselleştirmelerini görüntüleyin.

Kategorik, sayısal ve hedef öznitelikleri belirleme

Kategorik, sayısal ve hedef öznitelikleri belirlemek için bu kodu kullanın.

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

Beş sayıdan oluşan istatistik özeti

Kutu çizimlerini kullanarak sayısal öznitelikler için beş sayılık özeti (en düşük puan, ilk dörttebirlik, ortanca, üçüncü dörttebirlik, en yüksek puan) gösterin.

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 beş sayılık özetleri gösterir.

Çıkış yapan ve yapmayan müşterilerin dağıtımı

Kategorik öznitelikler arasında çıkış yapılan ve çıkarılmış olmayan müşterilerin dağılımını gösterin.

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):
    sns.countplot(x = item, hue = 'Exited', data = df_clean, ax = axarr[ind%2][ind//2])
fig.subplots_adjust(hspace=0.7)

Graph, çıkış yapılan ve çıkış yapılmayan müşterilerin çubuk grafiklerini gösterir.

Sayısal özniteliklerin dağılımı

Histogram kullanarak sayısal özniteliklerin sıklık dağılımını gösterin.

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, sayısal özniteliklerin dağılımını gösterir.

Özellik mühendisliği gerçekleştirme

Geçerli öznitelikleri temel alan yeni öznitelikler oluşturmak için özellik mühendisliği gerçekleştirin:

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

Veri Wrangler'ı kullanarak one-hot kodlama gerçekleştirin

Veri Wrangler, tekil sıcak kodlama gerçekleştirmek için de kullanılabilir. Bunu yapmak için Data Wrangler'ı yeniden açın. Bu kez df_clean verilerini seçin.

  1. Formüller genişletin ve One-hot encodeöğesini seçin.
  2. "Bir one-hot encoding gerçekleştirmek istediğiniz sütunların listesini seçmeniz için bir panel görüntülenir." Coğrafya ve Cinsiyetseçin.

Oluşturulan kodu kopyalayabilir, not defterine dönmek için Data Wrangler'ı kapatabilir ve ardından yeni bir hücreye yapıştırabilirsiniz. Alternatif olarak, Data Wrangler'ı kapatmak ve kodu otomatik olarak eklemek için sol üstteki Not defterine kod ekle seçeneğini seçin.

Data Wrangler kullanmadıysanız, bunun yerine bu sonraki kod hücresini kullanabilirsiniz:

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

Keşif veri analizinden gözlemlerin özeti

  • Müşterilerin çoğu Fransa'dan İspanya ve Almanya'ya göre, İspanya ise Fransa ve Almanya'ya kıyasla en düşük değişim oranına sahip.
  • Müşterilerin çoğunun kredi kartı var.
  • Yaş ve kredi puanı sırasıyla 60'ın üzerinde ve 400'in altında olan müşteriler vardır, ancak aykırı değer olarak düşünülemezler.
  • Çok az müşteri bankanın ikiden fazla ürününe sahip.
  • Etkin olmayan müşterilerin değişim sıklığı daha yüksektir.
  • Cinsiyet ve görev süresi yıllarının müşterinin banka hesabını kapatma kararı üzerinde bir etkisi yok gibi görünüyor.

Temizlenen veriler için delta tablosu oluşturma

Bu verileri bu serinin sonraki not defterinde kullanacaksınız.

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

Sonraki adım

Makine öğrenmesi modellerini şu verilerle eğitin ve kaydedin: