Exemple de comment compter le nombre d'occurrences sur les éléments d'une colonne avec une data frame pandas:
Nombre d'occurrences avec la fonction value_counts()
Soit par exemple le fichier de données suivant 'default of credit card clients Data Set" que l'on peut télécharger ici
>>> import pandas as pd
>>> df = pd.read_excel('default of credit card clients.xls', header=1)
Pour obtenir le nombre de "default payment"ou pas on peut utiliser value_counts():
>>> df['default payment next month'].value_counts()
0 23364
1 6636
Name: default payment next month, dtype: int64
Autre exemple avec le sexe:
>>> df['SEX'].value_counts()
2 18112
1 11888
Name: SEX, dtype: int64
Exemple avec l'age:
>>> df['AGE'].value_counts()
29 1605
27 1477
28 1409
30 1395
26 1256
31 1217
25 1186
34 1162
32 1158
33 1146
24 1127
35 1113
36 1108
37 1041
39 954
38 944
23 931
40 870
41 824
42 794
44 700
43 670
45 617
46 570
22 560
47 501
48 466
49 452
50 411
51 340
53 325
52 304
54 247
55 209
56 178
58 122
57 122
59 83
60 67
21 67
61 56
62 44
63 31
64 31
66 25
65 24
67 16
69 15
70 10
68 5
73 4
71 3
72 3
75 3
74 1
79 1
Name: AGE, dtype: int64
On peut aussi définir un nombre d'intervalles:
>>> df['AGE'].value_counts(bins=10)
26.800 8261
32.600 6514
20.942 5127
38.400 4812
44.200 3017
50.000 1425
55.800 628
61.600 171
67.400 40
73.200 5
et même personnaliser la taille des intervalles:
Name: AGE, dtype: int64
>>> df['AGE'].value_counts(bins=[0,10,20,25,30,35,40,60,80])
40 8002
25 7142
30 5796
35 4917
20 3871
60 272
10 0
0 0
Name: AGE, dtype: int64
Colonne avec des données manquantes
On peut aussi ajouter des données manquantes nan:
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.read_excel('default of credit card clients.xls', header=1)
>>> df.iloc[[2,7,4,99,10,130],:] = np.nan
Si on applique value_counts() on voit que ces données manquantes sont automatiquement écartées:
>>> df['SEX'].value_counts()
2.0 18108
1.0 11886
Name: SEX, dtype: int64
Pour afficher le nombre de données manquantes on peut ajouter dropna=False:
>>> df['SEX'].value_counts(dropna=False)
2.0 18108
1.0 11886
NaN 6
Name: SEX, dtype: int64
Références
Liens | Site |
---|---|
value_counts() | pandas doc |
count the frequency that a value occurs in a dataframe column | stackoverflow |
pandas.DataFrame.count | pandas doc |