在 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
count
列 max
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() - 如何获取计数对象的值?