在 pandas 中使用 value_counts 函数与条件

3

我有一列包含约2万个值。我使用了以下Pandas函数来显示它们的计数:

weather_data["snowfall"].value_counts()

weather_data 是数据框架,snowfall 是其中的一列。

我的结果如下:

0.0     12683
M       7224
T       311
0.2     32
0.1     31
0.5     20
0.3     18
1.0     14
0.4     13

有没有一种方法:

  1. 仅显示单个变量或数字的计数

  2. 使用if条件来仅显示符合条件的值的计数?


2
  1. 是的。
  2. 是的。你需要更多地展示你已经尝试和研究过的内容。
- piRSquared
@piRSquared 感谢您回答“是”两个问题。现在,您能告诉我如何做吗? - prat_pad
1
我的意思是,你的问题描述不够具体,我无法回答。我可以提供一个示例,但这是你应该做的工作。考虑阅读这两篇关于如何提问的文章:http://stackoverflow.com/help/how-to-ask 和 http://stackoverflow.com/help/mcve - piRSquared
我真的不知道你想让我更具体地说些什么。我明白对于那些没有遇到同样问题的人来说,这可能听起来像胡言乱语,但我看不出问题在哪里。你能否提供一个例子或告诉我具体是什么问题? - prat_pad
3
我会尽可能直接地表达。Stackoverflow不是一个编程服务。它旨在为正在编码的人提供一个论坛,让他们向其他程序员提问。你所做的是没有展示出你自己先帮助解决问题,就直接提问。如果你阅读我提供的链接,就会更好地了解如何提问。这也应该为你提供一个框架,有助于你自己回答问题。 - piRSquared
2个回答

4

我会尽可能清晰地解释,但是没有像piRSquared建议您提供的完整示例。

value_counts的输出是一个Series,因此您可以从value_counts的索引中检索原始Series中的值。仅显示其中一个变量的结果就像切片您的系列一样:

my_value_count = weather_data["snowfall"].value_counts()
my_value_count.loc['0.0']
output: 
0.0     12683

如果您只想显示一组变量:

my_value_count.loc[my_value_count.index.isin(['0.0','0.2','0.1'])]
output: 
0.0     12683
0.2     32
0.1     31

由于您的值中包含MT,我怀疑其他值将被视为字符串而不是浮点数。否则,您可以使用以下方法:

my_value_count.loc[my_value_count.index < 0.4]
output:
0.0     12683
0.2     32
0.1     31
0.3     18

正是我所需要的。谢谢。 - prat_pad
@PratheerthPadman 不用谢。别忘了接受一个答案,以帮助未来可能遇到同样问题的用户!祝你有美好的一天。 - ysearka

0

使用if条件来显示仅满足条件的值的计数?

首先根据您想要的条件创建一个新列。然后,您可以使用groupbysum

例如,如果您只想计算某个列具有非空值的频率。在我的情况下,如果存在实际的completion_date非空值:

dataset['Has_actual_completion_date']  = np.where(dataset['ACTUAL_COMPLETION_DATE'].isnull(), 0, 1)
dataset['Mitigation_Plans_in_progress'] = dataset['Has_actual_completion_date'].groupby(dataset['HAZARD_ID']).transform('sum')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接