Partage de technologie

Problèmes de données courants dans le Big Data : arbitraires et sales

2024-07-08

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

Imaginez que vous venez de rejoindre une grande entreprise qui prétend subir une « transformation numérique » en tant qu'ingénieur en développement Big Data. Au cours de votre première semaine de travail, vous êtes plein d'enthousiasme et avez hâte de montrer vos muscles et d'utiliser vos compétences pour prendre des décisions fondées sur les données au sein de l'entreprise.
image.png

Cependant, à mesure que vous commencez à approfondir l’infrastructure et les processus de données de votre entreprise, vous réalisez que les défis à venir sont bien plus importants que prévu :

  • Vous essayez d'obtenir des données historiques de ventes à des fins d'analyse, mais découvrez que les données du service commercial sont stockées dans une ancienne base de données complètement isolée du système principal de l'entreprise.
  • Lorsque vous essayez d'intégrer les données clients de différents services, vous constatez que chaque service utilise un format d'identification client différent, ce qui rend la correspondance des données extrêmement difficile.
  • Vous écrivez un script de traitement de données, mais lors de l'exécution, vous découvrez de nombreux problèmes de qualité des données, notamment des valeurs manquantes, des valeurs aberrantes et des entrées apparemment incorrectes.
  • Lorsque vous demandez ce que signifient certains champs de données, personne ne peut vous donner de réponse claire et vous ne trouvez aucun dictionnaire de données ou documentation pertinente.
  • Vous proposez de transférer certaines données sensibles vers le cloud pour traitement, mais l'équipe de sécurité informatique exprime de sérieuses inquiétudes quant au risque de fuite de données.
  • Vous développez un modèle prédictif qui fonctionne bien, mais lorsque vous le montrez à l’entreprise, elle dit qu’elle ne comprend pas la signification des données.

Face à ces défis, vous réalisez qu’il y a encore un long chemin à parcourir pour parvenir à une véritable prise de décision basée sur les données dans cette entreprise. Vous décidez de trier systématiquement ces problèmes afin de mieux les comprendre et les résoudre.

Problèmes de données courants dans le Big Data

1. Seul – îlot de données

image.png

Les silos de données sont des situations dans lesquelles les données ne peuvent pas être partagées efficacement entre les systèmes d'information ou les unités organisationnelles. Cela conduit à une duplication du développement et à un gaspillage de ressources.

exemple:

  • Le service commercial et le service de gestion des stocks d’une grande entreprise de vente au détail utilisaient des systèmes différents et n’étaient pas en mesure de partager des données en temps réel.
  • Les systèmes d'information entre les différents services gouvernementaux ne sont pas interopérables, ce qui oblige les citoyens à fournir les mêmes informations à plusieurs reprises.

Exemple de code (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. Perturbation - Défaut dans la chaîne de valeur des données

image.png

Les défauts dans la chaîne de valeur des données font référence à des interruptions dans le processus depuis la collecte des données jusqu'à leur utilisation finale, entraînant l'incapacité de réaliser pleinement la valeur des données.

exemple:

  • Une plateforme de commerce électronique a collecté une grande quantité de données de navigation des utilisateurs, mais l'équipe d'analyse ne disposait pas des compétences correspondantes pour interpréter ces données.
  • Les institutions médicales collectent les données génétiques des patients mais n’ont pas la capacité de traduire ces données en plans de traitement personnalisés.

Exemple de code (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. Manque de normes, de gouvernance, de données, etc.

Ce problème implique de nombreux aspects de la gestion des données, notamment le manque de normes unifiées, de mécanismes de gouvernance des données, de données nécessaires, de processus standardisés, d'organisations et de systèmes de gestion spécialisés, etc.

image.png

exemple:

  • Les succursales d'une entreprise multinationale dans différents pays utilisent différents formats d'informations client, ce qui rend l'intégration des données difficile.
  • Il manquait des données démographiques clés dans un projet de recherche, ce qui affectait l'exactitude de l'analyse.

Exemple de code (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. Difficulté – Les données sont difficiles à obtenir, à comprendre et à retracer

Cet enjeu implique l’accessibilité, la compréhensibilité et la traçabilité des données.

exemple:

  • Les données historiques d'une entreprise sont stockées dans des systèmes existants, ce qui rend difficile l'accès et la compréhension des nouveaux employés.
  • Certains résultats d'un projet d'analyse de données ne peuvent pas être retracés jusqu'à la source de données d'origine, ce qui affecte la crédibilité des résultats.
    image.png

Exemple de code (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. Sale - mauvaise qualité des données

Les problèmes de qualité des données comprennent les inexactitudes, le caractère incomplet, les incohérences, les duplications, etc.

image.png

exemple:

  • Il existe une grande quantité d’informations de contact en double ou obsolètes dans la base de données clients.
  • Les données des capteurs contiennent des valeurs aberrantes, ce qui affecte la précision de l'analyse des données.

Exemple de code (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']