【PostgreSQL数据分析实战:从数据清洗到可视化全流程】3.1 数据质量评估指标(完整性/一致性/准确性)

👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路


文章大纲

  • 数据质量评估核心指标:完整性、一致性、准确性实战解析
    • 3.1 数据质量评估指标体系
      • 3.1.1 完整性:数据是否存在缺失
        • 1.1.1 核心定义与业务影响
        • 1.1.2 检测方法与SQL实现
        • 1.1.3 案例分析:电商用户数据清洗
      • 3.1.2 一致性:数据是否符合逻辑规则
        • 1.2.1 核心定义与典型问题
        • 1.2.2 检测方法与技术实现
        • 1.2.3 深度案例:金融交易数据清洗
      • 3.1.3 准确性:数据是否真实反映现实
        • 1.3.1 核心定义与判别标准
        • 1.3.2 检测方法与工具链
        • 1.3.3 实战案例:医疗数据清洗
      • 3.1.4 三大指标的协同关系与评估矩阵
    • 3.2 数据质量评估最佳实践
      • 3.2.1 建立数据质量监控视图
      • 3.2.2 制定数据质量修复策略
    • 3.3 总结:数据质量是分析的生命线

数据质量评估核心指标:完整性、一致性、准确性实战解析

  • 在PostgreSQL数据分析全流程中,数据质量评估是数据清洗与预处理的核心环节。
  • 本章将从 完整性(Completeness)、一致性(Consistency)、准确性(Accuracy) 三大核心指标展开,结合真实数据案例与SQL检测方法,构建系统化的数据质量评估体系。

3.1 数据质量评估指标体系

在这里插入图片描述

3.1.1 完整性:数据是否存在缺失

1.1.1 核心定义与业务影响
  • 定义:数据记录中必填字段无缺失,所有业务规则要求的信息均存在
  • 核心问题
    问题类型示例场景业务影响
    字段级缺失用户表中email字段存在20%的NULL值无法进行用户触达与分组分析
    记录级缺失订单表中缺少对应商品表的关联记录导致订单-商品关联分析失败
    时间序列断裂传感器数据中某时段监测值完全缺失无法进行连续时间序列趋势分析
1.1.2 检测方法与SQL实现
  • (1)字段缺失率检测
-- 计算用户表各字段缺失率
SELECT column_name,(total_missing / total_rows) * 100 AS missing_rate
FROM (SELECT 'user_id' AS column_name,SUM(CASE WHEN user_id IS NULL THEN 1 ELSE 0 END) AS total_missing,COUNT(*) AS total_rowsFROM usersUNION ALLSELECT 'email' AS column_name,SUM(CASE WHEN email IS NULL THEN 1 ELSE 0 END) AS total_missing,COUNT(*) AS total_rowsFROM users
) AS missing_stats;
  • (2)外键完整性检测
-- 检测订单表中存在无效商品ID(商品表不存在的ID)
SELECT COUNT(*) AS invalid_product_orders
FROM orders
WHERE product_id NOT IN (SELECT product_id FROM products);
1.1.3 案例分析:电商用户数据清洗

在某电商用户表中检测发现:

  • registration_time字段缺失率3.7%(主要为第三方登录用户)
  • phone_number字段存在15%的空字符串(使用''而非NULL存储)
  • 修复策略
      1. registration_time缺失值,使用注册当天0点填充(业务允许)
      1. 统一空字符串为NULL,便于后续缺失值处理函数使用

3.1.2 一致性:数据是否符合逻辑规则

1.2.1 核心定义与典型问题
  • 定义:数据在不同字段、表或业务规则间保持逻辑统一,无矛盾冲突
  • 维度划分
    一致性维度检测要点示例规则
    格式一致性数据格式符合预设标准日期字段统一为’YYYY-MM-DD’格式
    逻辑一致性字段间关系符合业务规则订单金额=数量×单价(误差<0.01)
    跨表一致性关联数据保持同步更新商品下架后,对应订单状态自动标记
1.2.2 检测方法与技术实现
  • (1)格式一致性检测(正则表达式)
-- 检测邮箱格式是否符合规范
SELECT user_id, email,CASE WHEN email ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$' THEN '有效' ELSE '无效' END AS email_validity
FROM users;
  • (2)逻辑一致性检测(业务规则校验)
-- 检测订单金额与数量×单价的偏差(允许0.01元误差)
SELECT order_id
FROM order_items
WHERE ROUND(price * quantity, 2) <> ROUND(amount, 2);
1.2.3 深度案例:金融交易数据清洗

在银行交易流水表中发现:

  • transaction_time字段存在跨时区时间混合(部分为UTC,部分为本地时间)
  • balance_after字段出现负值(账户透支未按规则处理)
  • 解决方案
      1. 统一时间字段为UTC时区,并添加时区转换函数
      1. 对异常负值记录,通过前后交易流水重建正确余额(balance_before + amount = balance_after

3.1.3 准确性:数据是否真实反映现实

1.3.1 核心定义与判别标准
  • 定义:数据值与客观现实一致,不存在错误、伪造或过时信息
  • 三层校验体系
      1. 语法准确性:数据格式符合定义(如整数无字母混入)
      1. 语义准确性:数据值在业务含义上正确(如性别字段只能是M/F)
      1. 外部准确性:与第三方权威数据一致(如地址匹配行政区划代码)
1.3.2 检测方法与工具链
  • (1)语法准确性检测(数据类型校验)
-- 检测年龄字段是否存在非数字值(使用正则排除数字)
SELECT age
FROM users
WHERE age !~ '^[0-9]+$';
  • (2)语义准确性检测(值域校验)
-- 检测订单状态是否为有效枚举值('待支付','已支付','已取消')
SELECT order_id, status
FROM orders
WHERE status NOT IN ('待支付', '已支付', '已取消');
  • (3)外部准确性检测(API验证)
    通过调用地址验证API(如Google Maps API),对订单表中的address字段进行真实性校验:
# Python伪代码:调用外部API验证地址准确性
import requestsdef validate_address(address):url = f"https://maps.googleapis.com/maps/api/geocode/json?address={address}&key=API_KEY"response = requests.get(url)return response.json()['status'] == 'OK'
1.3.3 实战案例:医疗数据清洗

在电子健康档案表中发现:

  • blood_type字段存在’AB+'、‘AB型’、'AB阳性’等多种表示方式 !!!
  • height字段出现180cm记录被错误存储为1800(单位混淆) !!!
  • 治理方案
      1. 建立统一字典表dict_blood_type,通过JOIN实现编码标准化
      1. 对数值型字段添加单位校验(如身高字段限制在50-250cm之间)

3.1.4 三大指标的协同关系与评估矩阵

指标关注重点检测手段修复优先级技术实现难度
完整性数据存在性缺失值统计、外键检查
一致性逻辑统一性正则校验、业务规则SQL
准确性现实符合性外部API验证、人工抽样核查
  • 评估实施步骤
      1. 完整性扫描:先解决字段缺失、关联断裂等基础问题
      1. 一致性校验:建立字段级 / 表级规则引擎,批量清洗格式与逻辑冲突
      1. 准确性验证:通过抽样审计+外部数据源比对,处理核心业务字段

3.2 数据质量评估最佳实践

3.2.1 建立数据质量监控视图

-- 创建数据质量监控视图(每日自动检测)
CREATE OR REPLACE VIEW data_quality_report ASSELECT'users' AS table_name,(SELECT COUNT(*) FROM users WHERE email IS NULL) AS email_missing,(SELECT COUNT(*) FROM users WHERE age < 0 OR age > 150) AS invalid_age,CURRENT_DATE AS report_dateUNION ALLSELECT'orders' AS table_name,(SELECT COUNT(*) FROM orders WHERE order_amount < 0) AS negative_amount,(SELECT COUNT(*) FROM orders WHERE product_id NOT IN (SELECT product_id FROM products)) AS invalid_product,CURRENT_DATE AS report_date;

3.2.2 制定数据质量修复策略

问题类型修复方式适用场景
可推导缺失值均值/中位数填充数值型字段,缺失率<10%
不可推导缺失值标记为Unknown/删除记录分类字段或关键信息缺失
格式不一致正则替换+统一转换邮箱、手机号等有明确格式的字段
逻辑矛盾业务规则反向推导涉及多字段关联的计算型数据

3.3 总结:数据质量是分析的生命线

  • 完整性确保数据"不残缺",一致性确保数据"不矛盾",准确性确保数据"不虚假"
  • 三者构成数据质量的铁三角,任何一环的缺失都会导致后续分析出现偏差。
  • 在PostgreSQL实践中,建议通过:
      1. DDL约束(NOT NULL、CHECK、外键)实现事前控制
      1. 定期质量报告(存储过程+定时任务)实现事中监控
      1. ETL流程优化数据清洗管道集成质量检测模块)实现事后修复

以上内容构建了数据质量评估的完整框架。

  • 通过系统化的数据质量评估体系,为后续的数据转换、分析建模奠定坚实基础。
  • 下一章节将深入探讨数据清洗中的异常值处理与数据转换技术,敬请期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/80252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解 FFMPEG 交叉编译 `FLAGS` 和 `INCLUDES` 的作用

FLAGS 和 INCLUDES这两行是 Android NDK 编译时的编译器选项&#xff0c;用于控制代码生成、优化、调试、安全性和头文件搜索路径。下面逐项详解&#xff1a; 1. FLAGS 详解&#xff08;编译器选项&#xff09; FLAGS 定义了传递给 C/C 编译器&#xff08;如 clang 或 gcc&…

【RK3588嵌入式图形编程】-Cairo-Cairo图形库支持后端

Cairo图形库支持后端 文章目录 Cairo图形库支持后端1、PNG图像后端2、PDF文件后端3、SVG文件后端4、GTK窗口支持Cairo库支持多种后端。在本文中,我们使用Cairo创建PNG图像、PDF文件、SVG文件,并在GTK窗口上绘制。 1、PNG图像后端 在第一个示例中,我们创建一个 PNG 图像。 …

【常用算法:排序篇】2.快速排序的算法精要

快速排序是算法领域的"九阳神功"&#xff0c;掌握其精髓能让你在算法修炼之路上突破瓶颈。 1. 快速排序的核心思想 快速排序&#xff08;Quicksort&#xff09;是一种基于分治思想的高效排序算法&#xff0c;核心步骤为&#xff1a; 选择基准值&#xff08;Pivot&…

在现代Web应用中集成 PDF.js (pdfjs-dist 5.2 ESM): 通过 jsdelivr 实现动态加载与批注功能的思考

PDF 文档在现代 Web 应用中越来越常见&#xff0c;无论是作为文档预览、报告展示还是在线编辑的载体。Mozilla 的 PDF.js 是一个功能强大的 JavaScript 库&#xff0c;它使得在浏览器端渲染和显示 PDF 文件成为可能&#xff0c;无需依赖原生插件。 本文将深入探讨如何在你的项…

基于FPGA控制ADC0832双通道采样+电压电流采样+LCD屏幕显示

基于FPGA控制ADC0832双通道采样电压电流采样LCD屏幕显示 前言一、芯片手册阅读1.SPI通信时序 二、仿真分析三、代码分析总结视频演示 前言 定制 要求使用ADC0832芯片进行ADC采样。其中电压采样以及电流采样是固定电路&#xff0c;是硬件设计&#xff0c;跟软件没没关系。本质上…

生产部署方案pm2配合python3脚本

前言 使用python3来处理redis 消息队列&#xff0c;记录下生产部署方案 「生产部署方案」&#xff1a; 多进程&#xff08;动态扩容&#xff09;无限自愈日志自动压缩系统级守护可多队列多worker 终极稳健版&#xff1a;PM2 Logrotate 自动扩容 守护链 适合&#xff1a…

Python全流程开发实战:基于IMAP协议安全下载个人Gmail邮箱内所有PDF附件

文章目录 一、需求分析与安全前置&#xff1a;为什么需要专用工具&#xff1f;1.1 痛点场景1.2 技术方案选择 二、准备工作&#xff1a;Gmail账号安全配置与环境搭建2.1 开启两步验证&#xff08;必做&#xff01;&#xff09;2.2 创建应用专用密码&#xff08;替代普通密码&am…

巧用python之--模仿PLC(PLC模拟器)

工作中用到了VM(VisionMaster4.3)有时候需要和PLC打交道,但是PLC毕竟是别人的,不方便修改别人的程序,这时候需要一个灵活的PLC模拟器是多么好呀! 先说背景: PLC型号 汇川Easy521: Modbus TCP 192.168.1.10:502 在汇川Easy521中Modbus保持寄存器D寄存器 ,在modbus协议中 0-4区…

docker构建镜像并上传dockerhub

docker构建镜像并上传dockerhub 前提条件&#xff1a;需要连接梯子 将梯子配置到虚拟机中&#xff08;确保主机能够连接 hub.docker.com&#xff09; 使用ipconfig 查询主机的 ip4地址虚拟机的连接模式改成桥接模式&#xff08;复制主机的地址网络&#xff09;将ip4配置到虚拟…

python实现的音乐播放器

python实现的音乐播放器 音乐播放器,原来写过一个简陋的例子,可见 https://blog.csdn.net/cnds123/article/details/137874107 那个不能拖动播放进度条上的滑块到新的位置播放。下面介绍的可以拖动播放进度条上的滑块到新的位置播放。 简单实用的音乐播放器 这个简单实用的…

[网安工具] 端口信息收集工具 —— 御剑高速 TCP 全端口扫描工具 · 使用手册

&#x1f31f;想了解其它网安工具&#xff1f;看看这个&#xff1a;[网安工具] 网络安全工具管理 —— 工具仓库 管理手册 https://github.com/NepoloHebo/Yujian-high-speed-TCP-full-port-scannerhttps://github.com/NepoloHebo/Yujian-high-speed-TCP-full-port-scanner 0…

数字孪生赋能智慧城市:从概念到落地的深度实践

在城市规模与复杂度持续攀升的当下&#xff0c;传统管理模式已难以满足现代城市精细化治理需求。数字孪生技术凭借构建虚拟城市镜像、实现实时数据交互与智能决策的特性&#xff0c;成为智慧城市建设的核心引擎。本文将通过多个典型案例&#xff0c;深度解析数字孪生技术如何重…

DeFi开发系统软件开发:技术架构与生态重构

DeFi开发系统软件开发&#xff1a;技术架构与生态重构 ——2025年去中心化金融开发的范式革新与实践指南 一、技术架构演进&#xff1a;从单一链到多链混合引擎 现代DeFi系统开发已从单一公链架构转向“跨链互操作混合模式”&#xff0c;结合中心化效率与去中心化安全双重优势…

相同IP和端口的服务器ssh连接时出现异常

起因 把服务器上的一个虚拟机搞坏了&#xff0c;所以删除重新创建了一个&#xff0c;端口号和IP与之前的虚拟机相同。 ssh usernameIP -p port 时报错 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone…

验证es启动成功

1. 查看命令行输出信息 在启动 Elasticsearch 时&#xff0c;命令行窗口会输出一系列日志信息。若启动成功&#xff0c;日志里通常会有类似下面的信息&#xff1a; plaintext [2025-05-06T13:20:00,000][INFO ][o.e.n.Node ] [node_name] started其中 [node_na…

CentOS网络之network和NetworkManager深度解析

文章目录 CentOS网络之network和NetworkManager深度解析1. CentOS网络服务发展历史1.1 传统network阶段&#xff08;CentOS 5-6&#xff09;1.2 过渡期&#xff08;CentOS 7&#xff09;1.3 新时代&#xff08;CentOS 8&#xff09; 2. network和NetworkManager的核心区别3. ne…

Unity:父挂 Rigidbody2D、子挂 Collider2D 时触发器不生效的问题分析

目录 ❓问题现象 &#x1f50d; 排查与定位 ⚠️ Unity 触发机制的核心要求 ✅ 为什么把 Collider2D 移到父物体后就能触发&#xff1f; &#x1f4a1; 解决方案 在 Unity 2D 游戏开发中&#xff0c;很多人习惯用父物体挂载 Rigidbody2D&#xff0c;而将不同的身体部位&am…

Google AI版图:解析AI Studio, Gemini, NotebookLM与GCP

1. 2C vs 2B: AI Studio: 主要是面向开发者&#xff0c;提供一个易用的界面来探索和构建基于Google模型的应用。虽然最终的应用可能服务于C端或B端&#xff0c;但AI Studio本身更多是一个开发者的工具平台&#xff0c;可以看作是连接模型能力和各种应用的桥梁。它可以被个人开…

Oracle EBS AP发票被预付款核算创建会计科目时间超长

背景 由于客户职能部门的水电、通信和物业等等费用统一管理或对接部门报销费,在报销费的时候,用户把所有费用分摊到各个末级部门,形成AP发票行有上千行, 问题症状 1、用户过账时,请求创建会计科目一直执行20多个小时未完成,只能手工强行取消请求。 2、取消请求以后,从后…

MySQL中MVCC指什么?

简要回答&#xff1a; MVCC&#xff08;multi version concurrency control&#xff09;即多版本并发控制&#xff0c;为了确保多线程下数据的安全&#xff0c;可以通过undo log和ReadView来实现不同的事务隔离级别。 对于已提交读和可重复读隔离级别的事务来说&#xff0c;M…