Introduction aux statistiques en Python
Maggie Matsui
Content Developer, DataCamp
Distance moyenne entre chaque point de données et la moyenne des données
Distance moyenne entre chaque point de données et la moyenne des données
1. Soustrayez la moyenne de chaque point de données
dists = msleep['sleep_total'] -
np.mean(msleep['sleep_total'])
print(dists)
0 1.666265
1 6.566265
2 3.966265
3 4.466265
4 -6.433735
...
2. Mettez chaque distance au carré
sq_dists = dists ** 2
print(sq_dists)
0 2.776439
1 43.115837
2 15.731259
3 19.947524
4 41.392945
...
3. Faites la somme des distances au carré
sum_sq_dists = np.sum(sq_dists)
print(sum_sq_dists)
1624.065542
4. Divisez par le nombre de points de données - 1
variance = sum_sq_dists / (83 - 1)
print(variance)
19.805677
Utilisez np.var()
np.var(msleep['sleep_total'], ddof=1)
19.805677
Sans ddof=1
, la variance de la population est calculée au lieu de la variance de l’échantillon :
np.var(msleep['sleep_total'])
19.567055
np.sqrt(np.var(msleep['sleep_total'], ddof=1))
4.450357
np.std(msleep['sleep_total'], ddof=1)
4.450357
dists = msleep['sleep_total'] - np.mean(msleep['sleep_total'])
np.mean(np.abs(dists))
3.566701
Écart-type et écart moyen absolu
np.quantile(msleep['sleep_total'], 0.5)
10.1
$$
quantile de 0,5 = médiane
Quartiles :
np.quantile(msleep['sleep_total'], [0, 0.25, 0.5, 0.75, 1])
array([ 1.9 , 7.85, 10.1 , 13.75, 19.9 ])
import matplotlib.pyplot as plt
plt.boxplot(msleep['sleep_total'])
plt.show()
np.quantile(msleep['sleep_total'], [0, 0.2, 0.4, 0.6, 0.8, 1])
array([ 1.9 , 6.24, 9.48, 11.14, 14.4 , 19.9 ])
np.linspace(valeur de départ, valeur d'arrêt, nombre d'intervalles)
np.quantile(msleep['sleep_total'], np.linspace(0, 1, 5))
array([ 1.9 , 7.85, 10.1 , 13.75, 19.9 ])
Hauteur de la boîte dans un diagramme en boîte
np.quantile(msleep['sleep_total'], 0.75) - np.quantile(msleep['sleep_total'], 0.25)
5.9
from scipy.stats import iqr
iqr(msleep['sleep_total'])
5.9
Valeur aberrante : point de données très différent des autres
Comment savoir ce qu’est une différence substantielle ? Un point de données est une valeur aberrante si :
from scipy.stats import iqr iqr = iqr(msleep['bodywt'])
lower_threshold = np.quantile(msleep['bodywt'], 0.25) - 1.5 * iqr upper_threshold = np.quantile(msleep['bodywt'], 0.75) + 1.5 * iqr
msleep[(msleep['bodywt'] < lower_threshold) | (msleep['bodywt'] > upper_threshold)]
name vore sleep_total bodywt
4 Cow herbi 4.0 600.000
20 Asian elephant herbi 3.9 2547.000
22 Horse herbi 2.9 521.000
...
msleep['bodywt'].describe()
count 83.000000
mean 166.136349
std 786.839732
min 0.005000
25% 0.174000
50% 1.670000
75% 41.750000
max 6654.000000
Name: bodywt, dtype: float64
Introduction aux statistiques en Python