大数据中的常见数据问题:独断脏

news2024/11/15 3:47:13

想象你刚刚入职一家声称正在进行"数字化转型"的大型企业,担任大数据开发工程师。在入职的第一周,你满怀热情,迫不及待地想要大展拳脚,用你的技能来推动公司的数据驱动决策。
image.png

目录

  • 大数据中的常见数据问题
    • 1. 独 - 数据孤岛
    • 2. 断 - 数据价值链断层
    • 3. 缺 - 标准、治理、数据等缺失
    • 4. 难 - 数据难以获取、理解和追溯
    • 5. 脏 - 数据质量差
    • 6. 安全 - 数据泄露风险
    • 总结

然而,随着你开始深入了解公司的数据基础设施和流程,你逐渐意识到面前的挑战比你预想的要大得多:

  • 你试图获取一些历史销售数据进行分析,但发现销售部门的数据存储在一个与公司主系统完全隔离的老旧数据库中。
  • 当你尝试整合来自不同部门的客户数据时,你发现每个部门都使用不同的客户ID格式,使得数据匹配变得极其困难。
  • 你编写了一个数据处理脚本,但在运行时发现大量的数据质量问题,包括缺失值、异常值和明显的错误输入。
  • 当你询问某些数据字段的含义时,没有人能给你一个明确的答案,而且你找不到任何相关的数据字典或文档。
  • 你提出要将一些敏感数据传输到云端进行处理,但IT安全团队表示严重担忧,认为这可能会带来数据泄露的风险。
  • 你开发的一个预测模型表现良好,但当你向业务部门展示时,他们表示看不懂这些数据意味着什么。

面对这些挑战,你意识到在这家公司实现真正的数据驱动决策还有很长的路要走。你决定系统地梳理这些问题,以便更好地理解和解决它们。

大数据中的常见数据问题

1. 独 - 数据孤岛

image.png

数据孤岛是指信息系统或组织单元之间无法有效共享数据的情况。这导致了重复开发和资源浪费。

例子:

  • 一家大型零售公司的销售部门和库存管理部门使用不同的系统,无法实时共享数据。
  • 政府不同部门之间的信息系统不互通,导致公民需要重复提供相同信息。

代码示例(Python):

# 销售部门的数据库
sales_db = {
    "product_a": {"sales": 1000, "revenue": 50000},
    "product_b": {"sales": 800, "revenue": 40000}
}

# 库存部门的数据库
inventory_db = {
    "product_a": {"stock": 500},
    "product_b": {"stock": 200}
}

# 由于数据孤岛,我们无法直接获取销售和库存的综合信息
# 需要手动整合数据
def get_product_info(product):
    if product in sales_db and product in inventory_db:
        return {
            "sales": sales_db[product]["sales"],
            "revenue": sales_db[product]["revenue"],
            "stock": inventory_db[product]["stock"]
        }
    return None

print(get_product_info("product_a"))

2. 断 - 数据价值链断层

image.png

数据价值链断层指的是数据从收集到最终利用的过程中出现断裂,导致数据价值无法充分发挥。

例子:

  • 一家电商平台收集了大量用户浏览数据,但分析团队缺乏相应的技能来解读这些数据。
  • 医疗机构收集了患者的基因数据,但缺乏将这些数据转化为个性化治疗方案的能力。

代码示例(Python):

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# 假设我们有用户浏览数据
df = pd.DataFrame({
    'user_id': range(1000),
    'page_views': np.random.randint(1, 100, 1000),
    'time_spent': np.random.randint(10, 3600, 1000),
    'purchases': np.random.randint(0, 5, 1000)
})

# 尝试建立一个预测模型
X = df[['page_views', 'time_spent']]
y = df['purchases']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

model = LinearRegression()
model.fit(X_train, y_train)

# 模型评分
print(f"Model Score: {model.score(X_test, y_test)}")

# 但是,如果分析团队不理解这个模型或不知道如何解释结果,
# 那么这个模型就无法为业务决策提供有价值的指导

3. 缺 - 标准、治理、数据等缺失

这个问题涉及到数据管理的多个方面,包括缺乏统一标准、数据治理机制、必要数据、规范流程、专门组织和管理制度等。

image.png

例子:

  • 一家跨国公司在不同国家的分支机构使用不同的客户信息格式,导致数据整合困难。
  • 一个研究项目缺少关键的人口统计数据,影响了分析的准确性。

代码示例(Python):

# 假设我们有来自不同国家的客户数据,格式不统一
us_customers = [
    {"name": "John Doe", "phone": "1234567890"},
    {"name": "Jane Smith", "phone": "0987654321"}
]

uk_customers = [
    {"full_name": "David Brown", "tel": "+44 1234567890"},
    {"full_name": "Emma Wilson", "tel": "+44 0987654321"}
]

# 由于缺乏统一标准,我们需要手动处理数据
def standardize_customer(customer, country):
    if country == "US":
        return {
            "full_name": customer["name"],
            "phone_number": "+1 " + customer["phone"]
        }
    elif country == "UK":
        return {
            "full_name": customer["full_name"],
            "phone_number": customer["tel"]
        }

# 标准化数据
standardized_customers = (
    [standardize_customer(c, "US") for c in us_customers] +
    [standardize_customer(c, "UK") for c in uk_customers]
)

print(standardized_customers)

4. 难 - 数据难以获取、理解和追溯

这个问题涉及到数据的可访问性、可理解性和可追溯性。

例子:

  • 一家公司的历史数据存储在旧系统中,新员工难以访问和理解这些数据。
  • 一个数据分析项目中的某些结果无法追溯到原始数据源,影响了结果的可信度。
    image.png

代码示例(Python):

import hashlib
import json
from datetime import datetime

class DataRecord:
    def __init__(self, data, source):
        self.data = data
        self.source = source
        self.timestamp = datetime.now().isoformat()
        self.hash = self._calculate_hash()

    def _calculate_hash(self):
        record = json.dumps({"data": self.data, "source": self.source, "timestamp": self.timestamp})
        return hashlib.sha256(record.encode()).hexdigest()

    def __str__(self):
        return f"Data: {self.data}, Source: {self.source}, Timestamp: {self.timestamp}, Hash: {self.hash}"

# 创建一些数据记录
record1 = DataRecord("User A purchased Product X", "Sales System")
record2 = DataRecord("Product X inventory decreased by 1", "Inventory System")

print(record1)
print(record2)

# 这种方法可以帮助追踪数据的来源和变化,但仍然需要额外的系统来管理这些记录

5. 脏 - 数据质量差

数据质量问题包括不准确、不完整、不一致、重复等情况。

image.png

例子:

  • 客户数据库中存在大量重复或过时的联系信息。
  • 传感器数据中包含异常值,影响了数据分析的准确性。

代码示例(Python):

import pandas as pd
import numpy as np

# 创建一个包含一些"脏"数据的DataFrame
df = pd.DataFrame({
    'name': ['John', 'Jane', 'John', 'Bob', 'Alice', np.nan],
    'age': [30, 25, 30, -5, 200, 35],
    'email': ['john@example.com', 'jane@example', 'john@example.com', 'bob@example.com', 'alice@example.com', 'invalid']
})

print("Original data:")
print(df)

# 数据清洗
def clean_data(df):
    # 删除重复行
    df = df.drop_duplicates()
    
    # 处理缺失值
    df['name'] = df['name'].fillna('Unknown')
    
    # 修正异常值
    df.loc[df['age'] < 0, 'age'] = np.nan
    df.loc[df['age'] > 120, 'age'] = np.nan
    
    # 验证邮箱格式
    df['valid_email'] = df['email'].str.contains(r'[^@]+@[^@]+\.[^@]+')
    
    return df

cleaned_df = clean_data(df)
print("\nCleaned data:")
print(cleaned_df)

6. 安全 - 数据泄露风险

数据安全问题涉及未经授权的访问、数据泄露、隐私保护等方面。

image.png

例子:

  • 一家公司的客户信息数据库被黑客入侵,导致敏感信息泄露。
  • 医疗机构的患者记录在未经适当加密的情况下通过不安全的网络传输。

代码示例(Python):

import bcrypt
import os
from cryptography.fernet import Fernet

# 模拟用户数据
user_data = {
    "username": "john_doe",
    "password": "password123",
    "email": "john@example.com",
    "credit_card": "1234-5678-9012-3456"
}

# 1. 安全存储密码
def hash_password(password):
    salt = bcrypt.gensalt()
    return bcrypt.hashpw(password.encode(), salt)

user_data["password"] = hash_password(user_data["password"])

# 2. 加密敏感信息
def encrypt_data(data):
    key = Fernet.generate_key()
    fernet = Fernet(key)
    return fernet.encrypt(data.encode()), key

user_data["credit_card"], encryption_key = encrypt_data(user_data["credit_card"])

print("Secured user data:")
print(user_data)
print(f"Encryption key: {encryption_key}")

# 注意: 在实际应用中,加密密钥应该安全存储,而不是打印出来

总结

image.png

  1. 独(数据孤岛):

    • 问题: 信息系统或部门间数据无法有效共享
    • 后果: 重复开发,资源浪费
    • 解决思路: 建立统一的数据平台,打破部门壁垒
  2. 断(数据价值链断层):

    • 问题: 数据收集到利用过程中出现断裂
    • 后果: 数据价值无法充分发挥
    • 解决思路: 建立完整的数据分析流程,提升数据分析能力
  3. 缺(标准、治理等缺失):

    • 问题: 缺乏统一标准、治理机制、必要数据等
    • 后果: 数据管理混乱,难以整合和利用
    • 解决思路: 制定数据标准,建立数据治理体系
  4. 难(数据难以获取、理解和追溯):

    • 问题: 数据访问困难,缺乏文档,来源不明
    • 后果: 数据使用效率低,结果可信度受质疑
    • 解决思路: 改善数据访问机制,完善元数据管理
  5. 脏(数据质量差):

    • 问题: 数据不准确、不完整、不一致、重复等
    • 后果: 影响分析结果的准确性和可靠性
    • 解决思路: 建立数据质量管理体系,定期清洗和验证数据
  6. 安全(数据泄露风险):

    • 问题: 数据面临未授权访问、泄露等安全威胁
    • 后果: 可能导致隐私泄露,造成经济和声誉损失
    • 解决思路: 实施严格的数据安全措施,如加密、访问控制等

这些问题往往是相互关联的,需要从技术、管理、政策等多个角度综合考虑,建立完善的数据治理体系来解决。有效的数据管理不仅可以提高数据质量和可用性,还能显著提升组织的决策能力和竞争力。

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

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

相关文章

C++初学者指南-4.诊断---地址检测器

C初学者指南-4.诊断—地址检测器 幻灯片 地址检测器&#xff08;ASan&#xff09; 适用编译器g,clang检测内存错误 内存泄露访问已经释放的内存访问不正确的堆栈区域 用额外的指令检测代码 运行时间增加约70%内存使用量大约增加了3倍 示例&#xff1a;检测空指针 使用地址…

【全图文教程】如何安装MySQL

一、官网下载MySQL 打开MySQL官方下载页&#xff1a;https://dev.mysql.com/downloads/installer/ 二、安装MySQL 点击下载下来的安装包&#xff0c;进入安装界面。 选择Custom&#xff08;自定义安装&#xff09;, 因为有些应用我们可能用不到。 选择要安装的服务, 并…

跨越语言的界限:Vue I18n 国际化指南

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 国际化简介 vue-i18n 安装和配置 创建语言包 基本使用 切换语言 动态翻…

在 PostgreSQL 中,如何处理大规模的文本数据以提高查询性能?

文章目录 一、引言二、理解 PostgreSQL 中的文本数据类型三、数据建模策略四、索引选择与优化五、查询优化技巧六、示例场景与性能对比七、分区表八、数据压缩九、定期维护十、总结 在 PostgreSQL 中处理大规模文本数据以提高查询性能 一、引言 在当今的数据驱动的世界中&…

在Ubuntu 22.04 LTS 上安装 MySQL两种方式:在线方式和离线方式

Ubuntu安装MySQL 介绍&#xff1a; Ubuntu 是一款基于Linux操作系统的免费开源发行版&#xff0c;广受欢迎。它以稳定性、安全性和用户友好性而闻名&#xff0c;适用于桌面和服务器环境。Ubuntu提供了大量的软件包和应用程序&#xff0c;拥有庞大的社区支持和活跃的开发者社区…

Chair Footrest Protective Cover

Chair Footrest Protective Cover 万能通用型椅子脚垫保护套凳子耐磨硅胶加厚垫桌椅脚垫防滑静音套

如何使用HippoRAG增强LLM的记忆

大型语言模型&#xff08;LLM&#xff09;已经证明是一种非常宝贵的思考工具。经过大量文本、代码和其他媒体数据集的训练&#xff0c;它们能够创作出接近人类水平的文章、翻译语言、生成图像&#xff0c;还能以信息丰富的方式回答人们提出的问题&#xff0c;甚至可以编写不同类…

JSP WEB开发(一) JSP语言基础

目录 JSP JSP简介&#xff1a; JSP页面 JSP运行原理 JSP脚本元素 JAVA程序片 局部变量 全局变量和方法的声明 全局变量 方法的声明 程序片执行特点 synchronized关键字 表达式 JSP指令标记 page指令 include指令 JSP动作标记 JSP动作元素include和include指令的…

pandas中 groupby分组详解 1

引言 在一个使用 pandas 做数据分析的项目过程中&#xff0c;再次深刻理解了一下 pandas 中使用 groupby 进行分组的一些细节问题&#xff0c;以及对想要做的操作如何实现&#xff0c;在此记录&#xff1b; 问题 1&#xff1a;groupby 分组查看分组结果&#xff0c;以及重设分…

生物化学笔记:电阻抗基础+电化学阻抗谱EIS+电化学系统频率响应分析

视频教程地址 引言 方法介绍 稳定&#xff1a;撤去扰动会到原始状态&#xff0c;反之不稳定&#xff0c;还有近似稳定的 阻抗谱图形&#xff08;Nyquist和Bode图&#xff09; 阻抗谱图形是用于分析电化学系统和材料的工具&#xff0c;主要有两种类型&#xff1a;Nyquist图和B…

Ratf协议图解、Nacos CP集群源码分析

文章目录 Nacos CP集群说明Raft协议leader选举重新选举leader多个Candidate情况更新操作&#xff0c;日志复制网络分区 源码实现服务注册leader选举leader心跳包 Nacos CP集群 说明 CAP原则 C 一致性 ConsistencyA 可用性 Availability分区容错性 Partition tolerance 分区…

在 PostgreSQL 中,如何处理数据的版本控制?

文章目录 一、使用时间戳字段进行版本控制二、使用版本号字段进行版本控制三、使用历史表进行版本控制四、使用 RETURNING 子句获取更新前后的版本五、使用数据库触发器进行版本控制 在 PostgreSQL 中&#xff0c;处理数据的版本控制可以通过多种方式实现&#xff0c;每种方式都…

文档去重(TF-IDF,MinHash, SimHash)

2个doc有些相似有些不相似&#xff0c;如何衡量这个相似度&#xff1b; 直接用Jaccard距离&#xff0c;计算量太大 TF-IDF: TF*IDF TF&#xff1a;该词在该文档中的出现次数&#xff0c; IDF&#xff1a;该词在所有文档中的多少个文档出现是DF&#xff0c;lg(N/(1DF)) MinHash …

利用级数公式计算圆周率(π)

π是是指圆的周长与直径的比值&#xff0c;是无限不循环小数&#xff0c;有很多种方法可以求得它的近似值。这里用比较容易实现的关于π的无穷级数来求它的前10000位的取值。 π / 2 π 具体的&#xff0c;用两个字符数组x,z分别存放当前计算得到的pi值&#xff0c;数组…

Android面试题自定义View之Window、ViewRootImpl和View的三大流程

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 View的三大流程指的是measure(测量)、layout(布局)、draw(绘制)。 下面我们来分别看看这三大流程 View的measure(测量) MeasureSpec Measur…

前后端的导入、导出、模板下载等写法

导入&#xff0c;导出、模板下载等的前后端写法 文章目录 导入&#xff0c;导出、模板下载等的前后端写法一、导入实现1.1 后端的导入1.2 前端的导入 二、基础的模板下载2.1 后端的模板下载-若依基础版本2.2 前端的模板下载2.3 后端的模板下载 - 基于资源文件读取2.4 excel制作…

CTFShow的RE题(二)

逆向5 附件无后缀&#xff0c;查一下是zip&#xff0c;解压得到一个exe一个dll文件。 往下继续看 但也根进去看看 发现是在加载的dll文件 还有一个返回时调用的函数 发现是打印函数 根据以往的经验应该是要跳转到这里&#xff0c;动调一下。 发现exe链接了dll&#xff0c;…

R语言4.3.0保姆级安装教程,包含安装包

[软件名称]&#xff1a;R语言4.3.0 R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件&#xff0c;它是一个用于统计计算和统计制图的优秀工具。 获取链接: https://pan.quark.cn/s/180306f47179 安装步骤: 1.解压压缩包。 2.进入…

python如何设计窗口

PyQt是一个基于Qt的接口包&#xff0c;可以直接拖拽控件设计UI界面&#xff0c;下面我简单介绍一下这个包的安装和使用&#xff0c;感兴趣的朋友可以自己尝试一下&#xff1a; 1、首先&#xff0c;安装PyQt模块&#xff0c;这个直接在cmd窗口输入命令“pip install pyqt5”就行…

24.6.30

星期一&#xff1a; 补cf global round26 D cf传送门 思路&#xff1a;把s中非a字符存下来&#xff0c;共m个&#xff0c;然后暴力检测&#xff0c;复杂度有点迷 代码如下&#xff1a; ll n;void solve(){string s; cin &…