3
votes

Comment imprimer les valeurs value_count () de différentes colonnes ensemble?

J'ai un ensemble de données qui a différentes colonnes. J'ai appliqué value_counts () afin d'imprimer les décomptes de valeurs uniques. J'ai appliqué la même chose pour 6 colonnes différentes comme suit:

complete_data['Sex'].value_counts()
complete_data['Survived'].value_counts()
complete_data['Parch'].value_counts()
complete_data['Pclass'].value_counts()
complete_data['SibSp'].value_counts()
complete_data['Embarked'].value_counts() 

Je voudrais savoir s'il existe un moyen dans lequel toutes les différentes colonnes (Sexe, survécu, etc.) peuvent toutes être combinées en une seule ligne de code plutôt que 6 lignes différentes comme ci-dessus.

Merci


0 commentaires

3 Réponses :


3
votes

Vous pouvez utiliser une boucle for :

for col in complete_data:
    print(complete_data[col].value_counts(), '\n')


1 commentaires

Je pense que la boucle ici est une bonne idée, en stockant le résultat pour chacun dans un dictionnaire où la clé est la colonne. La version apply (que j'aime), conduira à de nombreuses cellules NaN , car la plupart des colonnes ne partageront pas les mêmes valeurs.



3
votes
df[['Sex', 'Survived', 'Parch', 'Pclass', 'Sibsp', 'Embarked']].apply(pd.value_counts)
This will give you back a df with value counts for each. 

0 commentaires

1
votes

Supposons le DataFrame source comme suit:

   A  B  C  D
0  2  1  0  1
1  1  1  1  1
2  0  1  1  1
3  0  1  0  1
4  0  0  1  0
5  1  2  0  0
6  1  0  2  1
7  1  0  1  1

Ensuite, pour compter value_counts pour toutes les colonnes, vous pouvez appliquer value_counts au DataFrame, en fait à toutes les colonnes:

df.apply(pd.Series.value_counts).fillna(0, downcast='infer')

Pour mes données source, le résultat est:

df = pd.DataFrame(data=[[5, 5, 2, 1], [0, 2, 6, 7], [6, 1, 4, 6],
    [7, 0, 7, 3], [0, 3, 1, 2], [1, 5, 6, 0]], columns=list('ABCD'))


0 commentaires