Piperider - 協助資料清理以及驗證
Piperider是一個由專門開發MLOps平台的團隊所推出的python套件,能夠協助分析資料以及追蹤資料格式是否符合預期
Install
預設安裝的套件僅支援Sqlite
pip install piperider
如果要用不同的DB連線話,則需要針對DB去安裝不同版本的套件,目前也有支援不使用DB僅用CSV的使用方式
pip install 'piperider[postgres]'
pip install 'piperider[csv]'
Setup
Initial Project
需要先初始話專案並做一些設定
piperider init
跑完初始化後產生.piperider/config.yml的設定檔,再來可以去驗證有沒有成功連線到db
piperider diagnose
如果connector是csv且有找到對應檔案的話會出現類似底下的執行結果
Check connections:
Name: titanic
Type: csv
connector: [OK]
Available Tables: ['titanic_train']
Connection: [OK]
✅ PASS
Check assertion files:
✅ PASS
Feature
Data Profile
透過piperider run
可以一次把data source內的檔案都進行簡易的EDA並視覺化,如果只想要跑限定的table可以加上參數--table $TABLENAME
,再來可以將profile完的結果以html的形式輸出
Assertion
第一次跑完profile後就會產生相關data的assertion,產生的yaml檔會放在.piperider\assertions
下,assertion能夠讓我們知道目前資料中的各種限制
─────────────────────────────────────────────────── Assertion Results ────────────────────────────────────────────────────
Status Test Subject Assertion Expected Actual
────────────────────────────────────────────────────────────────────────────────────────────────────────
[ OK ] titanic_train row count ≥ 801 891
[ OK ] titanic_train.PassengerId assert_column_schema_type INTEGER INTEGER
[ OK ] titanic_train.PassengerId assert_column_not_null - -
[ OK ] titanic_train.Survived assert_column_schema_type INTEGER INTEGER
[ OK ] titanic_train.Survived assert_column_not_null - -
[ OK ] titanic_train.Pclass assert_column_schema_type INTEGER INTEGER
[ OK ] titanic_train.Pclass assert_column_not_null - -
[ OK ] titanic_train.Name assert_column_schema_type VARCHAR VARCHAR
[ OK ] titanic_train.Name assert_column_unique - -
[ OK ] titanic_train.Name assert_column_not_null - -
[ OK ] titanic_train.Sex assert_column_schema_type VARCHAR VARCHAR
[ OK ] titanic_train.Sex assert_column_not_null - -
[ OK ] titanic_train.Age assert_column_schema_type DOUBLE_PRECISION DOUBLE_PRECISION
[ OK ] titanic_train.SibSp assert_column_schema_type INTEGER INTEGER
[ OK ] titanic_train.SibSp assert_column_not_null - -
[ OK ] titanic_train.Parch assert_column_schema_type INTEGER INTEGER
[ OK ] titanic_train.Parch assert_column_not_null - -
[ OK ] titanic_train.Ticket assert_column_schema_type VARCHAR VARCHAR
[ OK ] titanic_train.Ticket assert_column_not_null - -
[ OK ] titanic_train.Fare assert_column_schema_type DOUBLE_PRECISION DOUBLE_PRECISION
[ OK ] titanic_train.Fare assert_column_not_null - -
[ OK ] titanic_train.Fare assert_column_value ≤ 563.5621 [0.0, 512.3292]
[ OK ] titanic_train.Cabin assert_column_schema_type VARCHAR VARCHAR
[ OK ] titanic_train.Embarked assert_column_schema_type VARCHAR VARCHAR
想要再次自動產生assertion的話可以用piperider generate-assertions
,也可以透過修改yaml檔的方式去驗證每次進來的資料都有和一開始訂的資料格式一致
Compare Data
如果有不同版本的資料之分,可以在新的資料進來後重新跑一次profile,而在有了至少兩份profile檔後就可以進行對比
piperider compare-reports --last
方便去檢視不同版本資料間的分布差異
FAQ
Q1. WinError 1314
如果在執行指令的時候有遇到這個問題就得開新的terminal並以系統管理員的權限去重新執行指令,因為部分指令會有使用到symbolic link的需求