Bagikan melalui


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

Dependensi fungsi adalah hubungan antara kolom dalam tabel, di mana nilai dalam satu kolom digunakan untuk menentukan nilai di kolom lain. Memahami dependensi ini dapat membantu Anda mengungkap pola dan hubungan dalam data Anda, yang pada gilirannya dapat membantu tugas rekayasa fitur, pembersihan data, dan pembuatan model. Dependensi fungsional bertindak sebagai invarian efektif yang memungkinkan 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/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.

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 di bawahnya, atau jika Anda ingin memperbarui ke versi Terbaru Semantic Link, jalankan perintah ini:

%pip install -U semantic-link
``` 

## Find functional dependencies in data

The SemPy `find_dependencies` function detects functional dependencies between the columns of a FabricDataFrame. The function uses a threshold on conditional entropy to discover approximate functional dependencies, where low conditional entropy indicates strong dependence between columns. To make the `find_dependencies` function more selective, you can set a lower threshold on conditional entropy. The lower threshold means that only stronger dependencies will be detected.

This Python code snippet demonstrates how to use `find_dependencies`:

```python
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 mengembalikan find_dependencies 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, baris yang memiliki nilai NaN di salah satu kolom dihilangkan dari evaluasi. Ini dapat mengakibatkan dependensi nontransitif, seperti yang ditunjukkan dalam contoh ini:

A B C
1 1 1
1 1 1
1 NaN 9
2 NaN 2
2 2 2

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

A B C
1 1 NaN
2 1 NaN
NaN 1 1
NaN 2 1
1 NaN 1
1 NaN 2

Memvisualisasikan dependensi dalam data

Setelah Anda menemukan dependensi fungsi dalam himpunan data (menggunakan find_dependencies), Anda dapat memvisualisasikan dependensi dengan 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

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 tidak ada kandidat yang sesuai yang ditemukan, FabricDataFrame kosong akan dikembalikan.

Cuplikan layar memperlihatkan output fungsi plot_dependencies.

Mengidentifikasi masalah kualitas data

Masalah kualitas data dapat memiliki berbagai bentuk - misalnya, nilai, inkonsistensi, atau ketidakakuratan yang hilang. Mengidentifikasi dan mengatasi masalah ini penting untuk memastikan keandalan dan validitas analisis atau model apa pun yang dibangun pada data. 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 mengidentifikasi pelanggaran dependensi fungsi antara kolom himpunan data. Mengingat kolom penentu dan kolom dependen, fungsi ini menunjukkan nilai yang melanggar dependensi fungsional, bersama dengan jumlah kemunculan masing-masing. Ini dapat membantu memeriksa perkiraan dependensi dan mengidentifikasi masalah kualitas data.

Cuplikan list_dependency_violations kode ini menunjukkan cara menggunakan fungsi :

from sempy.fabric import FabricDataFrame
from sempy.samples import download_synthea

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). Ini menyarankan masalah kualitas data dalam himpunan data.

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

Output list_dependency_violations dapat membantu mengidentifikasi masalah kualitas data himpunan data. Namun, Anda harus memeriksa hasilnya 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, Anda dapat memeriksa 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.dependencies import plot_dependency_violations
from sempy.samples import download_synthea

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 ini plot_dependency_violations menyediakan lebih banyak opsi yang dapat menangani nilai yang hilang, memperlihatkan nilai yang dipetakan ke nilai yang melanggar, membatasi jumlah pelanggaran yang dikembalikan, dan mengurutkan hasil berdasarkan kolom hitungan atau penentu.

Fungsi ini plot_dependency_violations menghasilkan visualisasi yang dapat membantu mengidentifikasi masalah kualitas data himpunan data. Namun, Anda harus memeriksa hasilnya 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 dapat membantu memastikan bahwa hubungan antar kolom memiliki akurasi dan konsistensi, yang dapat menyebabkan analisis atau hasil model yang lebih akurat.

Fungsi ini dapat membantu memberlakukan batasan fungsi antara kolom dalam himpunan drop_dependency_violations data. Ini menghilangkan 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

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

Di sini, fungsi memberlakukan batasan fungsional antara kolom ZIP (determinan) dan CITY (dependen). Untuk setiap nilai penentu, nilai dependen yang paling umum dipilih, dan semua baris dengan nilai lain dihilangkan. Misalnya, mengingat himpunan data ini, baris dengan CITY=Seattle akan dihilangkan, dan ZIP dependensi fungsi -> CITY menyimpan 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 baris dari baris yang dijatuhkan.

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, Anda harus mempertimbangkan 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.