Comment compter le nombre de valeurs non-NaN dans chaque ligne d'une Dataframe pandas ?

Published: 21 septembre 2023

Tags: Python; Pandas; Dataframe;

DMCA.com Protection Status

Compter le nombre de valeurs non-NaN dans chaque ligne d'un DataFrame pandas peut facilement être fait en utilisant la fonction count(). Exemple :

Étude de cas

import pandas as pd
import numpy as np

np.random.seed(42)

data = np.random.uniform(10,80, size=(4,6))

n = 15
index = np.random.choice(data.size, n, replace=False)

data.ravel()[index] = np.nan

df = pd.DataFrame(data,columns=['2023-02-01','2023-02-02','2023-02-03','2023-02-04','2023-02-05','2023-02-06'])

Sortie

   2023-02-01  2023-02-02  2023-02-03  2023-02-04  2023-02-05  2023-02-06
0         NaN         NaN   61.239576         NaN   20.921305         NaN
1   14.065853         NaN   52.078051         NaN         NaN    77.89369
2         NaN         NaN   22.727748         NaN         NaN    46.73295
3   40.236151    30.38604         NaN         NaN         NaN         NaN

Comptez le nombre de valeurs non-NaN dans chaque ligne.

Pour utiliser la fonction count() de pandas, il suffit de passer votre DataFrame en argument et la fonction count() renverra le nombre de valeurs non-NaN pour chaque ligne:

res = df.count(axis=1)

print(res)

Sortie

0    2
1    3
2    2
3    2
dtype: int64

La fonction count renvoie une série pandas :

type(res)

Ouput

pandas.core.series.Series

Obtenez les valeurs :

res.values

Output

array([2, 3, 2, 2])

Compter uniquement pour des colonnes spécifiques

Cela peut être affiné davantage en incluant un paramètre pour ne compter que des colonnes spécifiques dans le compte. Par exemple, si vous souhaitez uniquement compter les colonnes a et b, vous pouvez utiliser le code suivant :

df[['2023-02-01','2023-02-02']].count(axis=1)

output

0    0
1    1
2    0
3    2
dtype: int64

Références