Extraire des données non tabulaires

ETL et ELT en Python

Jake Roach

Data Engineer

Extraire des données non tabulaires

Pipeline ETL avec le composant extract en surbrillance.

ETL et ELT en Python

Types de données non tabulaires

La plupart des données produites/consommées sont non structurées

  • Texte
  • Audio
  • Image
  • Vidéo
  • Spatial
  • IoT

Sources de données non structurées en transformation.

1 https://mitsloan.mit.edu/ideas-made-to-matter/tapping-power-unstructured-data
ETL et ELT en Python

Travailler avec des API et des données JSON

API (Application Programming Interface)

  • Logiciel au‑dessus des sources de données
  • Évite l’accès direct à la base de données

$$

Ingénieur data utilisant une API pour interagir avec une base de données.

JSON (JavaScript Object Notation)

  • Paires clé‑valeur
  • Pas de schéma fixe
  • Semblable aux dictionnaires
{
    "key": "value",
    ...
    "open": 0.121875
}
ETL et ELT en Python

Lire des fichiers JSON avec pandas

{
    "timestamps": [863703000, 863789400, ...],
    "open": [0.121875, 0.098438, ...],
    "close": [...],
    "volume": [...]
}

Utilisez la fonction .read_json()

# Read in a JSON file in the format above
raw_stock_data = pd.read_json("raw_stock_data.json", orient="columns")
1 https://pandas.pydata.org/docs/reference/api/pandas.read_json.html
ETL et ELT en Python

JSON imbriqué ou non structuré

Les données ne sont pas toujours prêtes pour un DataFrame

  • Objets imbriqués
  • « Schéma » variable
{
    "863703000": {
        "volume": 1443120000,
        "price": {
            "close": 0.09791,
            "open": 0.12187
        }
    }, 
    "863789400": {
        ...
    }, ...
}
ETL et ELT en Python

Lire des fichiers JSON avec json

import json

with open("raw_stock_data.json", "r") as file:
    # Load the file into a dictionary
    raw_stock_data = json.load(file)

# Confirm the type of the raw_stock_data variable
print(type(raw_stock_data))
<class 'dict'>
ETL et ELT en Python

Passons à la pratique !

ETL et ELT en Python

Preparing Video For Download...