Comment obtenir des décomptes de valeur pour plusieurs colonnes à la fois dans Pandas DataFrame?
Donné une Pandas DataFrame qui a plusieurs colonnes avec catégorique valeurs (0 ou 1), est-il possible de facilement obtenir le value_counts pour chaque colonne en même temps?
Par exemple, supposons que je générer un DataFrame comme suit:
import numpy as np
import pandas as pd
np.random.seed(0)
df = pd.DataFrame(np.random.randint(0, 2, (10, 4)), columns=list('abcd'))
Je peux obtenir un DataFrame comme ceci:
a b c d
0 0 1 1 0
1 1 1 1 1
2 1 1 1 0
3 0 1 0 0
4 0 0 0 1
5 0 1 1 0
6 0 1 1 1
7 1 0 1 0
8 1 0 1 1
9 0 1 1 0
Comment puis-je facilement obtenir la valeur des chiffres pour chaque colonne et obtenir de la commodément?
a b c d
0 6 3 2 6
1 4 7 8 4
Ma solution actuelle est:
pieces = []
for col in df.columns:
tmp_series = df[col].value_counts()
tmp_series.name = col
pieces.append(tmp_series)
df_value_counts = pd.concat(pieces, axis=1)
Mais il doit y avoir un moyen plus simple, comme d'empilage, de pivot, ou groupby?
source d'informationauteur Xin
Vous devez vous connecter pour publier un commentaire.
Appelez simplement
et passer
mp.De la série.value_counts
:Il est en fait assez intéressant et avancée de la façon de faire de ce problème avec
crosstab
etmelt
On peut d'abord faire fondre le DataFrame
Et ensuite utiliser le tableau croisé de la fonction pour compter les valeurs de chaque colonne. Cela préserve le type de données que les services de renseignements qui ne serait pas le cas pour la mesure actuellement sélectionnée réponse:
Ou dans une ligne, qui s'étend de la colonne des noms de noms de paramètre avec
**
(ce qui est avancé)Aussi,
value_counts
est maintenant une fonction de haut niveau. Sorte que vous pouvez simplifier sélectionné de répondre à la suivante: