未清理的数据:脏数据与杂乱数据

未清理数据分为两种:

  • 数据,也称为低质量数据。低质量数据存在内容问题
  • 杂乱数据,也称为不整洁数据。不整洁数据存在结构问题

将数据可视化(例如:绘制图形)是编程评估的一部分,而非我们在这里说的目测评估,即通过目测观察对数据进行评估。

熟悉视觉评估

Auralin 二阶段临床试验数据集来自 3 个表格:patientstreatments 和 adverse_reactions。通过下列视觉评估熟悉这些表格。

patients 各列包括:

  • 病人编号:制药公司的 病人主索引 (即病人数据库) 中每个病人的唯一标识
  • 指定性别:每个病人出生时被指定的性别 (男或女)
  • :每个病人的名
  • :每个病人的姓
  • 地址:每个病人的主地址
  • 城市:每个病人主地址对应的城市
  • :每个病人主地址对应的州
  • 邮编:每个病人主地址对应的邮编
  • 国家:每个病人主地址对应的国家 (这次临床试验均为美国)
  • 联系方式:每个病人的手机号和邮箱信息
  • 出生日期:每个病人的出生日期 (月/日/年)。 这次临床试验的 入选标准 是年龄 >= 18 (因为糖尿病是老年人群中 日益严重的问题,所以没有年龄上限)
  • 体重:每个病人的体重,单位为磅 (lbs)
  • 身高:每个病人的身高,单位为英尺 (in)
  • bmi:每个病人的体质指数 (BMI) 。体质指数是对一个人身高和体重的简单计算。公式为 BMI = kg/m2 其中 kg 是一个人的体重,单位为千克, m2 是一个人身高的平方,单位是米。BMI 超过 25.0 为超重,健康区间是 18.5 到 24.9。 这次临床试验的 入选标准 是 16 >= BMI >= 38。

 

350 个病人参加了这次临床试验。所有病人都没有使用过 Novodra (一种常见的注射胰岛素) 和 Auralin (正在研发中的口服胰岛素) 作为胰岛素的主要来源。所有人都有过糖化血红蛋白 (HbA1c) 偏高的经历。

所有 350 个病人起初都服用 Novodra,建立糖化血红蛋白水平基准和胰岛素剂量。四周后,由于时间较短无法观察到糖化血红蛋白的变化,因此有利于改为使用 Auralin 或 Novodra:

  • 175 个病人在接下来的 24 周使用 Auralin
  • 175 个病人在接下来的 24 周继续使用 Novodra

treatments 各列包括:

  • :参加这次临床试验的病人主索引中每个病人的名
  • :参加这次临床试验的病人主索引中每个病人的姓
  • auralin:从改为使用 Auralin 的那一周开始,平均每天使用胰岛素剂量的基线 (破折号之前的数字) 以及 经过 24周的治疗后,平均每天使用胰岛素剂量的最终水平 (破折号之后的数字)。两者测量单位是 units (缩写形式为 'u'),这是测量的 国际单位 和胰岛素的标准度量。
  • novodra:同上,除了继续使用 Novodra 治疗的病人
  • hba1c_start:病人接受治疗第一周的糖化血红蛋白水平。HbA1c 代表糖化血红蛋白。 HbA1c 检测 测量了过去三个月的平均血糖水平。因此这是获取如何有效控制糖尿病的较好方式。糖尿病患者每年应该进行 2 到 4 次 HbA1c 检测。单位是 %。
  • hba1c_end:病人治疗最后一周的糖化血红蛋白水平
  • hba1c_change:从治疗初期到最后,病人糖化血红蛋白水平的变化,即 hba1c_start - hba1c_end。如果认为 Auralin 有效,必须 "不劣于" Novodra,即胰岛素的当前标准。从统计意义上来说,这种 "非劣性" 应当是置信区间最大值为 95%,Novodra 和 Auralin 的糖化血红蛋白的平均变化 (即 Novodra 减去 Auralin) 差异小于 0.4%。

 

adverse_reactions 各列包括:

  • :参加这次临床试验且发生不良反应 (包括使用 Auralin 和 Novodra 的病人) 的病人主索引中,每个病人的名
  • :参加这次临床试验且发生不良反应 (包括使用 Auralin 和 Novodra 的病人) 的病人主索引中,每个病人的姓
  • adverse_reaction:病人报告的不良反应

其他有效信息:

  • 胰岛素耐受性因人而异,这是需要胰岛素初始平均日剂量和最终平均日剂量的原因,即测算剂量变化。
  • 检测人们能够使用的药物和医用品,非常重要。临床试验需要涵盖不同年龄、种族、性别和民族的人们。这种 多样性 体现在 patients 表格中。
  • 确保各列名称具有可描述性,这是熟悉数据的重要步骤。 '具有可描述性' 是主观的。理论上说,你需要使用较短的列名称 (这样可以在代码表格中轻松输入和读取),同时具有较好的描述性。 长度和可描述性需要权衡,也是较常见的争论 (类似争论 针对变量名称)。 auralin 和 novodra 列的名称不具有可描述性,但是以后你可以解决这个问题,现在不必担心。

通过评估这个数据集,我们发现:

  • hbA1c_change 存在缺失值
  • 邮政编码格式不正确(即四位数字和数据类型浮点数,而不是五位数字,数据类型为字符串或对象)
  • 州格式不统一(即 NY 与 New York)
  • 患者身高值不正确(例如 27 英寸,而不是 72 英寸)

评估可以帮助我们发现数据的质量问题,确保后续可以进行清理、以及顺利进行数据分析。在这个例子中,后续的数据分析包括计算的患者各项指数的平均值(例如年龄、体重、身高和体重指数),以及计算患者 Novodra 和 Auralin 之间的 HbA1c 变化差异置信区间。

而,探索(Exploring)数据,对于这个数据集,可能指:

  • 使用州列上的 count 或体重列中的 mean 等摘要统计信息,查看某些州或某些体重的患者是否更有可能患有糖尿病,分析时,我们可以使用这些方法将某些患者排除,使结果更加准确。

考虑到临床试验的高昂费用,以及各种极端情况存在的可能,在实验之后进行数据探索其实不太可能。最多是在 treatments 和 adverse_reactions 数据表建立之前,即,临床试验开始之前,对数据集进行探索。

出生日期格式为月/日/年,而不是日/月/年,不属于数据质量问题,因为任何表示都是正确的,但是整个 出生日期 列需要统一日期表达的格式。

名字和姓氏存在不同的拼写方式(例如 TámLiễu),这也不是数据质量问题,因为这些名字实际上就是这样拼写的。只要在执行需要这些文本的操作(例如,在姓名列中合并表格)时,你需要注意这些不同的拼写字符,但这也不属于质量问题。

体重是十进制,身高是整数,没有小数,这些也都可以。这只是数据的记录方式不同而已,不属于数据质量问题。虽然,在实际生活里,身高可能会稍微不准确,存在一英寸以内的误差,但误差有限,所以可以接受。

数据质量维度

数据质量维度有助于在评估和清理数据时为我们提供思维指导。四个主要的数据质量维度分别是:

  • 完整性:我们是否记录了所有内容?是否缺少记录?是否丢失某个行、列或单元格?
  • 有效性:我们已经做了记录,但却无效,即它们不符合定义的模式。模式是一组定义的数据规则。这些规则可以是真实世界约定成俗的事实(例如身高不可能是负数)和表格约定成俗的属性(例如表中的唯一键)。
  • 准确性:不准确的数据是有效的,但仍然是错误的。这些数据符合定义的模式,但仍然不正确。例如:每个患者体重被多记录了5磅。虽然有失偏颇,这些数据仍然是有效的,但并不理想。
  • 一致性:不一致的数据是有效和准确的,但是指代同一件事情的正确方式有多个。最好确保表和/或表内表示相同数据的列中的数据具有一致性,即采用标准格式。

 

python数据评估

 

treatments.sample
treatments.describe

.info

.head 和 .tail

.value_counts

patients[patients['address'] .isnull()]

“'Elizabeth Knudsen' 这个名字重复出现”选项不是质量问题,是因为 'Elizabeth Knudsen' 这个名字 并没有 重复出现。她的人口信息(address, city, state 等等)是 NaN 值,数据中有其他病人的这些信息也是 NaN 值,所以她的人口信息特征列是“重复出现的”(比如评估中 address duplicated 的结果可以看到这个名字)

patients 表格 weight 列中,sort_values 返回的系列索引顺序混乱,原因是原始数据集不是按体重排序的。

patients.surname.value_counts()

patients.address.value_counts()

patients[patients.address.duplicated()]    #是否冗余(有重复的)

patients.weight.sort_values()

sum(treatments.novodra.isnull())

sum(treatments.auralin.isnull())

数据整洁参考文章

https://cran.r-project.org/web/packages/tidyr/vignettes/tidy-data.html

在理论上来讲,以下可能会出现的情况需要迭代:

  • 也许你(如临床试验研究团队的数据科学家)已经意识到自己的统计检查计算错误,所以需要招募更多的患者,使你的研究具有统计学意义。在这种情况下,还需要重新学习收集部分。
  • 也许你已经意识到自己错过了一个关键患者信息,像患者血型(再次说明,这不太可能是临床试验的严格性,而是出现错误了),因为你发现了有关胰岛素抗血型的新型研究。在这种情况下,你也需要重新学习收集部分。
  • 也许你已完成了评估、开始清理,并发现另一个数据质量问题。希望你能回顾 评估 部分,将这些评估要点添加到自己的笔记中。

脏数据的原因

脏数据 = 低质量数据 = 内容问题

脏数据的原因有很多。基本上只要有人参与的地方,就会有脏数据。接触我们所处理数据的方式也很多。

可能会存在一些用户输入错误。某些情况下,我们不会设定任何数据编码标准,或者即使我们设定标准,人们也很少遵守,最终一样导致数据出现问题。我们可能需要集成数据,将不同的模式用于同一类型的项目。数据系统过时,光盘和内存限制比现在更具有局限性,所以不可能对数据进行编码。随着系统不断发展,需求发生了变化,数据也发生了变化。一些数据将不具有唯一的标识符。从一种格式转换为另一种格式将会导致其他数据丢失。当然,程序员可能会出错。最后,数据可能在传输或存储过程中被宇宙射线或其他物理现象破坏。所以呢,这不是我们的错。

杂乱数据的原因

杂乱数据 = 不整洁数据 = 结构性问题

杂乱数据通常是数据规划不当的结果。或者对 整洁度数据 的优点缺乏认识。但好的一点是,相对于上面提到的大多数脏数据,杂乱数据的原因更容易发现。

 

  • 质量:内容问题。低质量数据也称为脏数据。
  • 整洁度:使分析难以进行的结构性问题。不整洁数据也称为杂乱数据。整洁度数据的要求:
    1. 变量要排成一列。
    2. 观察结果要排成一排。
    3. 每种观察单位构成一个表格。

使用两种类型的评估:

  • 目测评估:在首选的软件应用程序(Google 表格、Excel、文本编辑器等)中查看数据。
  • 编程评估:使用代码来查看数据的特定部分和总结内容(例如 pandas 的 headtail 和 info 方法)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章:

  • 2021-05-10
  • 2022-12-23
  • 2021-06-28
  • 2021-08-14
  • 2021-05-31
  • 2021-09-02
  • 2021-06-20
  • 2021-11-08
猜你喜欢
  • 2021-09-07
  • 2021-05-06
  • 2022-02-08
  • 2021-12-24
  • 2022-01-09
  • 2022-12-23
  • 2021-11-28
相关资源
相似解决方案