web-dev-qa-db-fra.com

affiche les valeurs uniques dans chaque colonne d'un dataframe de pandas

J'ai un dataframe (df) et je veux imprimer les valeurs uniques de chaque colonne du dataframe.

Je dois substituer la variable (i) [nom de la colonne] à l'instruction print

column_list = df.columns.values.tolist()
for column_name in column_list:
    print(df."[column_name]".unique()

Mettre à jour

Quand j’utilise ceci: Je reçois "_Ne sais pas EOF Analyse" sans détails supplémentaires.

column_list = sorted_data.columns.values.tolist()
for column_name in column_list:
      print(sorted_data[column_name].unique()

Quelle est la différence entre votre syntaxe YS-L (ci-dessus) et celle ci-dessous:

for column_name in sorted_data:
      print(column_name)
      s = sorted_data[column_name].unique()
      for i in s:
        print(str(i))
9
yoshiserry

Cela peut être écrit de manière plus concise comme ceci:

for col in df:
    print df[col].unique()

En règle générale, vous pouvez accéder à une colonne du DataFrame via indexing à l'aide de l'opérateur [] (par exemple df['col']) ou via attribut (par exemple df.col).

L'accès aux attributs rend le code un peu plus concis lorsque le nom de la colonne cible est connu à l'avance, mais présente plusieurs inconvénients. Par exemple, il ne fonctionne pas lorsque le nom de la colonne n'est pas un identifiant Python valide (par exemple, df.123), attribut intégré DataFrame (par exemple, df.index). D'autre part, la notation [] devrait toujours fonctionner.

24
YS-L

Si vous essayez de créer plusieurs images séparées, comme indiqué dans vos commentaires, créez un dictionnaire d'images:

df_dict = dict(Zip([i for i in df.columns] , [pd.DataFrame(df[i].unique(), columns=[i]) for i in df.columns]))

Ensuite, vous pouvez accéder facilement à n’importe quel cadre de données en utilisant le nom de la colonne:

df_dict[column name]
2
A.Kot

Nous pouvons rendre cela encore plus concis: 

df.describe(include='all').loc['unique', :]

La description des pandas donne quelques statistiques clés sur chaque colonne, mais nous pouvons simplement saisir la statistique «unique» et en rester là. 

Notez que cela donnera un nombre unique de NaN pour les colonnes numériques - si vous souhaitez également inclure ces colonnes, vous pouvez procéder de la manière suivante: 

df.astype('object').describe(include='all').loc['unique', :]
0
mgoldwasser
cu = []
i = []
for cn in card.columns[:7]:
    cu.append(card[cn].unique())
    i.append(cn)

pd.DataFrame( cu, index=i).T
0
bhavin