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
Liens | Site |
---|---|
pandas.DataFrame.count | pandas.pydata.org |
How to count the number of NaN in a pandas dataframe column ? | moonbooks.org |
How to randomly insert NaN in a matrix with numpy in python ? | moonbooks.org |