繁体   English   中英

Pandas计算每个范围之间的值的数量

[英]Pandas calculate number of values between each range

我想在某些自定义范围之间找到我的数据计数。

说我有一些数据:

import random

my_randoms = random.sample(xrange(100), 10)        
test = pd.DataFrame(my_randoms,columns = ["x"])

如何生成显示不同范围之间的值数的数据框? 例如,假设我想看看在0-19,20-39,40-59,60-79,80-100之间出现了多少个值。 输出数据框将有一列包含这些范围,另一列包含计数。

我可以想到一些丑陋的方法,包括使用.apply获取一个新的列列表,说明它们之间的值(然后做一个groupby),但我怀疑pandas有一种更清洁的方式潜伏着。

Per Jarad与其他问题的链接:

test.groupby(pd.cut(test['x'], np.arange(0,100,20))).count()

可能有更好的方法。 我自己只是熊猫新手,但目前这个怎么样:

test.query(test.x.isin(range(20)))

pandas和numpy允许布尔索引 ,这是一个丑陋的方法吗?

ranges = [ (0,19), (20, 39), (40, 69) ...]
cnt = []
for range in ranges:
    tmp = ranges[(ranges['x'] > range[0]) & (range['x'] <= range[1]) ]
    cnt.append( len(tmp) )

您可以使用numpy.histrogram函数。

import numpy as np
series = [0, 20, 40, ...]
count, bin_edge = np.histogram( bins = series )

根据numpy.histogram ,如果bins是一个序列,它定义bin边缘,包括最右边缘,允许不均匀的bin宽度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM