【问题标题】:Dividing two pandas values将两个熊猫值相除
【发布时间】:2016-04-26 15:18:29
【问题描述】:

我有来自以下命令的以下数据集

df.ab.value_counts()

Out[154]:

0    31196
1    18804
dtype: int64

我想从总计数中找出 1 的分数。所以基本上是18804/50000

我执行以下操作:

(df.ab.value_counts()[1])/(df.ab.count())

Out[146]:

0

如您所见,它给了我零,而它应该是 0.3768 (18804/50000)

知道为什么吗?

编辑二:

知道如何绘制这两个值 0 和 1 及其计数的条形图吗?

【问题讨论】:

  • 你在 python 2 上吗?如果是,那么在尝试使用 '/' 时你将得到 0(python 2 中的整数除法)。尝试从 future 导入除法然后您的除法代码。你总是会得到一个浮点除法。

标签: python pandas


【解决方案1】:

我认为您需要将转换添加到 float:

print (df.ab.value_counts()[1])/float(df.ab.count())
0.37608

print 18804/50000
0
print 18804/float(50000)
0.37608
print float(18804)/50000
0.37608

【讨论】:

  • 我什至做了 df.ab.value_counts()[1])/(df.ab.count()*1.0) 也没有用
  • 没有你的计数适用于浮点数。但是如果我使用 1.0 而不是 float 它不起作用
  • 刚刚编辑了一个关于条形图的后续问题。你能帮忙吗?
  • 好的,请稍等。
  • 你得到箱线图了吗
【解决方案2】:

你可以更轻松

df.ab.value_counts(normalize=True)

【讨论】:

    【解决方案3】:
    from __future__ import division
    (df.ab.value_counts()[1])/(df.ab.count())  ###should give float value 0.3768
    

    没有测试过,希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2018-01-24
      • 1970-01-01
      • 2020-04-06
      • 2021-04-10
      • 1970-01-01
      • 2019-06-21
      • 2015-10-20
      • 2018-05-28
      • 2018-04-23
      相关资源
      最近更新 更多