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!
3 Réponses :
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()
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.
Soit pour une valeur spécifique:
np.unique(df.values, return_counts=True)
soit pour tous:
(df.values == 2).sum()
Vous pouvez également essayer d'utiliser Counter:
from collections import Counter print(pd.DataFrame(Counter(df.values.flatten()), index=['Count']).T)
(df.values == 2) .sum ()?C'est embarrassant. Voulez-vous répondre à cela pour que je puisse le marquer comme une solution?