数据处理备忘清单

本次笔记内容:

  • ...虽然我明白每次拿到的数据都不一样,数据处理和清洗的步骤和侧重也不一样,但总有一些共性。这使得一个备忘清单很有必要。拿到一套数据后,我们可以对着清单排雷,并加上新遇到的雷。

  • 所以本笔记内容是做数据处理和清洗时需要注意的东西。持续更新,欢迎补充。

  • 我们使用python pandas数据处理

  • 这里的数据指目前我们工作中遇到的微生物组metadata,如电子病历,问卷收集的研究对象社会人口学信息,生活习惯等。有手工录入的,也有自动收集并导出的数据。本质上也是由samples和features构成的data.


  1. 重复值: 重复行/列
  2. 处理有关联的表格,需要注意的地方
  3. 异常值: 不规范数值及错误值
  4. 缺失程度: 每个feature的缺失率
  5. 数据分布:
  6. ... ...
1. 重复行/列:
  • header = None, 不指定index_col的方式导入数据。pandas会把重复column names自动重新编码,见本链接42条
  • 检查是否存在重复行/列名
  • 检查有重复行/列名的行/列,是否完全一致
     > 如果完全一致,考虑只保留一行/列
     > 如果不完全一致,需与数据提供方核实,考虑删除或合并
  • 对删除或合并行/列的操作做好记录。
  • 代码参考: df.duplicated()
2. 处理有关联的表格,需要注意的地方
  • 有关联的表格,比方说OTU table和样本电子病历表格。一个是样本的微生物组数据,一个是样本的疾病信息。样本ID将两个表格关联在一起。
  • 以上为例,则两个表格的样本ID必须完全一致。
  • 检查有关联的表格,关联ID(key)是否完全一致。整理出一致和不一致的部分,与数据提供方核实。
  • 重复行/列可能对关联造成影响,先解决重复行/列问题的问题。
3. 异常值
  • 检查不规范异常值:
     > 每列数据是否为统一数据类型:连续型变量列中是否存在string;检查分类型变量中是否存在int/float等。
     > 例如本应该为NA的值被填充为空格, _, -,\,/,
     > 例如0.45误填充为0,45导致变成string;例如个别数值型变量被加上了单位变成string
     > 是否确为误填需与数据提供方核实
  • 检查错误值
     > 如身高体重数值夸张,男性患者病史中有子宫肌瘤等不合常识及逻辑的错误。
     > 有些feature由其它列计算得到,比如BMI由身高体重计算得到。可以核对是否正确。
     > 需要注意有些病例或生活习惯信息,一些患者的病理指标远远超出平均范围,可能是疾病导致,并不是错误值。
     > 有必要时,让数据提供方提供一套正常值范围,包括连续型变量的正常范围,分类型变量包括的所有类别。
     > 无法修正的异常值填为空值。做好修正记录。
4. 缺失值
  • 拿到数据后概览一下raw data的缺失情况。方法参考本链接第8条
  • 将异常值处理好后,再处理缺失值。
  • 设置一个cutoff,大概50%-70%,视情况而定。去除缺失率超过cutoff的feature。将留下的features填充缺失值。
  • 填充缺失值有很多种方法,均值,0,knn, 或者直接NA
  • 记录删除的features,对填充缺失值的feature做好记录。
5. 数据分布
  • 概览raw data的数据分布情况。方法参考本链接第8条
  • 将重复行/列,异常值,缺失值等问题处理好后,查看数据各feature的分布情况,可以制图或表。
6. to be continued...

你可能感兴趣的:(数据处理备忘清单)