0% ont trouvé ce document utile (0 vote)
3 vues7 pages

Numpy

Ce document est un guide pratique sur l'utilisation de NumPy pour les statistiques et les probabilités, couvrant des sujets tels que les tableaux masqués, la génération de nombres aléatoires, les statistiques de base, et les tests statistiques simples. Il fournit également des exemples concrets d'analyse de données, y compris la gestion des données manquantes et la visualisation des résultats. Enfin, il inclut des conseils pratiques pour assurer la reproductibilité et la vérification des données.

Transféré par

zahourzouhairx
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues7 pages

Numpy

Ce document est un guide pratique sur l'utilisation de NumPy pour les statistiques et les probabilités, couvrant des sujets tels que les tableaux masqués, la génération de nombres aléatoires, les statistiques de base, et les tests statistiques simples. Il fournit également des exemples concrets d'analyse de données, y compris la gestion des données manquantes et la visualisation des résultats. Enfin, il inclut des conseils pratiques pour assurer la reproductibilité et la vérification des données.

Transféré par

zahourzouhairx
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

NumPy pour les Statistiques et Probabilités

Guide Simple et Pratique


Installation et Import

import numpy as np

Tableaux Masqués (Masked Arrays)


Qu'est-ce que c'est ?

Un tableau masqué permet d'ignorer certaines valeurs (données manquantes, invalides) dans
les calculs.

Création de base

import [Link] as ma

# Créer un tableau masqué simple


donnees = [1, 2, 3, 4, 5]
masque = [False, False, True, False, False] # True = valeur masquée
tableau_masque = ma.masked_array(donnees, mask=masque)
print(tableau_masque) # [1 2 -- 4 5]

# Calcul automatique (ignore les valeurs masquées)


somme = tableau_masque.sum() # = 12 (ignore le 3)

Masquage automatique

# Masquer les valeurs NaN


donnees_nan = [Link]([1, 2, [Link], 4])
tableau_masque = ma.masked_invalid(donnees_nan)

# Masquer selon une condition


tableau_masque = ma.masked_greater([1, 2, 3, 4, 5], 3) # Masque > 3
tableau_masque = ma.masked_equal([1, 2, 3, 4], 2) # Masque = 2

# Remplir les valeurs masquées


tableau_rempli = tableau_masque.filled(0) # Remplace par 0

Génération de Nombres Aléatoires


Distributions de base

# Fixer la graine (pour reproductibilité)


[Link](42)

# Distribution gaussienne (normale)


gauss = [Link](10) # 10 valeurs, moyenne=0, écart-type=1
normale = [Link](5, 2, 5) # moyenne=5, écart-type=2

# Distribution uniforme
uniforme = [Link](0, 10, 5) # valeurs entre 0 et 10
aléatoire = [Link](5) # valeurs entre 0 et 1

# Nombres entiers
entiers = [Link](1, 7, 10) # 10 dés de 1 à 6

Distributions statistiques

# Distribution binomiale (success/échec)


binomiale = [Link](10, 0.3, 5) # 5 expériences de 10 tirages
# Probabilité 0.3 de succès, 10 tirages par expérience

# Distribution de Poisson (événements rares)


poisson = [Link](3, 5) # 5 valeurs, moyenne d'événements = 3

# Autres distributions
chi2 = [Link](2, 5) # Chi-carré, 2 degrés de liberté
student_t = [Link].standard_t(3, 5) # t-Student, 3 degrés de liberté

Choix et permutation

# Choisir des valeurs


choix = [Link]([1, 2, 3, 4, 5]) # 1 valeur aléatoire
choix_multiples = [Link]([1, 2, 3], 5, replace=True) # 5 choix av
choix_sans_remise = [Link]([1, 2, 3], 3, replace=False) # 3 choix

# Permutation
liste = [1, 2, 3, 4, 5]
[Link](liste) # Mélange en place
permutation = [Link](liste) # Retourne une copie mélangée

Statistiques de Base
Données d'exemple

donnees = [Link]([15, 18, 22, 19, 25, 30, 18, 16, 24, 20, 17, 23])

Mesures de tendance centrale

# Moyenne
moyenne = [Link]() # ou [Link](donnees)
moyenne_ponderee = [Link](donnees) # Alternative

# Médiane
mediane = [Link](donnees)

# Mode (plus fréquent) - besoin de scipy


from [Link] import mode
mode_resultat = mode(donnees)
valeur_mode = mode_resultat.mode[0] # Valeur la plus fréquente

Mesures de dispersion

# Écart-type
ecart_type = [Link]() # Écart-type (mathématique)
ecart_type_ech = [Link](ddof=1) # Écart-type échantillon (statistique)

# Variance
variance = [Link]() # Variance (mathématique)
variance_ech = [Link](ddof=1) # Variance échantillon

# Amplitude
amplitude = [Link]() - [Link]()

Quartiles et percentiles

# Quartiles
Q1 = [Link](donnees, 25) # Premier quartile (25%)
Q2 = [Link](donnees, 50) # Deuxième quartile (50% = médiane)
Q3 = [Link](donnees, 75) # Troisième quartile (75%)

# Plusieurs percentiles
quartiles = [Link](donnees, [25, 50, 75])
percentiles = [Link](donnees, [10, 20, 30, 40, 60, 70, 80, 90])

# Range inter-quartile (IQR)


IQR = Q3 - Q1
borne_inf = Q1 - 1.5 * IQR
borne_sup = Q3 + 1.5 * IQR

Histogrammes et Distributions
Création d'histogrammes

# Histogramme simple
frequences, intervalles = [Link](donnees)
print(f"Fréquences: {frequences}")
print(f"Intervalles: {intervalles}")

# Paramètres personnalisés
freq_perso, interv_perso = [Link](donnees, bins=5, range=(15, 30))

# Histogramme de densité (aire = 1)


densite, interv_densite = [Link](donnees, bins=6, density=True)
# Intervalles personnalisés
freq_custom, interv_custom = [Link](donnees, bins=[15, 18, 22, 25, 30]

Comparaison avec des distributions théoriques

# Générer une distribution normale de référence


ref_normale = [Link]([Link](), [Link](), 1000)
freq_ref, interv_ref = [Link](ref_normale, bins=6)

# Calculer les fréquences relatives


freq_relatives = freq_perso / len(donnees)
probabilites_theoriques = freq_ref / len(ref_normale)

Corrélation et Relations
Coefficient de corrélation de Pearson

# Deux variables
x = [Link]([10, 12, 15, 18, 20, 22, 25])
y = [Link]([8, 11, 13, 16, 19, 21, 23])

# Calculer la corrélation
matrice_corr = [Link](x, y)
coefficient_corr = matrice_corr[0, 1] # ≈ 0.99 (forte corrélation positive)

# Multiple variables
donnees_multiples = [Link]([
[10, 12, 15, 18, 20, 22, 25], # Variable 1
[8, 11, 13, 16, 19, 21, 23], # Variable 2
[5, 7, 9, 11, 12, 14, 16] # Variable 3
])

matrice_corr_multiple = [Link](donnees_multiples)
# matrice_corr_multiple[i,j] = corrélation entre variable i et j

Tests Statistiques Simples


Test de normalité (Shapiro-Wilk)

from [Link] import shapiro

statistique, p_valeur = shapiro(donnees)


print(f"Statistique: {statistique:.4f}")
print(f"P-valeur: {p_valeur:.4f}")

if p_valeur > 0.05:


print("Les données suivent probablement une distribution normale")
else:
print("Les données ne suivent pas une distribution normale")
Test t (comparaison de moyennes)

from [Link] import ttest_ind

# Deux échantillons
echantillon1 = [Link]([20, 22, 18, 25, 19, 21])
echantillon2 = [Link]([18, 20, 17, 23, 18, 20])

stat_t, p_t = ttest_ind(echantillon1, echantillon2)


print(f"Statistique t: {stat_t:.4f}")
print(f"P-valeur: {p_t:.4f}")

if p_t > 0.05:


print("Les moyennes sont probablement égales")
else:
print("Les moyennes sont probablement différentes")

Exemple Complet : Analyse de Données


import numpy as np
import [Link] as ma
from [Link] import shapiro
import [Link] as plt

# Simuler des données de températures avec quelques valeurs manquantes


temperatures = [Link]([18.5, [Link], 22.3, 19.7, [Link], 25.1, 23.8, 20.2,

# Créer un tableau masqué


temp_masque = ma.masked_invalid(temperatures)

# Statistiques de base
print("=== ANALYSE DES TEMPÉRATURES ===")
print(f"Nombre de mesures: {len(temp_masque)}")
print(f"Mesures valides: {[Link](temp_masque)}")
print(f"Mesures manquantes: {len(temp_masque) - [Link](temp_masque)}")
print(f"Température moyenne: {temp_masque.mean():.1f}°C")
print(f"Température médiane: {[Link](temp_masque):.1f}°C")
print(f"Écart-type: {temp_masque.std():.1f}°C")
print(f"Min: {temp_masque.min():.1f}°C")
print(f"Max: {temp_masque.max():.1f}°C")

# Quartiles
Q1 = [Link](temp_masque.compressed(), 25)
Q3 = [Link](temp_masque.compressed(), 75)
print(f"Q1 (25%): {Q1:.1f}°C")
print(f"Q3 (75%): {Q3:.1f}°C")

# Détection d'outliers
IQR = Q3 - Q1
borne_outlier_inf = Q1 - 1.5 * IQR
borne_outlier_sup = Q3 + 1.5 * IQR
outliers = ma.masked_outside(temp_masque, borne_outlier_inf, borne_outlier_s
print(f"Outliers détectés: {[Link](outliers) - [Link](temp_masque)}")

# Test de normalité
donnees_valides = temp_masque.compressed()
if len(donnees_valides) >= 3:
stat_shapiro, p_shapiro = shapiro(donnees_valides)
print(f"Test de normalité (Shapiro-Wilk): p = {p_shapiro:.4f}")

# Créer un histogramme
[Link](figsize=(10, 6))
[Link](donnees_valides, bins=8, alpha=0.7, edgecolor='black')
[Link](temp_masque.mean(), color='red', linestyle='--', label=f'Moyenne
[Link]([Link](temp_masque), color='green', linestyle='--', label=f'M
[Link]('Température (°C)')
[Link]('Fréquence')
[Link]('Distribution des Températures')
[Link]()
[Link](True, alpha=0.3)
[Link]()

print("\n=== RÉSUMÉ ===")


print(f"Les températures varient de {temp_masque.min():.1f}°C à {temp_masque
print(f"La température moyenne est de {temp_masque.mean():.1f}°C")
if [Link](outliers) < [Link](temp_masque):
print("Attention: des valeurs extrêmes (outliers) ont été détectées")

Conseils Pratiques
Gestion des données manquantes

# Toujours vérifier les NaN


donnees = [Link]([1, 2, [Link], 4, 5])
if [Link]([Link](donnees)):
print("Attention: des valeurs NaN détectées")
# Utiliser un tableau masqué
donnees_masque = ma.masked_invalid(donnees)

Reproductibilité

# Toujours fixer la graine pour la reproductibilité


[Link](votre_nombre_secret)
# Vos analyses seront alors reproductibles

Visualisation

# Toujours visualiser vos données


import [Link] as plt

[Link](figsize=(12, 4))
# Histogramme
[Link](1, 2, 1)
[Link](donnees, bins=20, alpha=0.7)
[Link]('Distribution')

# Boxplot
[Link](1, 2, 2)
[Link](donnees)
[Link]('Boîte à moustaches')

plt.tight_layout()
[Link]()

Guide créé par Achraf BOUYALLOUL - Focus Statistiques et Probabilités

Vous aimerez peut-être aussi