Introduction: Une Journée chez LumaTech [Fiction]
Imaginez-vous arriver un lundi matin chez LumaTech, une entreprise de taille moyenne spécialisée dans la fabrication et la vente de luminaires intelligents. Sarah, la nouvelle analyste de données, est assise à son bureau, entourée de tableaux Excel et de rapports Power BI. Son responsable, Thomas, vient de lui confier une mission cruciale : optimiser la chaîne d’approvisionnement en analysant deux années de données de production, de ventes et de logistique.
« Le comité de direction attend les résultats pour vendredi. Les fichiers sont énormes et nos outils habituels rament, » explique Thomas, l’air préoccupé. « On a besoin d’identifier rapidement les tendances et de créer des simulations pour l’avenir. »
Sarah sourit légèrement. « Ne t’inquiète pas, j’ai ce qu’il faut, » dit-elle en ouvrant son environnement Python. « NumPy va nous sauver. »
Vous vous demandez peut-être, tout comme Thomas à ce moment-là: « NumPy? Comment une bibliothèque Python peut-elle remplacer nos outils d’analyse habituels? » Suivez-moi dans cette aventure où vous découvrirez comment NumPy peut transformer votre façon d’analyser les données en entreprise.
Qu’est-ce que NumPy et pourquoi l’adopter?
NumPy (Numerical Python) est une bibliothèque fondamentale pour le calcul scientifique en Python. Elle offre une alternative puissante aux tableurs traditionnels grâce à son efficacité dans la manipulation de grandes quantités de données numériques.
Avant de plonger dans les détails techniques, comparons les approches:
Aspect | Excel | Power BI | Python sans NumPy | Python avec NumPy |
Manipulation de données | Tableaux, formules, Power Query | Power Query, DAX, modèles de données | Listes, dictionnaires, boucles | Arrays multidimensionnels |
Calculs vectoriels | Formules matricielles (limitées) | DAX (optimisé pour les agrégations) | Boucles explicites (lentes) | Opérations vectorielles rapides |
Performance | Bonne pour petits/moyens datasets | Optimisé pour gros volumes | Lente sans librairies | Très rapide (C optimisé) |
Visualisation | Graphiques intégrés | Dashboards interactifs | Matplotlib/Seaborn (à coder) | Nécessite d’autres librairies |
Apprentissage | Facile pour débutants | Courbe modérée (DAX/M) | Syntaxe basique mais explicite | Requiert compréhension des arrays |
Utilisation typique | Reporting simple/analyse ad-hoc | Business Intelligence/Reporting | Scripting/automatisation générale | Calcul scientifique/ML |
Opérations statistiques | Fonctions de base (MOYENNE, etc.) | DAX/statistiques intégrées | Bibliothèque statistics | Fonctions optimisées (moyenne, SD) |
Gestion des NaN | Gestion manuelle (SIERREUR, etc.) | DAX gère les blanks | Gestion manuelle | np.nan , fonctions dédiées |
Indexation | Références de cellules (A1, B2) | Colonnes dans des tables | Index de listes/dictionnaires | Indexation avancée (slicing, masks) |
Volume de données | Limité (~1M lignes max) | Gère bien des millions de lignes | Dépend de la RAM (mais lent) | Optimisé pour gros volumes |
Vitesse de calcul | Correcte (mais ralentit si lourd) | Rapide avec compression/dictionnaires | Lente (interprété, boucles) | Très rapide (vectorisé en C) |
Reproductibilité | Difficile (dépend des clics) | Moyenne (dépend des sources) | Excellente (scripts rejouables) | Excellente (scripts + versioning) |
Automatisation | Macros VBA (peu moderne) | Power Automate/API (limité) | Scripts/Pipelines (très flexible) | Scripts intégrables dans des workflows |
Voici une estimation des volumes de données que chaque outil peut gérer sur un PC avec 8 Go de RAM, en tenant compte des limites pratiques (performances, fluidité, etc.) :
Aspect | Excel | Power BI | Python sans NumPy | Python avec NumPy |
Volume conseillé | 100 000 – 300 000 lignes | 1 – 5 millions de lignes | 500 000 – 2M lignes (dépend du type) | 1 – 10 millions de lignes |
Limite pratique | ~1 million (lent, instable) | 10+ millions (avec optimisations) | ~5M (extrêmement lent) | 50M+ (si données numériques) |
Explication | Excel 64 bits peut ouvrir 1M de lignes, mais devient lent (calculs/graphiques). | Compression VertiPaq et mode DirectQuery pour les très gros volumes. | Gestion manuelle en mémoire (listes/dicts) → inefficace. | Stockage optimisé (contigu en mémoire) + calculs vectorisés. |
Exemple | Un fichier avec 500 000 lignes et 10 colonnes (~50 Mo) peut planter lors de l’application de filtres. | Un dataset de 3M lignes avec agrégations DAX peut utiliser 6-7 Go de RAM. | Charger un CSV de 1M lignes × 20 colonnes peut prendre 1-2 Go de RAM. | Calcul de moyenne sur 10M de valeurs : 0.1 seconde avec NumPy vs 10 secondes en Python pur. |
Sarah, notre analyste chez LumaTech, doit traiter des millions de points de données sur la production, la logistique et les ventes. Voyons comment NumPy transforme son approche.
Installation et premiers pas
Si vous souhaitez suivre les exemples, commencez par installer NumPy:
# Installation via pip
pip install numpy
# Importation
import numpy as np
Structure de base: le tableau NumPy (ndarray)
Contrairement aux listes Python standard, NumPy utilise des tableaux homogènes (tous les éléments sont du même type) et contigus en mémoire, ce qui les rend extrêmement efficaces.
# Création d’un tableau à partir d’une liste
ventes_mensuelles = np.array([125000, 131000, 142000, 153000, 162000,
171000, 168000, 155000, 149000, 162000,
177000, 189000])
# Affichage des dimensions
print(f"Dimensions: {ventes_mensuelles.shape}")
print(f"Type des données: {ventes_mensuelles.dtype}")
Situation chez LumaTech
Sarah doit analyser les ventes de luminaires par modèle, par région et par mois. Avec Excel, elle aurait dû créer plusieurs tableaux croisés dynamiques, mais avec NumPy, elle peut facilement manipuler des données multidimensionnelles:
# Création d’un tableau multidimensionnel représentant les ventes
# Structure: [modèle, région, mois]
ventes = np.zeros((5, 4, 12)) # 5 modèles, 4 régions, 12 mois
# Remplissage avec des données fictives (en situation réelle, importées d’un fichier)
ventes = np.random.randint(100, 1000, size=(5, 4, 12))
# Accès aux ventes du modèle 2, région 1, pour le mois de mars
mars_mod2_reg1 = ventes[1, 0, 2]
print(f"Ventes en mars pour le modèle 2 dans la région 1: {mars_mod2_reg1}")
Création de tableaux: les méthodes essentielles
NumPy offre de nombreuses façons de créer des tableaux adaptés à différentes situations d’entreprise:
# Tableau rempli de zéros (parfait pour initialiser des compteurs)
stock_initial = np.zeros(50) # Stock initial pour 50 produits
# Tableau rempli de uns (utile pour les facteurs multiplicatifs)
facteurs_ajustement = np.ones(12) # Facteurs mensuels
# Séquence régulière (idéale pour les périodes)
mois = np.arange(1, 13) # Numéros des mois de 1 à 12
# Séquence avec intervalle spécifique (parfaite pour les prévisions)
previsions_trimestrielles = np.linspace(100000, 150000, 4) # 4 valeurs équidistantes
# Création de matrice identité (utile pour l’isolation de variables)
matrice_transition = np.eye(5) # Matrice 5x5 pour modéliser les transitions entre états
Application chez LumaTech
Sarah utilise ces fonctions pour modéliser la production de luminaires:
# Initialisation d’un tableau de production mensuelle pour 5 modèles
production = np.zeros((5, 12))
# Définition d’objectifs de production linéairement croissants pour le modèle 1
production[0] = np.linspace(500, 800, 12)
# Ajout d’une saisonnalité (plus forte production en hiver) pour le modèle 2
mois = np.arange(12)
production[1] = 600 + 200 * np.sin(np.pi * mois / 6)
print("Production prévue pour le modèle 1:", production[0])
print("Production prévue pour le modèle 2:", production[1])
Opérations mathématiques: la puissance de la vectorisation
Là où NumPy brille vraiment par rapport à Excel ou au Python standard, c’est dans les opérations vectorisées (appliquées élément par élément) sans boucles explicites.
# Calcul de la croissance mensuelle en pourcentage
ventes_mensuelles = np.array([125000, 131000, 142000, 153000, 162000,
171000, 168000, 155000, 149000, 162000,
177000, 189000])
croissance = (ventes_mensuelles[1:] - ventes_mensuelles[:-1]) / ventes_mensuelles[:-1] * 100
print("Croissance mensuelle (%):", croissance)
# Application d’une fonction à tous les éléments
cout_production = np.array([85000, 89000, 96000, 103000, 108000,
114000, 112000, 104000, 101000, 109000,
118000, 126000])
marge_brute = (ventes_mensuelles - cout_production) / ventes_mensuelles * 100
print("Marge brute mensuelle (%):", marge_brute)
# Statistiques descriptives
# Moyenne
print(f"Vente moyenne: {np.mean(ventes_mensuelles)}")
# Médiane
print(f"Vente médiane: {np.median(ventes_mensuelles)}")
# Écart-type
print(f"Écart-type: {np.std(ventes_mensuelles)}")
# Vente minimale
print(f"Vente minimale: {np.min(ventes_mensuelles)}")
# Vente maximale
print(f"Vente maximale: {np.max(ventes_mensuelles)}")
Chez LumaTech: analyse de rentabilité
Sarah doit évaluer la rentabilité par produit et région. Avec NumPy, cette tâche devient simple:
# Prix de vente unitaire par modèle
prix_vente = np.array([120, 180, 250, 310, 450])
# Coût unitaire par modèle
cout_unitaire = np.array([80, 110, 160, 190, 270])
# Calcul de la marge brute par modèle (en %)
marge_par_modele = (prix_vente - cout_unitaire) / prix_vente * 100
print("Marge brute par modèle (%):", marge_par_modele)
# Calculer le chiffre d’affaires total par modèle à travers toutes les régions et tous les mois
ca_par_modele = np.sum(ventes, axis=(1, 2)) * prix_vente
print("Chiffre d'affaires total par modèle:", ca_par_modele)
# Calculer le bénéfice total
benefice_total = np.sum((prix_vente.reshape(5, 1, 1) - cout_unitaire.reshape(5, 1, 1)) * ventes)
print(f"Bénéfice total prévu: {benefice_total} €")
Indexation et découpage: trouver l’aiguille dans la botte de foin
NumPy offre des capacités puissantes pour extraire précisément les données dont vous avez besoin:
# Sélection basique
t1_ventes = ventes_mensuelles[:3] # Ventes du premier trimestre
print("Ventes T1:", t1_ventes)
# Masques booléens
mois_forts = ventes_mensuelles > 160000
print("Mois avec ventes > 160K:", mois_forts)
print("Valeurs des mois forts:", ventes_mensuelles[mois_forts])
# Indexation conditionnelle
print("Mois avec marge > 32%:", np.where(marge_brute > 32)[0] + 1); # +1 car les indices commencent à 0
# Indexation multi-dimensionnelle
meilleures_ventes_regions = np.argmax(ventes, axis=2); # Mois avec les meilleures ventes par modèle et région
print("Meilleurs mois de vente par modèle et région:\n", meilleures_ventes_regions)
Chez LumaTech: identifier les opportunités
Sarah utilise l’indexation avancée pour identifier des opportunités commerciales:
# Identifier les combinaisons modèle/région avec les meilleures performances
meilleures_combinaisons = np.where(np.sum(ventes, axis=2) > 8000)
modeles_performants = meilleures_combinaisons[0]
regions_performantes = meilleures_combinaisons[1]
print("Combinaisons modèle/région à fort potentiel:")
for i in range(len(modeles_performants)):
print(f"Modèle {modeles_performants[i]+1} dans la Région {regions_performantes[i]+1}")
# Identifier les modèles qui sous-performent
seuil_performance = np.percentile(np.sum(ventes, axis=(1, 2)), 20) # 20% inférieur
modeles_faibles = np.where(np.sum(ventes, axis=(1, 2)) < seuil_performance)[0]
print(f"Modèles à revoir: {modeles_faibles+1}")
Transformation de forme: voir les données sous tous les angles
La capacité à restructurer les données est essentielle pour l’analyse:
# Restructuration d’un tableau
ventes_reshaped = ventes.reshape(20, 12) # Regrouper modèles et régions, garder les mois
print("Nouvelle forme:", ventes_reshaped.shape)
# Transposition
ventes_transpose = ventes.transpose(2, 0, 1) # Réorganiser en [mois, modèle, région]
print("Forme transposée:", ventes_transpose.shape)
# Ajout d’un axe (utile pour le broadcasting)
prix_reshape = prix_vente[:, np.newaxis, np.newaxis] # Forme (5, 1, 1)
# Maintenant on peut facilement multiplier avec ventes de forme (5, 4, 12)
ca = prix_reshape * ventes
Chez LumaTech: analyse temporelle
Sarah utilise ces techniques pour comparer les tendances mensuelles:
# Tendance mensuelle toutes régions et tous modèles confondus
tendance_mensuelle = np.sum(ventes, axis=(0, 1))
print("Tendance mensuelle globale:", tendance_mensuelle)
# Calcul des parts de marché mensuelles par modèle
ventes_mensuelles_par_modele = np.sum(ventes, axis=1) # Somme sur les régions
ventes_mensuelles_totales = np.sum(ventes_mensuelles_par_modele, axis=0) # Total par mois
parts_marche = ventes_mensuelles_par_modele / ventes_mensuelles_totales.reshape(1, 12) * 100
for i in range(5):
print(f"Évolution part de marché modèle {i+1} (%): {parts_marche[i]}")
Agrégation et statistiques: extraire les informations clés
NumPy excelle dans le calcul de statistiques sur de grands ensembles de données:
# Calculs d’agrégation par axe
# Ventes par modèle
ventes_par_modele = np.sum(ventes, axis=(1, 2))
# Ventes par région
ventes_par_region = np.sum(ventes, axis=(0, 2))
# Ventes par mois
ventes_par_mois = np.sum(ventes, axis=(0, 1))
# Statistiques avancées
print("Coefficient de variation par modèle:", np.std(ventes, axis=(1, 2)) / np.mean(ventes, axis=(1, 2)))
print("Croissance moyenne entre le T1 et T4:", np.mean(ventes[:,:,9:12] / ventes[:,:,0:3]))
# Percentiles
seuils = np.percentile(ventes.flatten(), [25, 50, 75, 90])
print("Distribution des ventes (25%, 50%, 75%, 90%):", seuils)
Chez LumaTech: segmentation de la performance
# Évaluation de la régularité des ventes par région
regularite = np.std(ventes, axis=2) / np.mean(ventes, axis=2)
print("Coefficient de variation par modèle et région:\n", regularite)
# Régions avec les ventes les plus stables (faible coefficient de variation)
regions_stables = np.argmin(regularite, axis=1)
print("Région la plus stable pour chaque modèle:", regions_stables + 1)
# Analyser les corrélations entre modèles (tendances de vente similaires)
correlations = np.zeros((5, 5))
for i in range(5):
for j in range(5):
if i != j:
ventes_i = np.sum(ventes[i], axis=0) # Ventes du modèle i par mois
ventes_j = np.sum(ventes[j], axis=0) # Ventes du modèle j par mois
correlation = np.corrcoef(ventes_i, ventes_j)[0, 1]
correlations[i, j] = correlation
print("Matrice de corrélation entre modèles:\n", correlations)
Combinaison de tableaux: fusion des données
Fusionner des données de sources différentes est une tâche courante en entreprise:
# Concaténation
q1_ventes = np.random.randint(100, 500, size=(5, 4, 3)) # Ventes T1
q2_ventes = np.random.randint(200, 600, size=(5, 4, 3)) # Ventes T2
s1_ventes = np.concatenate((q1_ventes, q2_ventes), axis=2) # Fusion S1
print("Forme du tableau S1:", s1_ventes.shape)
# Empilement (stacking)
modele1_ventes = ventes[0]
modele2_ventes = ventes[1]
comparaison = np.stack((modele1_ventes, modele2_ventes))
print("Forme du tableau de comparaison:", comparaison.shape)
# Division (splitting)
trimestres = np.split(ventes, 4, axis=2) # Diviser en 4 trimestres
print("Ventes du premier trimestre - forme:", trimestres[0].shape)
Chez LumaTech: intégration des données de coûts
# Données de coûts logistiques par région et par mois
couts_logistique = np.random.randint(5000, 15000, size=(4, 12))
# Données de coûts de production par modèle et par mois
couts_production = np.random.randint(10000, 50000, size=(5, 12))
# Expansion pour aligner les dimensions
# Coûts logistiques
couts_logistique_expanded = couts_logistique.reshape(1, 4, 12) # Forme (1, 4, 12)
# Coûts de production
couts_production_expanded = couts_production.reshape(5, 1, 12) # Forme (5, 1, 12)
# Broadcasting automatique pour créer un tableau de coûts combinés
couts_totaux = couts_production_expanded + couts_logistique_expanded
print("Dimensions des coûts totaux:", couts_totaux.shape)
Fonctions mathématiques avancées: modélisation et prévision
NumPy intègre de nombreuses fonctions mathématiques utilisables directement sur les tableaux:
# Modélisation de la saisonnalité
mois = np.arange(12)
saisonnalite = 1 + 0.2 * np.sin(2 * np.pi * mois / 12)
print("Facteurs de saisonnalité:", saisonnalite)
# Calcul de croissance exponentielle (prévisions)
taux_croissance_mensuel = 0.03
base_ventes = 10000
previsions = base_ventes * np.exp(taux_croissance_mensuel * np.arange(24))
print("Prévisions sur 24 mois:\n", previsions)
# Calcul de moyenne mobile (tendance)
ventes_mensuelles = np.random.randint(80000, 120000, size=24)
fenetre = 3
poids = np.ones(fenetre) / fenetre
moyenne_mobile = np.convolve(ventes_mensuelles, poids, mode='valid')
print("Moyenne mobile sur 3 mois:", moyenne_mobile)
Chez LumaTech: modélisation de la demande
# Composantes de la prévision de demande pour un nouveau produit
tendance = np.linspace(200, 500, 12) # Croissance linéaire
saisonnalite = 1 + 0.3 * np.sin(np.pi * np.arange(12) / 6) # Pic en hiver et été
evenements = np.ones(12)
evenements[[2, 8]] = 1.2 # Promotions prévues en mars et septembre
# Modèle multiplicatif
prevision_demande = tendance * saisonnalite * evenements
print("Prévision de demande pour le nouveau produit:", prevision_demande.astype(int))
# Simuler différents scénarios de croissance
scenarios = np.array([0.01, 0.03, 0.05]) # Taux de croissance mensuelle: faible, moyen, élevé
base = prevision_demande[-1] # Partir de la dernière prévision
mois_supplementaires = 12
previsions_scenarios = np.zeros((3, mois_supplementaires))
for i, taux in enumerate(scenarios):
previsions_scenarios[i] = base * np.cumprod(np.full(mois_supplementaires, 1 + taux))
print("Scénario optimiste (12 mois):", previsions_scenarios[2].astype(int))
Algèbre linéaire: pour les analyses complexes
NumPy intègre des fonctions d’algèbre linéaire essentielles pour les analyses avancées:
# Résolution d’un système d’équations
# Exemple: trouver la contribution de chaque canal marketing
# Équations:
- # 1000 = 10*x + 5*y + 2*z (janvier)
- # 1200 = 12*x + 6*y + 3*z (février)
- # 1500 = 8*x + 10*y + 6*z (mars)
coefficients = np.array([
[10, 5, 2],
[12, 6, 3],
[8, 10, 6]
])
resultats = np.array([1000, 1200, 1500])
contribution_canaux = np.linalg.solve(coefficients, resultats)
print("Contribution par canal marketing:", contribution_canaux)
# Décomposition en valeurs propres (analyse des facteurs principaux)
matrice_correlation = np.array([
[1.0, 0.8, 0.3],
[0.8, 1.0, 0.5],
[0.3, 0.5, 1.0]
])
valeurs_propres, vecteurs_propres = np.linalg.eig(matrice_correlation)
print("Valeurs propres:", valeurs_propres)
print("Vecteurs propres:", vecteurs_propres)
Chez LumaTech: optimisation du mix produit
# Optimisation du mix produit
# Variables: quantités à produire de chaque modèle
# Contraintes:
- # – Temps de production (heures)
- # – Matière première disponible (kg)
- # – Capacité de stockage (unités)
# Matrice des contraintes par unité produite (temps, matière, volume stockage)
contraintes_unitaires = np.array([
[2, 4, 6, 8, 10], # heures par unité pour chaque modèle
[3, 5, 7, 9, 12], # kg par unité
[1, 1, 2, 2, 3] # emplacements de stockage par unité
])
# Limites totales disponibles
limites = np.array([1000, 1500, 400]) # heures, kg, emplacements
# Profit par unité
profit_unitaire = np.array([40, 70, 90, 120, 180])
# Fonction simplifiée pour estimer la production optimale
# (dans un cas réel, on utiliserait scipy.optimize.linprog)
ratios = profit_unitaire / contraintes_unitaires
meilleur_ratio_par_contrainte = np.argmax(ratios, axis=1)
print("Modèle le plus rentable par contrainte:")
for i, contrainte in enumerate(["temps", "matière", "stockage"]):
print(f"- Pour la contrainte {contrainte}: Modèle {meilleur_ratio_par_contrainte[i]+1}")
Génération aléatoire: simulation et tests
NumPy facilite la création de simulations pour tester des scénarios:
# Génération de valeurs aléatoires
np.random.seed(42) # Pour reproductibilité
# Simulation de ventes journalières (distribution normale)
moyenne_ventes = 500
ecart_type = 80
ventes_journalieres = np.random.normal(moyenne_ventes, ecart_type, size=90) # 3 mois
print("Ventes journalières moyennes simulées:", np.mean(ventes_journalieres))
# Simulation de ruptures de stock (distribution de Poisson)
taux_rupture = 3 # 3 ruptures par mois en moyenne
ruptures = np.random.poisson(taux_rupture, size=12)
print("Ruptures de stock par mois:", ruptures)
# Simulation Monte Carlo pour estimer le profit annuel
n_simulations = 1000
profits = np.zeros(n_simulations)
for i in range(n_simulations):
# Simuler des ventes avec incertitude
ventes_sim = np.random.normal(ventes.mean(), ventes.std() * 0.1, size=ventes.shape)
# Calculer le profit (simplifié)
cout_moyen = 0.6 # 60% du prix de vente
profit_sim = np.sum(ventes_sim) * (1 - cout_moyen)
profits[i] = profit_sim
print(f"Profit annuel estimé: {np.mean(profits):.2f} ± {np.std(profits):.2f}")
print(f"Intervalle de confiance 95%: [{np.percentile(profits, 2.5):.2f}, {np.percentile(profits, 97.5):.2f}]")
Chez LumaTech: analyse de risque
# Simulation de scénarios pour l’analyse de risque sur un nouveau projet
cout_projet = 1000000
economie_annuelle_esperee = 350000
duree_projet = 5 # ans
# Incertitudes
variation_cout = 0.2 # +/- 20%
variation_economie = 0.3 # +/- 30%
# Simulations Monte Carlo
n_simulations = 10000
npv = np.zeros(n_simulations)
taux_actualisation = 0.08
for i in range(n_simulations):
# Simuler les coûts et économies avec incertitude
cout_reel = cout_projet * (1 + np.random.uniform(-variation_cout, variation_cout))
economies = np.zeros(duree_projet)
for j in range(duree_projet):
# Les économies varient chaque année
economies[j] = economie_annuelle_esperee * (1 + np.random.uniform(-variation_economie, variation_economie))
# Calculer la VAN
flux = -cout_reel + economies
facteurs_actualisation = 1 / np.power(1 + taux_actualisation, np.arange(duree_projet + 1))
npv[i] = np.sum(flux * facteurs_actualisation[1:])
print(f"VAN moyenne: {np.mean(npv):.2f} €")
print(f"Probabilité de VAN positive: {np.sum(npv > 0) / n_simulations * 100:.1f}%")
print(f"VAN au risque 10%: {np.percentile(npv, 10):.2f} €")
Entrées/Sorties: intégration avec d’autres outils
NumPy s’intègre facilement avec d’autres formats de données:
# Sauvegarde et chargement de données NumPy
np.save('ventes_2024.npy', ventes)
ventes_chargees = np.load('ventes_2024.npy')
# Export vers CSV
np.savetxt('ventes_mensuelles.csv', ventes_mensuelles, delimiter=',')
# Import depuis CSV
donnees_importees = np.loadtxt('ventes_mensuelles.csv', delimiter=',')
Chez LumaTech: transition depuis Excel
# Import de données depuis Excel (en pratique, on utiliserait pandas)
# Simulons cela avec des données aléatoires
excel_data = np.random.randint(100, 1000, size=(100, 5)) # 100 lignes, 5 colonnes
# Nettoyage des données (remplacement des valeurs manquantes simulées par -1)
excel_data_nettoyees = np.where(excel_data < 150, np.nan, excel_data)
valeurs_moyennes = np.nanmean(excel_data_nettoyees, axis=0)
excel_data_complete = np.where(np.isnan(excel_data_nettoyees),
np.tile(valeurs_moyennes, (excel_data.shape[0], 1)),
excel_data_nettoyees)
print("Moyennes par colonne après nettoyage:", np.mean(excel_data_complete, axis=0))
Conclusion
En conclusion, NumPy s’impose comme un outil incontournable pour toute entreprise souhaitant exploiter efficacement ses données. Sa puissance de calcul, sa flexibilité et son écosystème riche en font une fondation solide pour développer des solutions d’analyse de données sur mesure. Que vous soyez une PME cherchant à optimiser vos processus ou une grande entreprise déployant des modèles d’apprentissage automatique complexes, NumPy offre les fonctionnalités nécessaires pour transformer vos données brutes en informations stratégiques.
L’adoption de NumPy représente un investissement minimal en termes de ressources, mais peut générer des retours considérables en matière d’efficacité opérationnelle et de prise de décision. Dans un monde économique où la donnée est souvent qualifiée de « nouvel or noir », s’équiper des bons outils pour l’exploiter n’est plus une option, mais une nécessité. NumPy, avec sa communauté active et son développement continu, est prêt à accompagner votre entreprise dans sa transformation numérique, aujourd’hui et pour les années à venir.
Pour en savoir plus, plongez dans la documentation officielle.
NumPy Cheat Sheet : – Référence rapide pour l’entreprise
Merci d’avoir pris le temps de lire cet article sur NumPy ! J’espère qu’il vous a fourni des idées utiles et inspirantes. Si vous l’avez trouvé intéressant, n’hésitez pas à le partager avec votre réseau sur vos plateformes préférées. Je serais également ravi de recevoir vos commentaires, alors merci de laisser vos remarques et points de vue dans le formulaire ci-dessous.
Au plaisir de continuer la discussion !
1 comment
Merci pour le partage !