1
votes

Compter le nombre de valeurs dans un DataFrame entier

J'ai actuellement DataFrame avec 50 colonnes et environ 50000 lignes. J'essaie de trouver le nombre total de fois qu'une valeur (par exemple 2) apparaît dans l'ensemble du DataFrame.

Le DataFrame ne contient que des valeurs comprises entre 0 et 7. Je suis capable d'exécuter le code pour une seule colonne en utilisant ceci:

val    no.
7.0    165
3.0    127
5.0     118
6.0     112
2.0      98
4.0      88
1.0      64
0.0      21
Name: col1, dtype: int64

J'ai ensuite tenté de créer une boucle for comme celle illustrée ci-dessous:

for cols in df:
    print(df[cols].value_counts())

Cela fonctionne, mais cela s'imprime les résultats individuels pour chaque colonne.

Au lieu de diviser les résultats par colonne, j'essaie d'obtenir quelque chose comme ce qui est montré ci-dessous, mais pour toutes les colonnes du DataFrame combinées et pas seulement 1 colonne.

print(df['col1'].value_counts())

Toute aide serait grandement appréciée!


2 commentaires

(df.values ​​== 2) .sum () ?


C'est embarrassant. Voulez-vous répondre à cela pour que je puisse le marquer comme une solution?


3 Réponses :


2
votes

Vous devrez peut-être vérifier avec la 1ère stack puis value_counts et maintenant vous pouvez sélectionner ce dont vous avez besoin dans l'index

df.stack().value_counts()


1 commentaires

C'est super intéressant. Je trouve que pour les colonnes d'objets, et un grand compteur DataFrame est beaucoup plus rapide voir ça , mais pour les colonnes entières, stack peut être 2x plus rapide.



4
votes

Soit pour une valeur spécifique:

np.unique(df.values, return_counts=True)

soit pour tous:

(df.values == 2).sum()


0 commentaires

2
votes

Vous pouvez également essayer d'utiliser Counter:

from collections import Counter

print(pd.DataFrame(Counter(df.values.flatten()), index=['Count']).T)


0 commentaires