熊猫合并箱

时间:2016-07-04 08:59:30

标签: python numpy pandas dataframe histogram

我使用numpy直方图和数字化函数创建了一个分布。

_, bins = np.histogram(x, bins=bins)
arr = np.digitize(x, bins) - 1
x = bins[arr[:]]

或者可能:

x = pandas.cut(x, bins=bins)

然而,由于分布非常偏斜,即使在去除异常值之后,仍有许多箱子几乎没有观察到。我想合并箱子,有点类似于:

How to merge bins in R

该过程可能涉及pandas groupby,然后将小于n的组大小合并到其相邻值。有没有办法在pandas / numpy中实现这个目标?

1 个答案:

答案 0 :(得分:1)

正如所承诺的那样,我在physt中实现了一些东西,版本0.3.5。欢迎您使用它。

请参阅http://nbviewer.jupyter.org/github/janpipek/physt/blob/master/doc/Binning2.ipynb#Merging-bins,尤其是http://nbviewer.jupyter.org/github/janpipek/physt/blob/master/doc/Binning2.ipynb#By-min-frequency

在您的情况下,工作流程将是这样的:

import physt
histogram = physt.h1(x, bins=bins)
histogram.merge_bins(min_frequency=n)
bins = histogram.numpy_bins 

请注意,代码处于alpha阶段,并且每个bin都不包含超过所需的最小值(为了保留较高的窄容器)。仍然在寻找最好的算法。