---
title: "Analyse Python"
description: "Comment Datarelix exécute Python : quand une étape en bac à sable est prévue, quelles bibliothèques sont disponibles et quelles limites sont appliquées."
canonical: https://docs.datarelix.ai/fr/guides/python/
---

# Analyse Python

Certaines questions ne se règlent pas avec SQL seul — distributions, régressions, transformations sur mesure. Datarelix exécute alors du Python dans un bac à sable isolé.

## Quand Python s'exécute

- Quand une question demande une analyse qui dépasse le SQL — en général des graphiques ou des agrégations que pandas gère mieux que SQL.
- Quand vous activez l'icône graphique et que le plan comprend une étape en bac à sable.

Les étapes en bac à sable consomment les résultats de l'étape SQL. Le DataFrame que vous obtenez, ce sont les lignes produites par l'étape SQL.

## Ce qui est disponible dans le bac à sable

- **pandas, numpy** pour la manipulation de données.
- **scipy, statsmodels** pour les statistiques.

Le bac à sable exécute un ensemble fixe et vérifié de bibliothèques scientifiques Python — pandas, numpy, scipy et statsmodels. L'installation de paquets arbitraires n'est pas possible.

Les graphiques ne sont **pas** écrits en Python. Quand votre question appelle une visualisation,
Datarelix génère une spécification de graphique déclarative à partir du résultat de la requête et
l'affiche sous forme de graphique Vega-Lite interactif — le bac à sable sert à l'analyse de données (transformations, statistiques), pas au tracé.

## Ce qui n'est PAS disponible

- **Pas de réseau.** Le bac à sable ne peut pas émettre d'appels HTTP sortants. Impossible de faire `requests.get("...")` pour exfiltrer des données.
- **Pas de système de fichiers hors du répertoire temporaire de l'exécution.** Pas de lecture dans votre répertoire personnel, pas d'écriture durable dans `/tmp`.
- **Pas de shell.** `os.system` et `subprocess` sont bloqués.
- **Pas de chargement de code natif.** Pas de `ctypes`, pas de FFI.

Ces limites sont appliquées au niveau du système d'exploitation (système de fichiers racine en lecture seule, capacités retirées, isolation par espace de noms réseau).

## Limites de ressources

| Limite | Valeur par défaut |
|-------|---------|
| Délai d'exécution total | 30s |
| Mémoire | 512 MB |
| CPU | 1 cœur |
| Octets de sortie | 10 MB |

Ces limites gardent l'analyse rapide et bornée. Les plans Enterprise peuvent les relever — [contactez-nous](https://datarelix.ai/fr/contact/).

## Inspecter une étape en bac à sable

Ouvrez la trace sur le message de l'assistant. Vous y verrez :

- Le code Python produit par le LLM.
- Le DataFrame consommé (référencé par son nom).
- L'artefact produit (tableau ou graphique).
- Les sorties stdout / stderr capturées pendant l'exécution.

En cas d'échec, la classe d'erreur est `CODE_ERROR` et le type et le message de l'exception figurent dans la trace.

## Quand Python n'est pas la réponse

Si le Python généré échoue à répétition ou ne correspond pas à la question, Datarelix réessaie automatiquement, dans la limite configurée (3 par défaut). Au-delà, l'exécution est marquée en échec avec un `PLAN_FAILURE`. Reformulez la question et redemandez.
