Créez votre propre pipeline de données simple avec Python et Docker
Image de l’auteur | IdéogrammeLes données sont l’actif qui stimule notre travail en tant que professionnels des données. Sans données appropriées, nous ne pouvons pas effectuer nos tâches et notre entreprise ne parviendra pas à obtenir un avantage concurrentiel. Ainsi, la sécurisation des données appropriées est cruciale pour tout professionnel de données, et les pipelines de données sont les systèmes conçus à cette fin.
Les pipelines de données sont des systèmes conçus pour déplacer et transformer les données d’une source à une autre. Ces systèmes font partie de l’infrastructure globale pour toute entreprise qui s’appuie sur des données, car elles garantissent que nos données sont fiables et toujours prêtes à l’emploi.
La construction d’un pipeline de données peut sembler complexe, mais quelques outils simples sont suffisants pour créer des pipelines de données fiables avec seulement quelques lignes de code. Dans cet article, nous explorerons comment créer un pipeline de données simple à l’aide de Python et Docker que vous pouvez appliquer dans votre travail de données quotidien.
Allons-y.
Construire le pipeline de données
Avant de construire notre pipeline de données, comprenons le concept d’ETL, qui signifie extraire, transformer et charger. ETL est un processus où le pipeline de données effectue les actions suivantes:
- Extraire les données de diverses sources.
- Transformez les données en un format valide.
- Chargez les données dans un emplacement de stockage accessible.
ETL est un modèle standard pour les pipelines de données, donc ce que nous construisons suivra cette structure.
Avec Python et Docker, nous pouvons construire un pipeline de données autour du processus ETL avec une configuration simple. Python est un outil précieux pour orchestrer toute activité de flux de données, tandis que Docker est utile pour gérer l’environnement de l’application de pipeline de données à l’aide de conteneurs.
Configurons notre pipeline de données avec Python et Docker.
Étape 1: Préparation
Tout d’abord, nous devons nous faire installer Python et Docker sur notre système (nous ne couvrirons pas cela ici).
Pour notre exemple, nous utiliserons le Ensemble de données de crise cardiaque de Kaggle comme source de données pour développer notre processus ETL.
Avec tout en place, nous préparerons la structure du projet. Dans l’ensemble, le pipeline de données simple aura le squelette suivant:
simple-data-pipeline/
├── app/
│ └── pipeline.py
├── data/
│ └── Medicaldataset.csv
├── Dockerfile
├── requirements.txt
└── docker-compose.yml
Il y a un dossier principal appelé simple-data-pipelinequi contient:
- Un
appdossier contenant lepipeline.pydéposer. - UN
datadossier contenant les données source (Medicaldataset.csv). - Le
requirements.txtdossier pour les dépendances environnementales. - Le
DockerfilePour la configuration Docker. - Le
docker-compose.ymlfichier pour définir et exécuter notre application docker multi-container.
Nous allons d’abord remplir le requirements.txt Fichier, qui contient les bibliothèques requises pour notre projet.
Dans ce cas, nous n’utiliserons que la bibliothèque suivante:
Dans la section suivante, nous allons configurer le pipeline de données à l’aide de nos exemples de données.
Étape 2: Configurez le pipeline
Nous installerons le python pipeline.py fichier pour le processus ETL. Dans notre cas, nous utiliserons le code suivant.
import pandas as pd
import os
input_path = os.path.join("/data", "Medicaldataset.csv")
output_path = os.path.join("/data", "CleanedMedicalData.csv")
def extract_data(path):
df = pd.read_csv(path)
print("Data Extraction completed.")
return df
def transform_data(df):
df_cleaned = df.dropna()
df_cleaned.columns = (col.strip().lower().replace(" ", "_") for col in df_cleaned.columns)
print("Data Transformation completed.")
return df_cleaned
def load_data(df, output_path):
df.to_csv(output_path, index=False)
print("Data Loading completed.")
def run_pipeline():
df_raw = extract_data(input_path)
df_cleaned = transform_data(df_raw)
load_data(df_cleaned, output_path)
print("Data pipeline completed successfully.")
if __name__ == "__main__":
run_pipeline()
Le pipeline suit le processus ETL, où nous chargeons le fichier CSV, effectuons des transformations de données telles que la suppression des données manquantes et le nettoyage des noms de colonne et le chargement des données nettoyées dans un nouveau fichier CSV. Nous avons enveloppé ces étapes en un seul run_pipeline fonction qui exécute l’ensemble du processus.
Étape 3: Configurez le dockerfile
Avec le fichier de pipeline Python prêt, nous remplirons le Dockerfile Pour configurer la configuration du conteneur Docker à l’aide du code suivant:
FROM python:3.10-slim
WORKDIR /app
COPY ./app /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
CMD ("python", "pipeline.py")
Dans le code ci-dessus, nous spécifions que le conteneur utilisera Python version 3.10 comme environnement. Ensuite, nous définissons le répertoire de travail du conteneur sur /app Et copiez tout de notre local app dossier dans le conteneur app annuaire. Nous copie également le requirements.txt fichier et exécuter l’installation PIP dans le conteneur. Enfin, nous spécifions la commande pour exécuter le script Python lorsque le conteneur démarre.
Avec Dockerfile Prêt, nous préparerons le docker-compose.yml fichier pour gérer l’exécution globale:
version: '3.9'
services:
data-pipeline:
build: .
container_name: simple_pipeline_container
volumes:
- ./data:/data
Le fichier YAML ci-dessus, lorsqu’il est exécuté, créera l’image Docker à partir du répertoire actuel à l’aide du disponible Dockerfile. Nous montons également le local data dossier au data dossier dans le conteneur, ce qui rend l’ensemble de données accessible à notre script.
Exécuter le pipeline
Avec tous les fichiers prêts, nous exécuterons le pipeline de données dans Docker. Accédez au dossier racine du projet et exécutez la commande suivante dans votre invite de commande pour créer l’image Docker et exécuter le pipeline.
docker compose up --build
Si vous exécutez cela avec succès, vous verrez un journal d’information comme les suivants:
✔ data-pipeline Built 0.0s
✔ Network simple_docker_pipeline_default Created 0.4s
✔ Container simple_pipeline_container Created 0.4s
Attaching to simple_pipeline_container
simple_pipeline_container | Data Extraction completed.
simple_pipeline_container | Data Transformation completed.
simple_pipeline_container | Data Loading completed.
simple_pipeline_container | Data pipeline completed successfully.
simple_pipeline_container exited with code 0
Si tout est exécuté avec succès, vous verrez un nouveau CleanedMedicalData.csv fichier dans votre dossier de données.
Félicitations! Vous venez de créer un pipeline de données simple avec Python et Docker. Essayez d’utiliser diverses sources de données et des processus ETL pour voir si vous pouvez gérer un pipeline plus complexe.
Conclusion
Comprendre les pipelines de données est crucial pour chaque professionnel des données, car ils sont essentiels pour acquérir les bonnes données pour leur travail. Dans cet article, nous avons exploré comment créer un pipeline de données simple à l’aide de Python et Docker et appris à l’exécuter.
J’espère que cela a aidé!
Cornellius Yudha Wijaya est un directeur adjoint des sciences de données et un écrivain de données. Tout en travaillant à plein temps chez Allianz Indonesia, il aime partager des conseils de python et de données via les médias sociaux et la rédaction des médias. Cornellius écrit sur une variété d’IA et de sujets d’apprentissage automatique.
