Une bibliothèque Python révolutionnaire pour l'exploration interactive de données et la génération automatique de pipelines
DataLexir transforme votre processus d'exploration de données en permettant de travailler sur des échantillons légers dans des notebooks Jupyter, puis de générer automatiquement des pipelines de production pour Pandas et Spark.
DataLexir résout un problème majeur des gestionnaires de données : comment explorer efficacement de gros volumes de données et transformer cette exploration en pipeline de production reproductible ?
- 🔬 Exploration interactive : Travaillez sur des échantillons de données dans des notebooks
- 🏗️ Génération automatique de pipelines : Convertissez votre exploration en code de production
- ⚡ Multi-moteur : Support de Pandas et Apache Spark
- 🎮 Interface intuitive : Widgets interactifs pour une exploration sans code
- 📊 Traçabilité complète : Historique détaillé de toutes les transformations
pip install datalexirgit clone https://github.com/remiv1/data_elexir.git
cd data_elexir
pip install -e .DataLexir est organisé en trois modules principaux :
Module d'exploration de données avec échantillonnage intelligent pour les notebooks Jupyter.
Fonctionnalités :
- Échantillonnage intelligent des datasets volumineux
- Interface interactive avec widgets Jupyter
- Historique automatique des transformations
- Assignation dynamique des types de colonnes
Générateur et exécuteur de pipelines pour Pandas.
Fonctionnalités :
- Conversion des explorations en pipelines Pandas
- Optimisation automatique des opérations
- Support complet de l'écosystème Pandas
Générateur et exécuteur de pipelines pour Apache Spark.
Fonctionnalités :
- Conversion des explorations en pipelines Spark
- Optimisation pour les gros volumes de données
- Distribution automatique des calculs
import pandas as pd
from datalexir.elexbook import Elexbook
# Chargement d'un dataset volumineux
df = pd.read_csv('mon_gros_dataset.csv')
# Création d'un elexbook avec échantillonnage (30% par défaut)
book = Elexbook(df, sample=0.1)
# Exploration interactive
book.head()
book.describe()
book.dropna()
book.fillna(0)
# Interface interactive pour les types de colonnes
book.dynamic_type_assignment()
# Génération du pipeline
pipeline = book.concatbook()from datalexir.elexdas import Elexdas
# Application du pipeline sur les données complètes
elexdas = Elexdas(df)
result = elexdas.pipeline(pipeline)from datalexir.elexpark import Elexpark
from pyspark.sql import SparkSession
# Initialisation Spark
spark = SparkSession.builder.appName("DataLexir").getOrCreate()
sdf = spark.read.csv('mon_gros_dataset.csv', header=True, inferSchema=True)
# Application du pipeline sur Spark
elexpark = Elexpark(sdf)
result = elexpark.pipeline(pipeline)Imaginez que vous êtes gestionnaire de données dans une entreprise de e-commerce avec 10 millions de transactions :
# 1. Exploration sur échantillon (100k transactions)
from datalexir.elexbook import Elexbook
import pandas as pd
# Chargement des données
sales_data = pd.read_csv('sales_10M_rows.csv')
print(f"Dataset complet : {len(sales_data):,} lignes")
# Exploration interactive sur 1% des données
book = Elexbook(sales_data, sample=0.01)
print(f"Échantillon : {len(book.sample):,} lignes")
# Nettoyage interactif
book.dropna(subset=['customer_id', 'amount'])
book.fillna({'category': 'Unknown'})
book.astype({'amount': 'float64'})
# Analyse exploratoire
book.groupby('category')['amount'].sum().sort_values(ascending=False)
book.plot(x='date', y='amount', kind='line')
# Génération du pipeline
cleaning_pipeline = book.concatbook()# 2. Application en production sur les 10M de lignes
from datalexir.elexdas import Elexdas
# Application du pipeline sur toutes les données
processor = Elexdas(sales_data)
clean_sales_data = processor.pipeline(cleaning_pipeline)
# Ou pour de très gros volumes avec Spark
from datalexir.elexpark import Elexpark
spark_processor = Elexpark(spark_sales_data)
clean_sales_data_spark = spark_processor.pipeline(cleaning_pipeline)pip install pandas numpy ipywidgets jupyterpip install pysparkpip install -r requirements-dev.txtPour une documentation complète, consultez :
Nous encourageons les contributions ! DataLexir est un projet open source en pleine croissance.
- Fork le repository
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/ma-nouvelle-fonctionnalite) - Committez vos changements (
git commit -m 'Ajout d'une nouvelle fonctionnalité') - Pushez vers la branche (
git push origin feature/ma-nouvelle-fonctionnalite) - Ouvrez une Pull Request
- Suivez les conventions de code Python (PEP 8)
- Ajoutez des tests pour toutes les nouvelles fonctionnalités
- Documentez vos changements
- Assurez-vous que tous les tests passent
Pour plus de détails, consultez CONTRIBUTING.md.
Créateur et mainteneur principal:
- Rémi Verschuur (@remiv1) - Créateur et architecte principal
Nous recherchons des contributeurs passionnés pour faire grandir DataLexir. Si vous êtes intéressé par :
- Le développement Python
- L'ingénierie des données
- L'UX/UI pour les outils de données
- La documentation technique
N'hésitez pas à nous contacter !
Ce projet est sous licence Apache License 2.0. Voir le fichier LICENSE pour plus de détails.
Copyright 2025 DataLexir Contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.Bien qu'aucune roadmap formelle ne soit définie pour le moment, les prochaines étapes incluront :
- Amélioration de l'interface utilisateur interactive
- Support de formats de données supplémentaires
- Optimisation des performances
- Documentation étendue et tutoriels
⭐ Si DataLexir vous aide dans vos projets, n'hésitez pas à nous donner une étoile sur GitHub !