在 Pandas value_counts() 中提取值

Posted

技术标签:

【中文标题】在 Pandas value_counts() 中提取值【英文标题】:Extract values in Pandas value_counts() 【发布时间】:2016-06-02 02:35:46 【问题描述】:

假设我们使用了 pandas dataframe[column].value_counts() 输出:

 apple   5 
 sausage 2
 banana  2
 cheese  1

如何按照上面显示的从最大值到最小值的顺序提取值?

例如:[apple,sausage,banana,cheese]

【问题讨论】:

您能提供一个MCVE吗?您使用的是dataframe.value_counts() 还是series.value_counts()?你有什么数据类型的输出? 请注意,value_counts() 的输出是一个系列,因此可以使用任何系列方法,但通常您只需将其保存为原样,这取决于您以后要使用它做什么。 【参考方案1】:

提取值的最佳方法是执行以下操作

json.loads(dataframe[column].value_counts().to_json())

这将返回一个字典,您可以像使用任何其他字典一样使用它。使用值或键。

 "apple": 5, "sausage": 2, "banana": 2, "cheese": 1

【讨论】:

sorted(dict, key=lambda key: -dict[key])【参考方案2】:

如果有人在 cmets 中错过了,试试这个:

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

【讨论】:

【参考方案3】:
#!/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]

【讨论】:

【参考方案4】:

首先,如果尚未按这种方式排序,则必须先将 dataframe countmax min min 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']

【讨论】:

【参考方案5】:

试试这个:

dataframe[column].value_counts().index.tolist()
['apple', 'sausage', 'banana', 'cheese']

【讨论】:

太棒了!另一方面,当您打印 dataframe[column].value_counts() 时,您会在底部获得一个 dtype。有没有办法不得到那个? 试试:dataframe[column].value_counts().to_frame() 一个选项.value_counts().index.value_counts().values

以上是关于在 Pandas value_counts() 中提取值的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pandas Value_Counts 和 matplotlib

SQL 中 Python Pandas value_counts 的等价物是啥?

9个value_counts()的小技巧,提高Pandas 数据分析效率

Python Pandas 计算两列的 value_counts 并使用 groupby

Python Pandas 使用 dataframe.stack().value_counts() - 如何获取计数对象的值?

根据 pandas 数据框中的条件将 value_counts 与 groupby 函数一起使用并插入新列