Mendeteksi, menjelajahi, dan memvalidasi dependensi fungsional dalam data Anda dengan menggunakan tautan semantik

Dependensi fungsi adalah hubungan antara kolom dalam tabel, di mana nilai dalam satu kolom menentukan nilai di kolom lain. Memahami dependensi ini dapat membantu Anda mengungkap pola dan hubungan dalam data Anda. Pemahaman ini dapat membantu tugas rekayasa fitur, pembersihan data, dan pembuatan model. Dependensi fungsional bertindak sebagai invarian efektif yang membantu Anda menemukan dan memperbaiki masalah kualitas data yang mungkin sulit dideteksi sebaliknya.

Dalam artikel ini, Anda menggunakan tautan semantik untuk:

  • Menemukan dependensi di antara kolom FabricDataFrame
  • Visualisasikan dependensi
  • Mengidentifikasi masalah kualitas data
  • Memvisualisasikan masalah kualitas data
  • Menerapkan batasan fungsi antara kolom dalam himpunan data

Prasyarat

  • Buka pengalaman Ilmu Data yang ditemukan di Microsoft Fabric.
  • Buat buku catatan baru untuk menyalin dan menempelkan kode ke dalam sel.
  • Untuk Spark 3.4 ke atas, tautan Semantic tersedia dalam runtime default saat menggunakan Fabric, dan tidak perlu menginstalnya. Jika Anda menggunakan Spark 3.3 atau yang lebih baru, atau jika Anda ingin memperbarui ke versi Terbaru Semantic Link, Anda dapat menjalankan perintah: python %pip install -U semantic-link
  • Tambahkan Lakehouse ke buku catatan Anda.

Tautan semantik tersedia dalam runtime Fabric default. Untuk memperbarui ke versi terbaru tautan semantik, jalankan perintah ini:

%pip install -U semantic-link

Menemukan dependensi fungsi dalam data

Fungsi SemPy find_dependencies mendeteksi dependensi fungsi antara kolom FabricDataFrame. Fungsi ini menggunakan ambang batas pada entropi kondisional untuk menemukan perkiraan dependensi fungsional, di mana entropi kondisional rendah menunjukkan ketergantungan yang kuat antar kolom. Untuk membuat find_dependencies fungsi lebih selektif, atur ambang yang lebih rendah pada entropi kondisional. Ambang batas bawah berarti bahwa hanya dependensi yang lebih kuat yang terdeteksi.

Cuplikan kode Python ini menunjukkan cara menggunakan find_dependencies:

from sempy.fabric import FabricDataFrame
from sempy.dependencies import plot_dependency_metadata
import pandas as pd


df = FabricDataFrame(pd.read_csv("your_data.csv"))

deps = df.find_dependencies()

Fungsi find_dependencies ini mengembalikan FabricDataFrame dengan dependensi yang terdeteksi di antara kolom. Daftar mewakili kolom yang memiliki pemetaan 1:1. Fungsi ini juga menghapus tepi transitif, untuk mencoba memangkas dependensi potensial.

Saat Anda menentukan dropna=True opsi , fungsi menghilangkan baris yang memiliki nilai NaN di salah satu kolom dari evaluasi. Eliminasi ini dapat mengakibatkan dependensi nontransitif, seperti yang ditunjukkan dalam contoh berikut:

Sebuah B C
1 1 1
1 1 1
1 BkA 9
2 BkA 2
2 2 2

Dalam beberapa kasus, rantai dependensi dapat membentuk siklus saat Anda menentukan dropna=True opsi, seperti yang ditunjukkan dalam contoh berikut:

Sebuah B C
1 1 BkA
2 1 BkA
BkA 1 1
BkA 2 1
1 BkA 1
1 BkA 2

Memvisualisasikan dependensi dalam data

Setelah Menemukan dependensi fungsi dalam himpunan data dengan menggunakan find_dependencies, Anda dapat memvisualisasikan dependensi dengan menggunakan plot_dependency_metadata fungsi . Fungsi ini mengambil FabricDataFrame yang dihasilkan dari find_dependencies dan membuat representasi visual dependensi antara kolom dan grup kolom.

Cuplikan kode Python ini menunjukkan cara menggunakan plot_dependencies:

from sempy.fabric import FabricDataFrame
from sempy.dependencies import plot_dependency_metadata
from sempy.samples import download_synthea
import pandas as pd

download_synthea(which='small')

df = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv"))

deps = df.find_dependencies()
plot_dependency_metadata(deps)

Fungsi ini plot_dependency_metadata menghasilkan visualisasi yang menunjukkan pengelompokan kolom 1:1. Kolom yang termasuk dalam satu grup ditempatkan dalam satu sel. Jika fungsi tidak menemukan kandidat yang sesuai, fungsi mengembalikan FabricDataFrame kosong. Cuplikan layar memperlihatkan output fungsi plot_dependencies.

Cuplikan layar memperlihatkan output fungsi plot_dependencies.

Mengidentifikasi masalah kualitas data

Masalah kualitas data dapat muncul dalam berbagai bentuk - misalnya, nilai yang hilang, inkonsistensi, atau ketidakakuratan. Untuk memastikan keandalan dan validitas analisis atau model apa pun yang dibangun pada data, penting untuk mengidentifikasi dan mengatasi masalah ini. Salah satu cara untuk mendeteksi masalah kualitas data adalah dengan memeriksa pelanggaran dependensi fungsi antara kolom dalam himpunan data.

Fungsi ini list_dependency_violations dapat membantu Anda menemukan pelanggaran dependensi fungsi antara kolom himpunan data. Saat Anda menyediakan kolom penentu dan kolom dependen, fungsi menunjukkan nilai yang melanggar dependensi fungsional, bersama dengan jumlah kemunculan masing-masing. Informasi ini dapat membantu Anda memeriksa perkiraan dependensi dan mengidentifikasi masalah kualitas data.

Cuplikan kode berikut menunjukkan cara menggunakan list_dependency_violations fungsi :

from sempy.fabric import FabricDataFrame
from sempy.samples import download_synthea
import pandas as pd

download_synthea(which='small')

df = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv"))

violations = df.list_dependency_violations(determinant_col="ZIP", dependent_col="CITY")

Dalam contoh ini, fungsi mengasumsikan dependensi fungsional antara kolom ZIP (determinan) dan CITY (dependen). Jika himpunan data memiliki masalah kualitas data - misalnya, Kode Pos yang sama yang ditetapkan ke beberapa kota - fungsi menghasilkan data dengan masalah:

ZIP KOTA jumlah
12345 Boston 2
12345 Seattle 1

Output ini menunjukkan bahwa dua kota yang berbeda (Boston dan Seattle) memiliki nilai Kode Pos yang sama (12345). Hasil ini menunjukkan masalah kualitas data dalam himpunan data.

Fungsi list_dependency_violations menyediakan lebih banyak opsi yang dapat menangani nilai yang hilang, menampilkan nilai yang dipetakan ke nilai yang melanggar, membatasi jumlah pelanggaran yang dikembalikan, dan mengurutkan hasil berdasarkan kolom jumlah atau penentu.

Output list_dependency_violations dapat membantu Anda mengidentifikasi masalah kualitas data himpunan data. Namun, Anda harus memeriksa hasil dengan cermat dan mempertimbangkan konteks data Anda, untuk menentukan tindakan yang paling tepat untuk mengatasi masalah yang diidentifikasi. Pendekatan ini mungkin melibatkan lebih banyak pembersihan, validasi, atau eksplorasi data untuk memastikan keandalan dan validitas analisis atau model Anda.

Memvisualisasikan masalah kualitas data

Masalah kualitas data dapat merusak keandalan dan validitas analisis atau model apa pun yang dibangun pada data tersebut. Mengidentifikasi dan mengatasi masalah ini penting untuk memastikan keakuratan hasil Anda. Untuk mendeteksi masalah kualitas data, periksa pelanggaran dependensi fungsi antara kolom dalam himpunan data. Memvisualisasikan pelanggaran ini dapat menunjukkan masalah dengan lebih jelas, dan membantu Anda mengatasinya dengan lebih efektif.

Fungsi ini plot_dependency_violations dapat membantu memvisualisasikan pelanggaran dependensi fungsi antara kolom dalam himpunan data. Mengingat kolom penentu dan kolom dependen, fungsi ini menunjukkan nilai yang melanggar dalam format grafis, untuk mempermudah memahami sifat dan tingkat masalah kualitas data.

Cuplikan plot_dependency_violations kode ini menunjukkan cara menggunakan fungsi :

from sempy.fabric import FabricDataFrame
from sempy.samples import download_synthea
import pandas as pd

download_synthea(which='small')

df = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv"))

df.plot_dependency_violations(determinant_col="ZIP", dependent_col="CITY")

Dalam contoh ini, fungsi mengasumsikan dependensi fungsional yang ada antara kolom ZIP (determinan) dan CITY (dependen). Jika himpunan data memiliki masalah kualitas data - misalnya, kode pos yang sama yang ditetapkan ke beberapa kota - fungsi menghasilkan grafik nilai yang melanggar.

Fungsi plot_dependency_violations menyediakan opsi tambahan yang dapat menangani nilai yang hilang, menampilkan nilai yang dipetakan ke nilai pelanggaran, membatasi jumlah pelanggaran yang dikembalikan, dan mengurutkan hasil berdasarkan kolom penghitungan atau kolom determinan.

Fungsi ini plot_dependency_violations menghasilkan visualisasi yang dapat membantu mengidentifikasi masalah kualitas data himpunan data. Namun, Anda harus memeriksa hasil dengan cermat dan mempertimbangkan konteks data Anda, untuk menentukan tindakan yang paling tepat untuk mengatasi masalah yang diidentifikasi. Pendekatan ini mungkin melibatkan lebih banyak pembersihan, validasi, atau eksplorasi data untuk memastikan keandalan dan validitas analisis atau model Anda.

Cuplikan layar memperlihatkan output fungsi plot_dependency_violations.

Menerapkan batasan fungsi

Kualitas data sangat penting untuk memastikan keandalan dan validitas analisis atau model apa pun yang dibangun di atas himpunan data. Penegakan batasan fungsi antara kolom dalam himpunan data dapat membantu meningkatkan kualitas data. Batasan fungsional memastikan bahwa hubungan antar kolom memiliki akurasi dan konsistensi, yang dapat menyebabkan analisis atau hasil model yang lebih akurat.

Fungsi ini memberlakukan batasan fungsi antara kolom dalam himpunan drop_dependency_violations data. Ini menghapus baris yang melanggar batasan tertentu. Mengingat kolom yang menentukan dan kolom dependen, fungsi ini menghapus baris dengan nilai yang tidak sesuai dengan batasan fungsional antara dua kolom.

Cuplikan drop_dependency_violations kode ini menunjukkan cara menggunakan fungsi :

from sempy.fabric import FabricDataFrame
from sempy.samples import download_synthea
import pandas as pd

download_synthea(which='small')

df = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv"))

cleaned_df = df.drop_dependency_violations(determinant_col="ZIP", dependent_col="CITY")

Dalam contoh ini, fungsi memberlakukan batasan fungsional antara kolom ZIP (determinan) dan CITY (dependen). Untuk setiap nilai determinan, fungsi memilih nilai yang paling umum dari kolom dependen, dan menghilangkan semua baris dengan nilai lain. Misalnya, dalam himpunan data ini, baris dengan CITY=Seattle dihapus, dan dependensi fungsional ZIP->CITY berlaku dalam output.

ZIP KOTA
12345 Seattle
12345 Boston
12345 Boston
98765 Baltimore
00000 San Fransisco

Fungsi ini drop_dependency_violations menyediakan verbose opsi untuk mengontrol verbositas output. Dengan mengatur verbose=1, Anda dapat melihat jumlah baris yang dihilangkan. Nilai verbose=2 memperlihatkan seluruh konten dari baris yang dihapus.

Fungsi ini drop_dependency_violations dapat memberlakukan batasan fungsional antara kolom dalam himpunan data Anda, yang dapat membantu meningkatkan kualitas data dan menyebabkan hasil yang lebih akurat dalam analisis atau model Anda. Namun, pertimbangkan dengan cermat konteks data Anda dan batasan fungsional yang Anda pilih untuk diberlakukan, untuk memastikan bahwa Anda tidak secara tidak sengaja menghapus informasi berharga dari himpunan data Anda.