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
3 Réponses :
Vous pouvez utiliser une boucle for :
for col in complete_data:
print(complete_data[col].value_counts(), '\n')
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.
df[['Sex', 'Survived', 'Parch', 'Pclass', 'Sibsp', 'Embarked']].apply(pd.value_counts) This will give you back a df with value counts for each.
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'))