【问题标题】:Pandas groupby size "count" intermittent under-countPandas groupby 大小“计数”间歇性计数不足
【发布时间】:2013-01-01 10:53:03
【问题描述】:

为什么我得到不一致的组大小“计数”?
我正在使用 Pandas 10.0,将 600 万行数据集缩减为 400k groupby:

In [16]: df.groupby('Z ID').size()[470009:470010]
Out[16]:
Z ID
994555          6

In [14]: df[df['Z ID'] == 994555].groupby('Z ID').size() 
Out[14]:
Z ID
994555          9

当我查看原始数据时,有 9 项。

编辑:原始数据 完整的数据集是 600 万条记录。 Pandas size() 对小家伙很有效。

            FilterDate           Z ID   AR Code AA Code
48349    12/1/2007..2/28/2009    994555  377     202
151060   2/1/2008..4/30/2009     994555  377     202
204179   3/1/2008..5/31/2009     994555  377     202
244504   4/1/2008..6/30/2009     994555  377     202
302728   5/1/2008..7/31/2009     994555  377     202
365780   6/1/2008..8/31/2009     994555  377     202
431555   7/1/2008..9/30/2009     994555  377     202
499234   8/1/2008..10/31/2009    994555  377     202
786937   12/1/2008..2/28/2010    994555  377     202

【问题讨论】:

  • 您能否尝试找到一个最小示例和/或将数据集的(可能经过审查的)版本转储到某个地方?
  • 这是“间歇性”还是这两种调用方式总是不同?
  • 因此,在 400k 结果中,我发现计数错误的问题接近尾声。它确实做对了大多数人。我还没有找到一种可靠的方法来计算有多少被错误计算。
  • 我缩减为一个系列并做了一个 value_counts 它就像一个魅力。我唯一能弄清楚的可能是问题在于数据框 dtypes 都是对象(与 int64 相比),但是一旦我进入该系列,它就变成了 longs。

标签: pandas


【解决方案1】:

根据您对 dtypes 是“对象”的评论,我想知道您的 Z_ID 是否作为字符串列加载,从而导致因子列。如果某些字符串有前导空格,它们将被解释为不同的因子级别。

更一般地说,无论该列包含什么“对象”类型,其比较功能都可能与您想象的不同。这有点牵强。

对您来说更好的办法可能是弄清楚为什么您的数据框列 dtype 不是 int64。我发现在 pandas 中工作时,在数据框中获取正确的 dtypes 非常重要。如果您可以发布一些代码,我相信这里的社区可以提出正确加载类型的建议。

【讨论】:

    猜你喜欢
    • 2019-08-17
    • 2017-09-23
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 2018-05-09
    • 2019-03-16
    • 2018-08-31
    • 2022-11-21
    相关资源
    最近更新 更多