使用Python Great Expectations删除无效数据



我刚开始使用Great Expectations库,我想知道是否可以使用它从Pandas DataFrame中删除无效数据。如果可能的话,我该怎么做呢?我也想插入无效的数据到PostgreSQL数据库。

我在文档和网络搜索中没有找到任何关于这个的信息。

后编辑:澄清一下:我需要在这种情况下,例如在一个DataFrame中发现5行无效(例如df.expect_column_values_to_not_be_null('age')有5行null),将它们从原始DataFrame中删除,并将它们插入到PostgreSQL错误表

Great Expectations是验证数据的强大工具。
像所有强大的工具一样,它并没有那么简单。

你可以从这里开始:

import great_expectations as ge
import numpy as np
import pandas as pd

# get some random numbers and create a pandas df
df_raw = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
# initialize a "great_expectations" df 
df = ge.from_pandas(df_raw)
# search for invalidate data on column 'A'. 
# In this case, i'm looking for any null value from column 'A'.
df.expect_column_values_to_not_be_null('A')

结果:

{
"exception_info": null,
"expectation_config": {
"expectation_type": "expect_column_values_to_not_be_null",
"kwargs": {
"column": "A",
"result_format": "BASIC"
},
"meta": {}
},
"meta": {},
"success": true,
"result": {
"element_count": 100,
"unexpected_count": 0,
"unexpected_percent": 0.0,
"partial_unexpected_list": []
}
}

看看回应:好消息!!
我的df中没有null值。"unexpected_count"=0

API参考https://legacy.docs.greatexpectations.io/en/latest/autoapi/great_expectations/index.html


编辑:如果您只需要查找一些无效值并将df拆分为:

清洁Dataframe
  1. 脏Dataframe

也许你不需要"great_expectations"。您可以使用这样的函数:

import pandas as pd
my_df = pd.DataFrame({'A': [1,2,1,2,3,0,1,1,5,2]})
def check_data_quality(dataframe):
df = dataframe
clean_df = df[df['A'].isin([1, 2])]
dirty_df = df[df["A"].isin([1, 2]) == False]
return {'clean': clean_df, 
'dirty': dirty_df}
my_df_clean = check_data_quality(my_df)['clean']
my_df_dirty = check_data_quality(my_df)['dirty']

最新更新