使用語意連結偵測、探索及驗證數據中的功能相依性
功能相依性是數據表中數據行之間的關聯性,其中一個數據行中的值用來判斷另一個數據行中的值。 了解這些相依性可協助您找出數據中的模式和關聯性,這對於特徵工程、數據清理和模型建置很有用。 功能相依性可作為有效的非變異,可讓您尋找並修正可能難以偵測的數據質量問題。
在本文中,您將使用語意連結來:
- 尋找 FabricDataFrame 數據行之間的相依性
- 視覺化相依性
- 識別數據質量問題
- 將數據質量問題可視化
- 在數據集中的數據行之間強制執行功能條件約束
必要條件
取得 Microsoft Fabric 訂用帳戶。 或者,註冊免費的 Microsoft Fabric 試用版。
登入 Microsoft Fabric。
使用首頁左側的體驗切換器,切換至 Synapse 資料科學 體驗。
- 移至 Microsoft Fabric 中的 資料科學 體驗。
- 建立 新的筆記本 ,以將程式代碼複製/貼到儲存格中。
- 針對 Spark 3.4 和更新版本,使用 Fabric 時,預設運行時間提供語意連結,而且不需要安裝它。 如果您使用 Spark 3.3 或更新版本,或想要更新為最新版本的 Semantic Link,您可以執行 命令:
python %pip install -U semantic-link
- 將 Lakehouse 新增至您的筆記本。 針對 Spark 3.4 和更新版本,使用 Fabric 時,預設運行時間提供語意連結,而且不需要加以安裝。 如果您使用 Spark 3.3 或更新版本,或想要更新為最新版本的 Semantic Link,您可以執行 命令:
python %pip install -U semantic-link
尋找數據中的功能相依性
SemPy 中的函 find_dependencies
式會偵測 FabricDataFrame 數據行之間的功能相依性。
函式會使用條件式 entropy 的臨界值來探索近似的功能相依性,其中低條件式 entropy 表示數據行之間的強相依性。
若要讓函 find_dependencies
式更具選擇性,您可以在條件式 entropy 上設定較低的臨界值。 較低的臨界值表示只會偵測到更強的相依性。
下列 Python 代碼段示範如何使用 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()
函 find_dependencies
式會傳回 FabricDataFrame,並偵測到數據行之間的相依性。
具有 1:1 對應的數據行將會以清單表示。
函式也會藉由移除 可轉移邊緣來嘗試修剪潛在的相依性。
當您指定 dropna=True
選項時,任一數據行中具有 NaN 值的數據列就會從評估中排除。
這可能會導致相依性無法轉移,如下列範例所示:
A | B | C |
---|---|---|
1 | 1 | 1 |
1 | 1 | 1 |
1 | NaN | 9 |
2 | NaN | 2 |
2 | 2 | 2 |
在某些情況下,當您指定 dropna=True
選項時,相依性鏈結可以形成迴圈,如下列範例所示:
A | B | C |
---|---|---|
1 | 1 | NaN |
2 | 1 | NaN |
NaN | 1 | 1 |
NaN | 2 | 1 |
1 | NaN | 1 |
1 | NaN | 2 |
將數據中的相依性視覺化
在數據集中尋找功能相依性之後, find_dependencies
您可以使用 函式將相依性 plot_dependency_metadata
可視化。
此函式會從 find_dependencies
取得產生的 FabricDataFrame,並建立數據行與數據行群組之間相依性的可視化表示法。
下列 Python 代碼段示範如何使用 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)
函 plot_dependency_metadata
式會產生一個視覺效果,顯示數據行的 1:1 群組。
屬於單一群組的數據行會放入單一數據格中。 如果找不到合適的候選專案,則會傳回空的 FabricDataFrame。
識別數據質量問題
數據質量問題可能會以各種形式出現,例如遺漏值、不一致或錯誤。 識別和解決這些問題對於確保根據數據建置的任何分析或模型的可靠性與有效性至關重要。 偵測數據質量問題的其中一種方法是檢查數據集中數據行之間的功能相依性違規。
函 list_dependency_violations
式可協助您識別數據集中數據行之間的功能相依性違規。
假設有行列式數據行和相依數據行,此函式會顯示違反功能相依性的值,以及其個別出現次數的計數。
這很適合用來檢查近似相依性,並識別數據質量問題。
下列程式代碼示範如何使用 函 list_dependency_violations
式的範例:
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")
在此範例中,函式假設 ZIP (行列式) 和 CITY (相依) 資料行之間有功能相依性。 如果數據集有數據質量問題,例如指派給多個城市的相同郵遞區號,函式會輸出違反的值:
ZIP | 市 | 計數 |
---|---|---|
12345 | 波士頓 | 2 |
12345 | 西雅圖 | 1 |
此輸出指出,相同的郵遞區編碼 (12345) 會附加至兩個不同的城市(波士頓和西雅圖),以建議數據集內的數據質量問題。
函 list_dependency_violations
式提供更多選項來處理遺漏值、顯示對應至違反值的值、限制傳回的違規次數,以及依計數或行列式數據行排序結果。
的 list_dependency_violations
輸出可協助您識別數據集中的數據質量問題。
不過,請務必仔細檢查結果,並考慮數據的內容,以判斷最適合用來解決已識別問題的動作過程。
此動作可能涉及進一步的數據清理、驗證或探索,以確保分析或模型的可靠性與有效性。
將數據質量問題可視化
數據質量問題可能會對建置在數據上的任何分析或模型的可靠性與有效性產生負面影響。 識別和解決這些問題對於確保結果的正確性至關重要。 偵測數據質量問題的其中一種方法是檢查數據集中數據行之間的功能相依性違規。 將這些違規可視化可提供更深入的問題瞭解,並協助您更有效率地解決這些問題。
函 plot_dependency_violations
式可協助可視化數據集中數據行之間的功能相依性違規。
假設有行列式數據行和相依數據行,此函式會以圖形化格式顯示違規值,讓您更容易瞭解數據品質問題的本質和範圍。
下列程式代碼示範如何使用 函 plot_dependency_violations
式的範例:
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")
在此範例中,函式假設 ZIP (行列式) 和 CITY (相依) 資料行之間存在功能相依性。 如果數據集有數據質量問題,例如指派給多個城市的相同郵遞區號,此函式會產生違規值的圖表。
函 plot_dependency_violations
式提供更多選項來處理遺漏值、顯示對應至違反值的值、限制傳回的違規次數,以及依計數或行列式數據行排序結果。
所產生的 plot_dependency_violations
視覺效果可協助您識別數據集中的數據質量問題,並瞭解其本質和範圍。
藉由檢查圖表,您可以深入瞭解行列式數據行與相依數據行之間的關聯性,並找出數據中潛在的錯誤或不一致。
強制執行功能條件約束
數據品質對於確保建置在數據集上的任何分析或模型的可靠性與有效性至關重要。 改善數據品質的其中一種方法是在數據集中的數據行之間強制執行功能條件約束。 功能條件約束有助於確保數據行之間的關聯性一致且精確,這可能會導致分析或模型產生更精確的結果。
函 drop_dependency_violations
式可藉由卸除違反指定條件約束的數據列,協助在數據集中的數據行之間強制執行功能條件約束。
假設有行列式數據行和相依數據行,此函式會移除數據列,其值不符合兩個數據行之間的功能條件約束。
下列程式代碼示範如何使用 函 drop_dependency_violations
式的範例:
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")
在此範例中,函式會強制執行 ZIP (行列式) 和 CITY (相依) 資料行之間的功能條件約束。 針對行列子的每個值,會挑選相依性最常見的值,並卸除具有其他值的所有數據列。 例如,假設有下列數據集:
ZIP | 市 |
---|---|
12345 | 西雅圖 |
12345 | 波士頓 |
12345 | 波士頓 |
98765 | Baltimore |
00000 | 舊金山 |
將會卸除具有 CITY=Seattle 的數據列,且功能相依性 ZIP -> CITY 會保留於輸出中。
函 drop_dependency_violations
式提供 verbose
控制輸出詳細信息的選項。 藉由設定 verbose=1
,您可以看到已卸除的數據列數目,並 verbose=2
可讓您查看已卸除數據列的整個數據列內容。
藉由使用 函 drop_dependency_violations
式,您可以在數據集中的數據行之間強制執行功能條件約束,這有助於改善數據品質,並在分析或模型中產生更精確的結果。
不過,請務必仔細考慮數據的內容,以及您選擇強制執行的功能條件約束,以確保您不會不小心從數據集中移除重要資訊。