Transformer des données non tabulaires

ETL et ELT en Python

Jake Roach

Data Engineer

Transformer des données non tabulaires

Pipeline ETL avec le composant transform mis en évidence.

ETL et ELT en Python

Stocker des données dans des dictionnaires

JSON imbriqué

{
    "863703000": {
        "price": {
            "open": 0.12187,
            "close": 0.09791
        },
        "volume": 1443120000
    }, 
    "863789400": {
    }, ...
}

Objectif :

  • Convertir le dictionnaire en un format prêt pour un DataFrame

$$

[
    [863703000, 0.12187, 0.09791, 1443120000],
    [863789400, 0.09843, ...]
]
ETL et ELT en Python

Itérer sur les composants d’un dictionnaire

# Loop over keys
for key in raw_data.keys():
    ...
# Loop over values
for value in raw_data.values():
    ...
# Loop over keys and values
for key, value in raw_data.items():
    ...

.keys()

  • Liste des clés d’un dictionnaire

.values()

  • Liste des valeurs d’un dictionnaire

.items()

  • Liste de tuples (paire clé-valeur)
ETL et ELT en Python

Analyser des données depuis des dictionnaires

entry = {
    "volume": 1443120000,
    "price": {
        "open": 0.12187,
        "close": 0.09791,
    }
}
# Parse data from dictionary using .get()
volume = entry.get("volume")
ticker = entry.get("ticker", "DCMP")
# Call .get() twice to return the nested "open" value
open_price = entry.get("price").get("open", 0)
ETL et ELT en Python

Créer un DataFrame à partir d’une liste de listes

Passer une liste de listes à pd.DataFrame()

# Pass a list of lists to pd.DataFrame
raw_data = pd.DataFrame(flattened_rows)

Définir les en-têtes de colonnes avec .columns

# Create columns
raw_data.columns = ["timestamps", "open", "close", "volume"]

Définir un index avec .set_index()

# Set the index column to be "timestamps"
raw_data.set_index("timestamps")
ETL et ELT en Python

Transformer des données boursières

parsed_stock_data = []

# Loop through each key-value pair of the raw_stock_data dictionary
for timestamp, ticker_info in raw_stock_data.items():
    parsed_stock_data.append([
        timestamp,
        ticker_info.get("price", {}).get("open", 0),  # Parse the opening price
        ticker_info.get("price", {}).get("close", 0),  # Parse the closing price
        ticker_info.get("volume", 0)  # Parse the volume
    ])
# Create a DataFrame, assign column names, and set an index
transformed_stock_data = pd.DataFrame(parsed_stock_data)
transformed_stock_data.columns = ["timestamps", "open", "close", "volume"]
transformed_stock_data = transformed_stock_data.set_index("timestamps")
ETL et ELT en Python

Passons à la pratique !

ETL et ELT en Python

Preparing Video For Download...