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ığı kullanacaksınız seaborn. hakkında seaborndaha 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 çevreleyici bir deneyim sunan not defteri tabanlı data Wrangler aracını da kullanacaksınız.

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

  1. Lakehouse'daki bir delta tablosundan depolanan 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. kullanarak seabornkeşif veri analizi gerçekleştirin.

Önkoşullar

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

Not defterinde birlikte izleyin

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 üzere 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 defterine bir göl evi eklediğinizden emin olun.

Önemli

Bölüm 1'de kullandığınız göl eviyle aynı gölü ekleyin.

Göl evinden 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

ile displayham 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 , Pnadas, Seabornve Matplotlib gibi Numpygerekli 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. Veri Wrangler başlatılmadan önce hücre yürütmenin tamamlanması gerekir.

  1. Not defteri şeridi Veri sekmesinin altında Verileri Başlat Wrangler'ı seç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 öğesini dfseçin df.

Bir not defterinden veri düzenleyicisinin nasıl başlatıldığını gösteren ekran görüntüsü.

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 Özet 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ısal gibi) bulunur.

  1. Bul ve değiştir'i genişletin ve Yinelenen satırları bırak'ı seçin.

    Yinelenen satırları bulma ve değiştirme altında bırakma adımlarını gösteren ekran görüntüsü.

  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 ve CustomerId'yi 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ılıyor olduğunu gösteren ekran görüntüsü.

  3. Sonraki adıma gitmek için Uygula'yı (yan tarafta veya altta) seçin.

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

Eksik veri içeren satırları tüm sütunlara bırakmak için Veri Wrangler'ı kullanın.

  1. Bul ve değiştir'den Eksik değerleri bırak'ı seçin.

  2. Hedef sütunlarından Tümünü seç'i seçin.

    Data Wrangler'da eksik satırların bırakılıyor olduğunu gösteren ekran görüntüsü.

  3. Sonraki adıma geçmek için Uygula'yı seçin.

Sütunları bırakma

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

  1. Şema'yi genişletin ve Sütunları bırak'ı seçin.

  2. RowNumber, CustomerId, Soyad'ı 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 bırakılıyor olduğunu gösteren ekran görüntüsü.

  3. Sonraki adıma geçmek için Uygula'yı seçin.

Not defterine kod ekleme

Uygula'yı her seçtiğinizde, sol alttaki 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 için tüm adımlar için Kodu önizle'yi seçin.

Data Wrangler'ı kapatmak ve kodu otomatik olarak eklemek için sol üstteki Not defterine kod ekle'yi seçin. Not defterine kod ekle işlevindeki kodu sarmalar ve işlevi ç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 bağımsız değişkenini inplace=True ekler. ayarıyla inplace=Truepandas, çı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ılık özet

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

Grafikte beş sayılık özetler gösterilir.

Çıkış yapılan ve olmayan 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']
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, çıkış yapılan ve desteklenmeyen 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()

Grafik, 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["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])

Tek etkin kodlama gerçekleştirmek için Veri Wrangler kullanma

Veri Wrangler, tek etkin kodlama gerçekleştirmek için de kullanılabilir. Bunu yapmak için Data Wrangler'ı yeniden açın. Bu kez verileri seçin df_clean .

  1. Formüller'i genişletin ve Tek erişimli kodlama'ya tıklayın.
  2. Bir sık erişimli kodlama gerçekleştirmek istediğiniz sütunların listesini seçmeniz için bir panel görüntülenir. Coğrafya ve Cinsiyet'i seç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, Sol üstteki Not defterine kod ekle'yi seçerek Data Wrangler'ı kapatın ve kodu otomatik olarak ekleyin.

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: