Statistiques descriptives avec Pandas
Les statistiques descriptives servent à résumer et décrire les caractéristiques de base des données. Pandas fournit de riches fonctions statistiques pour obtenir rapidement la distribution globale des données.
Fonctions statistiques de base
Exemple
import pandas as pd
import numpy as np
# Créer des données d'exemple
df = pd.DataFrame({
"Âge": [25, 30, 28, 35, 22, 40, 38, 45, 29, 31],
"Salaire": [12000, 15000, 11000, 18000, 9000, 20000, 17000, 22000, 12500, 14000],
"Performance": [85, 92, 78, 88, 65, 95, 82, 90, 75, 89]
})
print("=== Data Overview ===")
print(f"Forme des données : {df.shape}")
print(f"\nStatistiques de base :")
print(df.describe())
import numpy as np
# Créer des données d'exemple
df = pd.DataFrame({
"Âge": [25, 30, 28, 35, 22, 40, 38, 45, 29, 31],
"Salaire": [12000, 15000, 11000, 18000, 9000, 20000, 17000, 22000, 12500, 14000],
"Performance": [85, 92, 78, 88, 65, 95, 82, 90, 75, 89]
})
print("=== Data Overview ===")
print(f"Forme des données : {df.shape}")
print(f"\nStatistiques de base :")
print(df.describe())
Mesures statistiques courantes
| Fonction | Description | Exemple |
|---|---|---|
count() |
Nombre de valeurs non nulles | df["年龄"].count() |
sum() |
Sum | df["薪资"].sum() |
mean() |
Moyenne | df["年龄"].mean() |
median() |
Médiane | df["年龄"].median() |
std() |
Écart-type | df["绩效"].std() |
var() |
Variance | df["绩效"].var() |
min() / max() |
Minimum/Maximum | df["年龄"].min() |
quantile() |
Quantile | df["薪资"].quantile(0.25) |
Calcul des quantiles
Exemple
import pandas as pd
import numpy as np
s = pd.Series(range(1, 101)) # 1 à 100
print("Divers quantiles :")
print(f"0% (min) : {s.quantile(0)}")
print(f"25% : {s.quantile(0.25)}")
print(f"50% (médiane): {s.quantile(0.50)}")
print(f"75%: {s.quantile(0.75)}")
print(f"100% (max): {s.quantile(1)}")
print()
# Calculer plusieurs quantiles en même temps
print("Quantiles par lot:")
print(s.quantile([0.1, 0.2, 0.5, 0.8, 0.9]))
import numpy as np
s = pd.Series(range(1, 101)) # 1 à 100
print("Divers quantiles :")
print(f"0% (min) : {s.quantile(0)}")
print(f"25% : {s.quantile(0.25)}")
print(f"50% (médiane): {s.quantile(0.50)}")
print(f"75%: {s.quantile(0.75)}")
print(f"100% (max): {s.quantile(1)}")
print()
# Calculer plusieurs quantiles en même temps
print("Quantiles par lot:")
print(s.quantile([0.1, 0.2, 0.5, 0.8, 0.9]))
describe Résumé
describe()Fournit un résumé statistique complet des colonnes numériques du jeu de données.
Exemple
import pandas as pd
df = pd.DataFrame({
"Âge": [25, 30, 28, 35],
"Salaire": [12000, 15000, 11000, 18000],
"Ville": ["Beijing", "Shanghai", "Guangzhou", "Shenzhen"]
})
print("Statistiques des colonnes numériques:")
print(df.describe())
print()
print("Inclure toutes les colonnes:")
print(df.describe(include="all"))
df = pd.DataFrame({
"Âge": [25, 30, 28, 35],
"Salaire": [12000, 15000, 11000, 18000],
"Ville": ["Beijing", "Shanghai", "Guangzhou", "Shenzhen"]
})
print("Statistiques des colonnes numériques:")
print(df.describe())
print()
print("Inclure toutes les colonnes:")
print(df.describe(include="all"))
Coefficient de corrélation et covariance
Exemple
import pandas as pd
import numpy as np
df = pd.DataFrame({
"Âge": [25, 30, 28, 35, 22],
"Salaire": [12000, 15000, 11000, 18000, 9000],
"Performance": [85, 92, 78, 88, 65]
})
print("Matrice des coefficients de corrélation :")
print(df.corr())
print()
# Corrélation avec une colonne spécifique
print("Corrélation avec le salaire :")
print(df.corr()["Salary"])
import numpy as np
df = pd.DataFrame({
"Âge": [25, 30, 28, 35, 22],
"Salaire": [12000, 15000, 11000, 18000, 9000],
"Performance": [85, 92, 78, 88, 65]
})
print("Matrice des coefficients de corrélation :")
print(df.corr())
print()
# Corrélation avec une colonne spécifique
print("Corrélation avec le salaire :")
print(df.corr()["Salary"])
Le coefficient de corrélation varie de -1 à 1. Plus il est proche de 1, plus la corrélation positive est forte ; plus il est proche de -1, plus la corrélation négative est forte ; proche de 0 indique aucune corrélation.
Statistiques avancées
Exemple
import pandas as pd
import numpy as np
s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# Asymétrie (mesure l'asymétrie d'une distribution)
print(f"Asymétrie : {s.skew()}")
# Kurtosis (mesure le caractère pointu d'une distribution)
print(f"Kurtosis : {s.kurtosis()}")
print()
# Statistiques cumulatives
s = pd.Series([1, 2, 3, 4, 5])
print("Somme cumulée :")
print(s.cumsum())
print()
print("Maximum cumulé :")
print(s.cummax())
import numpy as np
s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# Asymétrie (mesure l'asymétrie d'une distribution)
print(f"Asymétrie : {s.skew()}")
# Kurtosis (mesure le caractère pointu d'une distribution)
print(f"Kurtosis : {s.kurtosis()}")
print()
# Statistiques cumulatives
s = pd.Series([1, 2, 3, 4, 5])
print("Somme cumulée :")
print(s.cumsum())
print()
print("Maximum cumulé :")
print(s.cummax())