什么是数据清洗
不可不知的三大要点
不可不知的三大要点
数据清洗,也称数据清理或数据整理,是识别和处理给定数据集中的异常的过程。清洗数据可以采用各种方法,包括管理离群值、估计缺失数据或滤除噪声。
通过清洗数据,工程师和数据科学家可以提高结果的质量,并避免基于有缺陷或不完整的数据得出错误的结论。
MATLAB® 提供简化数据清洗的函数和 App,让您可以专注于分析和解决问题。
数据清洗方法可应用于各个领域,包括信号处理、AI 和计算金融。
从模拟传感器获得的信号会受到各种噪声源的影响,导致数据不一致。预处理涉及使用数据清洗方法,例如去除离群值和平滑处理,以确保分析是在干净且有意义的数据上执行的。
高级去噪方法,如自适应滤波器和小波变换,有助于去除噪声,同时防止受白噪声影响的宽带信号系统丢失基础信号信息。
图 1 显示的图展示某人在 365 天内记录的每日体重 - 其中有缺失值。该图显示原始读数和插值读数。图上放大了 200 至 250 天的数据,显示了已识别的缺失值,以及通过插值得出的替换值。
图 1. 某人每日体重数据的 MATLAB 图,其缺失条目使用插值方法填充。
AI 模型的性能和可靠性直接取决于输入数据的质量。数据清洗能消除可误导 AI 模型的噪声、不一致、缺失值和离群值,从而避免导致有偏差或错误的结果。干净的输入数据可确保 AI 算法学习有效的模式并提供准确的预测。
图 2 显示的 MATLAB 图展示使用 fillmissing
、filloutliers
和 smoothdata
函数清洗缺失数据、离群数据和噪声后的负载功耗数据,这些数据随后输入到 AI 模型中以生成准确的负载功耗预测。图 3 显示了使用 MATLAB 绘制的预测模型的结果、实际数据以及他们之间的误差量。如果不使用清洗后的数据集来训练模型,预测误差可能会更高。
准确的金融模型、风险评估和投资策略依赖于干净的数据。金融分析师在数据清洗上花费大量时间应对数据带来的挑战,远多于实际建模。缺失数据、大规模数据或不同数据源可能导致有偏差的预测和有缺陷的决策。数据清洗是提高金融分析准确度和可靠性的有效方法。图 4 显示一家公司的年均股价中的缺失值。右图使用了 MATLAB 中的 fillmissing
函数通过线性插值填充缺失数据。
数据清洗是一种迭代过程,涉及不同方法,具体取决于您的数据集、最终分析的目标以及可用的工具和软件。数据清洗通常涉及以下一个或多个步骤:
缺失数据指数据集中缺失的值或信息,导致出现 NULL、0、空字符串或无效 (NaN) 数据点。值缺失可能有多种原因,例如数据采集、数据传输和数据转换。缺失数据会对数据分析和建模的质量和有效性产生重大影响;因此,在数据清洗过程中适当地处理缺失数据非常重要。
缺失数据可分为三个类别,识别正确的类别可以帮助您选择合适的填充方法:
识别缺失数据听起来很简单,但用合适的估计值替换它是复杂的过程。您可以先通过可视化或搜索无效值来发现缺失值。替换缺失值涉及生成可能接近实际值的值。根据数据的性质,填充这些缺失值的方法可能会有所不同。例如:
图 5 显示原始太阳辐射度数据,其缺失值使用 fillmissing
函数来填充。在这里,缺失值是使用基于移动中位数窗的方法来填充的。
图 5. 太阳辐射度原始数据集的时间序列图,其缺失值使用 MATLAB 中的 fillmissing
函数来填充。
离群值是数据集中与大多数观测值显著偏离的数据点。它们可能是异常的高值或低值,似乎不遵循数据的一般模式。离群值会使数据集的统计分析和解释失真,可能导致误导性的结果。离群值的出现可能有多种原因,包括测量误差、数据输入错误、自然变异性或所研究的基础过程中真正存在的异常。
管理离群值涉及两个可配置的步骤:
检测离群值涉及定义有效的工作范围,超出该范围的任何数据点都识别为离群值。用于定义有效工作范围的方法与数据集的属性、来源和目的相关。这些方法有多种,涵盖简单的方法(如基于可视化或基于固定阈值的离群值检测)和统计方法(如中位数绝对偏差),以及基于距离的方法(如欧几里德距离和马氏距离)等。
在识别离群值后,可以用生成的值替换它们。用于替换离群值的生成方法与用于填充缺失数据的方法相似。
图 6 显示具有两个离群值的输入数据,这些离群值是使用线性插值中位数检测方法进行检测和填充的。
图 6. “清洗离群数据”实时编辑器任务分别使用中位数阈值和线性插值方法检测和填充离群值。
平滑是一种数据分析方法,用于减少数据集中的噪声、变异性或不规则性,以更清晰地揭示底层模式或趋势。它通常应用于统计学、信号处理、时间序列分析和图像处理等各个领域。
与其他数据清洗方法一样,平滑方法也高度依赖于数据的性质和领域。您可以使用简单的统计方法,如移动平均滤波器、加权移动平均滤波器或基于移动中位数的滤波器,也可以使用更复杂的方法,如样条、傅里叶变换平滑和卡尔曼滤波。平滑函数要求数据集是有序的并以固定间隔采样。
图 7. MATLAB 图,使用 smoothdata
函数通过移动平均滤波器进行了平滑处理的含噪数据集。
传统的数据清洗方法适用于可以用常见的统计和数学模型建模的数据。但对于不适合标准模型的复杂数据集,如人类语音、EEG 信号等,我们可以利用深度学习模型来执行数据清洗。
图 8. 干净和含噪的语音信号的 MATLAB 图,以及两个深度学习网络(全连接和卷积网络)的去噪输出。
Microsoft® Excel® 是用于清洗和准备数据的常用工具。它提供内置命令,如“删除重复项”及“查找和替换”,您可以使用这些命令来标准化数据集。您也可以应用条件格式来突出显示不一致之处,或使用透视表来识别和更正错误。然而,对于更大的数据集,诸如处理缺失值、合并数据集或应用自定义逻辑等任务通常需要手动完成。自动化的缺乏会增加处理中发生意外错误和不一致的风险,尤其是在处理复杂数据集时。
MATLAB 可以帮助处理 Excel 中数据清洗的一些更耗时的部分,特别是在处理更大的数据集时。MATLAB 脚本和函数使数据清洗变换变得透明,因此您可以始终看到采取了哪些步骤,并根据需要进行调整。例如,您可以使用 fillmissing
自动处理数据中的空白,而不是手动搜索缺失值。通过将 MATLAB 与 Excel 结合使用,您可以更一致地处理更混乱的数据集,同时保持对处理过程的控制。
数据清洗是许多工程和科学工作流中重要的第一步。MATLAB 提供多种函数和交互式低代码方法(App 和实时编辑器任务)来高效地执行数据清洗。
使用高级函数编写代码可能非常高效,特别是当您熟悉语言语法和不同函数选项时。然而,确定合适的数据清洗方法通常是一个迭代过程,为每次迭代花费时间使代码恰到好处可能会减慢进度。使用 MATLAB 中的交互式工具,您可以快速试验不同数据清洗方法,可视化每种方法对数据集的影响,然后确定最佳清洗方法。实时编辑器任务和 App(如数据清洗器)使您能够以更少的编码量轻松浏览、清洗、准备和完成数据分析任务。这些工具还可以自动生成 MATLAB 代码以供重用。
实时编辑器任务是可以嵌入到实时脚本中的简单点选式界面或小型 App。任务表示一系列 MATLAB 命令,当您以交互方式浏览参数时,这些命令会自动运行;结果会立即显示。使用任务可缩短开发时间、减少错误并缩短在绘图上花费的时间。您可以使用一系列实时编辑器任务(如“清洗缺失数据”、“清洗离群数据”、“平滑数据”等)以交互方式执行不同数据清洗操作。
数据清洗器支持您处理和清洗列向原始数据。您可以通过交互方式迭代并可视化各种数据清洗选择项对原始数据的影响。
使用此 App,您可以:
了解如何使用 MATLAB 中的数据清洗器,通过简单的清洗步骤清洗杂乱的数据,并为分析和模型开发做好准备。
数据清洗是数据分析中重要的第一步,目的是使数据适合进一步分析。有关详细信息,请查看以下资源。
通过文档、示例、视频等拓展您的知识。
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲