错误值处理
识别和处理错误值的方法主要是不同的数据源交叉比对。比如有 A、B、C 三个数据源,同样的数据从 A 和 B 采集的数值相同,但跟 C 采集的数值不同,则以数据源 A 或 B 采集的数据为准。在 Python 中可以用 pandas 来完成交叉比对,示例如下:
import pandas as pd
# df_A、df_B、df_B为三个数据表,这三张表的数据本应相同,但现在有错误的数据在里面
df_A = pd.DataFrame({'value_A': [10, 20, 30]},index=['2020-02-01','2020-02-02','2020-02-03'])
df_B = pd.DataFrame({'value_B': [10, 20, 31]},index=['2020-02-01','2020-02-02','2020-02-03'])
df_C = pd.DataFrame({'value_C': [10, 22, 30]},index=['2020-02-01','2020-02-02','2020-02-03'])
# 将df_A、df_B、df_B合并为1个DataFrame
df = df_A.join([df_B, df_C], how='outer')
# 比较value_A、value_B两列,如果值相等,则'correct'的值设为True(数据正确),否则为False(存在错误数据)
df['correct'] = (df['value_A'] == df['value_B'])
# 如果'correct'列的值设为True,则取value_A为结果值,否则取value_C的值为结果值
df['value'] = df.apply(lambda x: x['value_A'] if x['correct'] else x['value_C'], axis=1)