Skip to content

Cet article explique comment compter les valeurs dans un tableau ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ ou ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ qui rรฉpond ร  des conditions spรฉcifiques par colonne, par ligne et au total.

La mรฉthode ๐œโ€Œ๐จโ€Œ๐ฎโ€Œ๐งโ€Œ๐ญโ€Œ() de D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ et S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ , qui sera expliquรฉe plus tard, compte le nombre de valeurs non N๐šโ€ŒN .

Pour les mรฉthodes d’extraction de lignes qui rรฉpondent aux conditions et de comptage du nombre de valeurs uniques dans chaque colonne, reportez-vous aux articles suivants.

La version pandas utilisรฉe dans cet article est la suivante. Notez que les fonctionnalitรฉs peuvent varier selon les versions. Le D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ suivant est utilisรฉ comme exemple.

import pandas as pd print(pd.__version__) # 2.1.4 df = pd.read_csv('data/src/sample_pandas_normal.csv') print(df) # name age state point # 0 Alice 24 NY 64 # 1 Bob 42 CA 92 # 2 Charlie 18 CA 70 # 3 Dave 68 TX 70 # 4 Ellen 24 CA 88 # 5 Frank 30 NY 57 

Comment compter les valeurs avec des conditions

Le processus de comptage des valeurs qui rรฉpondent ร  des conditions spรฉcifiques est le suivant :

  1. ร‰valuez chaque valeur pour produire une valeur boolรฉenne D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ ou S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ , en utilisant des mรฉthodes telles que des opรฉrateurs de comparaison ou des accesseurs de chaรฎne.
  2. Utilisez la mรฉthode ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ() pour compter les valeurs T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ
    • D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ
      • Compteur par colonne : ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ()
      • Compteur par ligne : ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ(๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=1)
      • Comptez au total : ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ().๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ() ou ๐ฏโ€Œ๐šโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐žโ€Œ๐ฌโ€Œ.๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ()
    • S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ
      • Comptez au total : ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ()

D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ

Lorsque vous appliquez des opรฉrateurs de comparaison ร  un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ ou S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ , il tient compte de chaque valeur, ce qui gรฉnรจre une D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ ou S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ boolรฉen de la mรชme taille.

Les parenthรจses () sur le cรดtรฉ droit sont facultatives.

df_bool = (df == 'CA') print(df_bool) # name age state point # 0 False False False False # 1 False False True False # 2 False False True False # 3 False False False False # 4 False False True False # 5 False False False False 

ร‰tant donnรฉ que T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ est traitรฉ comme 1 et F๐šโ€Œ๐ฅโ€Œ๐ฌโ€Œ๐žโ€Œ comme 0 en Python, vous pouvez compter les valeurs qui remplissent les conditions ร  l’aide de la mรฉthode ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ() . Par dรฉfaut, elle compte par colonne et le paramรจtre ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=1 compte par ligne.

print(df_bool.sum()) # name 0 # age 0 # state 3 # point 0 # dtype: int64 print(df_bool.sum(axis=1)) # 0 0 # 1 1 # 2 1 # 3 0 # 4 1 # 5 0 # dtype: int64 

La mรฉthode ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ() de D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ renvoie un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ . L’appel de ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ() sur ce S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ donne le nombre total.

print(df_bool.sum().sum()) # 3 

Un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ peut รชtre converti en un tableau NumPy ( ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซ๐šโ€Œ๐ฒโ€Œ ) ร  l’aide de l’attribut ๐ฏโ€Œ๐šโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐žโ€Œ๐ฌโ€Œ .

La mรฉthode ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ() de ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ calcule par dรฉfaut la somme sur l’ensemble du tableau. Par consรฉquent, l’appel de ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ() sur l’attribut ๐ฏโ€Œ๐šโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐žโ€Œ๐ฌโ€Œ ( ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ ) rรฉcupรจre le nombre total de valeurs qui rรฉpondent ร  la condition.

print(df_bool.values) # [[False False False False] # [False False True False] # [False False True False] # [False False False False] # [False False True False] # [False False False False]] print(type(df_bool.values)) # <class 'numpy.ndarray'> print(df_bool.values.sum()) # 3 

Vous pouvez รฉcrire comme suit :

print((df == 'CA').sum()) # name 0 # age 0 # state 3 # point 0 # dtype: int64 print((df == 'CA').sum(axis=1)) # 0 0 # 1 1 # 2 1 # 3 0 # 4 1 # 5 0 # dtype: int64 print((df == 'CA').sum().sum()) # 3 print((df == 'CA').values.sum()) # 3 

Notez que l’exรฉcution d’opรฉrations de comparaison numรฉrique sur un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ avec des colonnes numรฉriques et de chaรฎne mixtes entraรฎnera une erreur. Les dรฉtails seront abordรฉs plus tard.

S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ

Considรฉrez le S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ suivant .

s = df['age'] print(s) # 0 24 # 1 42 # 2 18 # 3 68 # 4 24 # 5 30 # Name: age, dtype: int64 

La procรฉdure est la mรชme qu’avec D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ . ร‰tant donnรฉ que S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ est unidimensionnel, la mรฉthode ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ() renvoie le nombre total.

s_bool = (s < 25) print(s_bool) # 0 True # 1 False # 2 True # 3 False # 4 True # 5 False # Name: age, dtype: bool print(s_bool.sum()) # 3 print((s < 25).sum()) # 3 

Pour compter les valeurs qui remplissent une condition dans n’importe quelle ligne ou colonne d’un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ , specz la ligne ou la colonne ร  l’aide de [] , ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ[] , ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ[] et exรฉcuter le mรชme processus.

Conditions multiples (ET, OU, NON)

Pour combiner plusieurs conditions, placez chacune d’elles entre parenthรจses () et reliez-les ร  l’aide de l’opรฉrateur & pour AND ou de l’opรฉrateur | verser OU. L’opรฉrateur ~ ( NOT ) peut รฉgalement รชtre utilisรฉ.

print((df == 'CA') | (df == 70)) # name age state point # 0 False False False False # 1 False False True False # 2 False False True True # 3 False False False True # 4 False False True False # 5 False False False False 

print(~(df == 'CA')) # name age state point # 0 True True True True # 1 True True False True # 2 True True False True # 3 True True True True # 4 True True False True # 5 True True True True 

print((df['state'] == 'CA') & (df['age'] < 30)) # 0 False # 1 False # 2 True # 3 False # 4 True # 5 False # dtype: bool 

Notez que l’utilisation de ๐šโ€Œ๐งโ€Œ๐โ€Œ et ๐จโ€Œ๐ซโ€Œ au lieu de & et | , ou l’omission des parenthรจses, entraรฎnera une erreur.

Une fois qu’un boolรฉen D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ ou S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ est obtenu, vous pouvez compter les valeurs qui remplissent les conditions en utilisant la mรฉthode ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ() comme mentionnรฉ ci-dessus.

Spรฉcifier les conditions pour les valeurs numรฉriques

Comme vu dans les exemples prรฉcรฉdents, les opรฉrateurs de comparaison, tels que < , <= , > , >= , == , != , peuvent รชtre utilisรฉs pour les valeurs numรฉriques.

Cependant, sachez que l’application de ces ร  un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ qui inclut des colonnes de chaรฎne, lors de la comparaison avec des valeurs numรฉriques, entraรฎnera une erreur. Pour travailler spรฉcifiquement avec des colonnes numรฉriques, utilisez la mรฉthode ๐ฌโ€Œ๐žโ€Œ๐ฅโ€Œ๐žโ€Œ๐œโ€Œ๐ญโ€Œ_๐โ€Œ๐ญโ€Œ๐ฒโ€Œ๐ฉโ€Œ๐žโ€Œ๐ฌโ€Œ() .

# print(df < 65) # TypeError: '<' not supported between instances of 'str' and 'int' df_num = df.select_dtypes('number') print(df_num) # age point # 0 24 64 # 1 42 92 # 2 18 70 # 3 68 70 # 4 24 88 # 5 30 57 print((df_num < 65).sum()) # age 5 # point 2 # dtype: int64 print(((df_num > 35) & (df_num < 65)).sum()) # age 1 # point 2 # dtype: int64 

Spรฉcifier les conditions pour les chaรฎnes

Pour les opรฉrations de chaรฎne dans S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ , en plus de == et != , il existe des mรฉthodes supplรฉmentaires disponibles via l’accesseur de chaรฎne ( ๐ฌโ€Œ๐ญโ€Œ๐ซโ€Œ ) :

  • ๐ฌโ€Œ๐ญโ€Œ๐ซโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐ญโ€Œ๐šโ€Œ๐ขโ€Œ๐งโ€Œ๐ฌโ€Œ() : Vรฉrifie si chaque chaรฎne contient une sous-chaรฎne spรฉcifique
  • ๐ฌโ€Œ๐ญโ€Œ๐ซโ€Œ.๐žโ€Œ๐งโ€Œ๐โ€Œ๐ฌโ€Œ๐ฐโ€Œ๐ขโ€Œ๐ญโ€Œ๐กโ€Œ() : Vรฉrifie si chaque chaรฎne se termine par une sous-chaรฎne spรฉcifique
  • ๐ฌโ€Œ๐ญโ€Œ๐ซโ€Œ.๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐ซโ€Œ๐ญโ€Œ๐ฌโ€Œ๐ฐโ€Œ๐ขโ€Œ๐ญโ€Œ๐กโ€Œ() : Vรฉrifie si chaque chaรฎne commence par une sous-chaรฎne spรฉcifique.
  • ๐ฌโ€Œ๐ญโ€Œ๐ซโ€Œ.๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐œโ€Œ๐กโ€Œ() : Vรฉrifie chaque chaรฎne par rapport ร  un modรจle d’expression rรฉguliรจre (regex)

Notez que l’accesseur ๐ฌโ€Œ๐ญโ€Œ๐ซโ€Œ est spรฉcifique ร  S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ et indisponible pour D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ .

df_str = df[['name', 'state']] print(df_str) # name state # 0 Alice NY # 1 Bob CA # 2 Charlie CA # 3 Dave TX # 4 Ellen CA # 5 Frank NY print((df_str == 'NY').sum()) # name 0 # state 2 # dtype: int64 print(df_str['name'].str.endswith('e')) # 0 True # 1 False # 2 True # 3 True # 4 False # 5 False # Name: name, dtype: bool print(df_str['name'].str.endswith('e').sum()) # 3 

Consultez l’article suivant pour savoir comment extraire des lignes ร  l’aide de l’accesseur ๐ฌโ€Œ๐ญโ€Œ๐ซโ€Œ .

Comptez les valeurs N๐šโ€ŒN et non- N๐šโ€ŒN

ร€ titre d’exemple, saisissez les donnรฉes sur les survivants du Titanic.

df_titanic = pd.read_csv('data/src/titanic_train.csv') print(df_titanic.head()) # PassengerId Survived Pclass \ # 0 1 0 3  # 1 2 1 1  # 2 3 1 3  # 3 4 1 1  # 4 5 0 3  #  # Name Sex Age SibSp \ # 0 Braund, Mr. Owen Harris male 22.0 1  # 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1  # 2 Heikkinen, Miss. Laina female 26.0 0  # 3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1  # 4 Allen, Mr. William Henry male 35.0 0  #  # Parch Ticket Fare Cabin Embarked  # 0 0 A/5 21171 7.2500 NaN S  # 1 0 PC 17599 71.2833 C85 C  # 2 0 STON/O2. 3101282 7.9250 NaN S  # 3 0 113803 53.1000 C123 S  # 4 0 373450 8.0500 NaN S  

Consultez les articles suivants pour obtenir des informations sur la suppression, le remplacement et la dรฉtection de N๐šโ€ŒN .

Compter les valeurs N๐šโ€ŒN

Pour compter N๐šโ€ŒN valeurs, utilisez la mรฉthode ๐ขโ€Œ๐ฌโ€Œ๐งโ€Œ๐ฎโ€Œ๐ฅโ€Œ๐ฅโ€Œ() , qui vรฉrifie si chaque valeur est N๐šโ€ŒN . Vous pouvez utiliser ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ() comme dans les exemples prรฉcรฉdents.

print(df_titanic.isnull().head()) # PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket \ # 0 False False False False False False False False False  # 1 False False False False False False False False False  # 2 False False False False False False False False False  # 3 False False False False False False False False False  # 4 False False False False False False False False False  #  # Fare Cabin Embarked  # 0 False True False  # 1 False False False  # 2 False True False  # 3 False False False  # 4 False True False  print(df_titanic.isnull().sum()) # PassengerId 0 # Survived 0 # Pclass 0 # Name 0 # Sex 0 # Age 177 # SibSp 0 # Parch 0 # Ticket 0 # Fare 0 # Cabin 687 # Embarked 2 # dtype: int64 print(df_titanic.isnull().sum(axis=1).head()) # 0 1 # 1 0 # 2 1 # 3 0 # 4 1 # dtype: int64 print(df_titanic.isnull().values.sum()) # 866 

Compter les valeurs non N๐šโ€ŒN  : ๐œโ€Œ๐จโ€Œ๐ฎโ€Œ๐งโ€Œ๐ญโ€Œ()

Pour compter les valeurs non N๐šโ€ŒN , utilisez la mรฉthode ๐œโ€Œ๐จโ€Œ๐ฎโ€Œ๐งโ€Œ๐ญโ€Œ() . Similaire ร  ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ() , elle compte par colonne par dรฉfaut, et le paramรจtre ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=1 compte par ligne.

print(df_titanic.count()) # PassengerId 891 # Survived 891 # Pclass 891 # Name 891 # Sex 891 # Age 714 # SibSp 891 # Parch 891 # Ticket 891 # Fare 891 # Cabin 204 # Embarked 889 # dtype: int64 print(df_titanic.count(axis=1).head()) # 0 11 # 1 12 # 2 11 # 3 12 # 4 11 # dtype: int64 print(df_titanic.count().sum()) # 9826 print(df_titanic['Age'].count()) # 714 

Pour vรฉrifier simplement le nombre de valeurs non N๐šโ€ŒN , il peut รชtre affichรฉ ร  l’aide de la mรฉthode ๐ขโ€Œ๐งโ€Œ๐Ÿโ€Œ๐จโ€Œ() .

df_titanic.info() # <class 'pandas.core.frame.DataFrame'> # RangeIndex: 891 entries, 0 to 890 # Data columns (total 12 columns): # # Column Non-Null Count Dtype  # --- ------ -------------- -----  # 0 PassengerId 891 non-null int64  # 1 Survived 891 non-null int64  # 2 Pclass 891 non-null int64  # 3 Name 891 non-null object  # 4 Sex 891 non-null object  # 5 Age 714 non-null float64 # 6 SibSp 891 non-null int64  # 7 Parch 891 non-null int64  # 8 Ticket 891 non-null object  # 9 Fare 891 non-null float64 # 10 Cabin 204 non-null object  # 11 Embarked 889 non-null object  # dtypes: float64(2), int64(5), object(5) # memory usage: 83.7+ KB