Compartir tecnología

Problemas de datos comunes en big data: arbitrarios y sucios

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Imagine que acaba de unirse a una gran empresa que afirma estar atravesando una "transformación digital" como ingeniero de desarrollo de big data. En su primera semana en el trabajo, está lleno de entusiasmo y no puede esperar para ejercitar sus músculos y utilizar sus habilidades para impulsar decisiones basadas en datos en la empresa.
imagen.png

Sin embargo, a medida que comienza a profundizar en la infraestructura y los procesos de datos de su empresa, se da cuenta de que los desafíos que le esperan son mucho mayores de lo que esperaba:

  • Intenta obtener algunos datos históricos de ventas para analizarlos, pero descubre que los datos del departamento de ventas están almacenados en una base de datos antigua que está completamente aislada del sistema principal de la empresa.
  • Cuando intenta integrar datos de clientes de diferentes departamentos, descubre que cada departamento utiliza un formato de identificación de cliente diferente, lo que hace que la coincidencia de datos sea extremadamente difícil.
  • Escribe un script de procesamiento de datos, pero en tiempo de ejecución descubre numerosos problemas de calidad de los datos, incluidos valores faltantes, valores atípicos y entradas aparentemente incorrectas.
  • Cuando pregunta qué significan algunos campos de datos, nadie puede darle una respuesta clara y no puede encontrar ningún diccionario de datos o documentación relevante.
  • Propone transferir algunos datos confidenciales a la nube para su procesamiento, pero el equipo de seguridad de TI expresa serias preocupaciones de que esto pueda representar un riesgo de fuga de datos.
  • Desarrollas un modelo predictivo que funciona bien, pero cuando se lo muestras a la empresa, te dicen que no entienden lo que significan los datos.

Ante estos desafíos, te das cuenta de que todavía queda un largo camino por recorrer para lograr una verdadera toma de decisiones basada en datos en esta empresa. Decide clasificar sistemáticamente estos problemas para comprenderlos y resolverlos mejor.

Problemas de datos comunes en big data

1. Solo - isla de datos

imagen.png

Los silos de datos son situaciones en las que los datos no se pueden compartir de manera efectiva entre sistemas de información o unidades organizativas. Esto conduce a la duplicación del desarrollo y al desperdicio de recursos.

ejemplo:

  • Los departamentos de ventas y gestión de inventario de una gran empresa minorista utilizaban sistemas diferentes y no podían compartir datos en tiempo real.
  • Los sistemas de información entre diferentes departamentos gubernamentales no son interoperables, lo que hace que los ciudadanos tengan que proporcionar la misma información repetidamente.

Ejemplo de código (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. Disrupción: falla en la cadena de valor de los datos

imagen.png

Las fallas en la cadena de valor de los datos se refieren a interrupciones en el proceso desde la recopilación de datos hasta su utilización final, lo que resulta en la incapacidad de aprovechar plenamente el valor de los datos.

ejemplo:

  • Una plataforma de comercio electrónico recopiló una gran cantidad de datos de navegación de los usuarios, pero el equipo de análisis carecía de las habilidades correspondientes para interpretar estos datos.
  • Las instituciones médicas recopilan datos genéticos de los pacientes, pero carecen de la capacidad de traducir estos datos en planes de tratamiento personalizados.

Ejemplo de código (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. Falta de estándares, gobernanza, datos, etc.

Este problema involucra muchos aspectos de la gestión de datos, incluida la falta de estándares unificados, mecanismos de gobernanza de datos, datos necesarios, procesos estandarizados, organizaciones y sistemas de gestión especializados, etc.

imagen.png

ejemplo:

  • Las sucursales de una empresa multinacional en diferentes países utilizan diferentes formatos de información de clientes, lo que dificulta la integración de datos.
  • A un proyecto de investigación le faltaban datos demográficos clave, lo que afectaba la precisión del análisis.

Ejemplo de código (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. Dificultad: los datos son difíciles de obtener, comprender y rastrear.

Esta cuestión implica la accesibilidad, la comprensibilidad y la trazabilidad de los datos.

ejemplo:

  • Los datos históricos de una empresa se almacenan en sistemas heredados, lo que dificulta que los nuevos empleados accedan a los datos y los comprendan.
  • Algunos resultados de un proyecto de análisis de datos no pueden rastrearse hasta la fuente de datos original, lo que afecta la credibilidad de los resultados.
    imagen.png

Ejemplo de código (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. Sucio: mala calidad de los datos

Los problemas de calidad de los datos incluyen imprecisiones, datos incompletos, inconsistencias, duplicaciones, etc.

imagen.png

ejemplo:

  • Hay una gran cantidad de información de contacto duplicada u obsoleta en la base de datos de clientes.
  • Los datos del sensor contienen valores atípicos, lo que afecta la precisión del análisis de datos.

Ejemplo de código (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': ['[email protected]', 'jane@example', '[email protected]', '[email protected]', '[email protected]', 'invalid']
})

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

# 数据清洗
def clean_data(df):
    # 删除重复行
    df = df.drop_duplicates()
    
    # 处理缺失值
    df['name'] = df['name'].fillna('Unknown')
    
    # 修正异常值
    df.loc[df['age']