目录
应用目标
-
手动准备异常数据集(使用新手学习最广泛地数据集iris.csv,自行添加异常值和空值)
-
识别异常数据(方法一:3σ原则识别异常值 方法二:箱形图)
-
填补缺失值/空白值(向上填补、向下填补、指定值填补)
-
数据清洗结果保存至文件
思路分析
main函数
-
为了更好地封装功能函数,采用统一的接口,功能函数返回相同的数据结构。
-
相较于以往,可插入性更加完善,比如方便添加若干种异常值处理方法或数据填充方法。
-
main函数完成的是框架工作,提供统一接口,方便后期扩充功能函数。
def main():
# 从文件读取数据
path = "iris_mistake.csv"
or_data = read_data(path)
# 异常值处理 两种选择方式 返回异常值所在位置
outlier_method = input('输入异常值处理方法(three_sigma/box_plot):')
if outlier_method == "three_sigma":
outlier = three_sigma(or_data)
elif outlier_method == "box_plot":
outlier = box_plot(or_data)
# 将异常值置空
nan_data = update_data_to_null(or_data, outlier)
# 空值填补处理 三种选择方式 返回填补后的dataFrame
fill_method = input('输入空值填补方法(fillup/filldown/value):')
fill_data = fillna(nan_data,fill_method)
# 写入文件
new_path = "iris_" + outlier_method + "_" + fill_method + ".csv"
write_csv(new_path,fill_data)
if __name__=="__main__":
main()
异常值处理功能函数
3σ原则
- 以列为单位进行循环处理(计算均值方差 -> 找到上下界 -> 返回异常值的index元组)
- 不同的数据集,需要手动调整pass的列(iris数据集的最后一列Species 不需要参与计算)
def three_sigma(or_data):
column_id = 0
outlier = [] # 存放异常值index
for column_head in or_data.columns: # 按列遍历
if column_head == 'Species': # 最后一列不进行处理
pass
else:
print(column_head) # 计算总和、均值、方差
column_data_sum =