web-dev-qa-db-ja.com

Pandas value_counts()の値を抽出します

パンダのdataframe[column].value_counts()を使用して、次を出力するとします。

 Apple   5 
 sausage 2
 banana  2
 cheese  1

上記の順序でこれから値をどのように抽出しますか?最大から最小? [Apple,sausage,banana,cheese]

48
JamesButterlips

これを試して:

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()

現在、print(df['country'].value_counts())は以下を提供します。

France       3
Germany      2
UK           1
Indonesia    1

およびprint(values)は以下を提供します。

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

およびprint(counts)は以下を提供します。

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

誰かがコメントでそれを見逃した場合、これを試してください:

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

最初にsort the dataframeを[count列ごとにmaxからminに並べ替える必要があります。あなたの投稿では、すでに正しい順序になっていますが、とにかくsortします:

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

次に、col列をリストに出力できます。

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