web-dev-qa-db-fra.com

Extraire les valeurs dans Pandas value_counts ()

Supposons que nous avons utilisé dataframe[column].value_counts() de pandas qui fournit:

 Apple   5 
 sausage 2
 banana  2
 cheese  1

Comment en extrayez-vous les valeurs dans l'ordre indiqué ci-dessus, par ex. max à min? [Apple,sausage,banana,cheese]

48
JamesButterlips

Essaye ça:

dataframe[column].value_counts().index.tolist()
['Apple', 'sausage', 'banana', 'cheese']
72
Mike Müller
#!/usr/bin/env python

import pandas as pd

# Make example dataframe
df = pd.DataFrame([(1, 'Germany'),
                   (2, 'France'),
                   (3, 'Indonesia'),
                   (4, 'France'),
                   (5, 'France'),
                   (6, 'Germany'),
                   (7, 'UK'),
                   ],
                  columns=['groupid', 'country'],
                  index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])

# What you're looking for
values = df['country'].value_counts().keys().tolist()
counts = df['country'].value_counts().tolist()

Maintenant, print(df['country'].value_counts()) donne:

France       3
Germany      2
UK           1
Indonesia    1

et print(values) donne:

['France', 'Germany', 'UK', 'Indonesia']

et print(counts) donne:

[3, 2, 1, 1]
24
Martin Thoma

Si quelqu'un l'a manqué dans les commentaires, essayez ceci:

dataframe[column].value_counts().to_frame()
14
Sawant

Tout d'abord, vous devez sort la dataframe par la count colonne max à min si elle n'est pas déjà triée de cette façon. Dans votre message, il est déjà dans le bon ordre mais je vais sort le faire quand même:

dataframe.sort_index(by='count', ascending=[False])
    col     count
0   Apple   5
1   sausage 2
2   banana  2
3   cheese  1 

Vous pouvez ensuite sortir la colonne col dans une liste:

dataframe['col'].tolist()
['Apple', 'sausage', 'banana', 'cheese']
1
Joe T. Boka