【发布时间】:2016-12-04 00:58:34
【问题描述】:
我有 CSV 文件:
fr id
1 10000152
1 10000212
1 10000847
1 10001018
2 10001052
2 10001246
14 10001908
...........
这是一个频率表,其中id 是整数变量,fr 是给定值的出现次数。文件按值升序排序。
我想计算变量的百分位数(即 90%、80%、70% ... 10%)。
我是在纯 Python 中完成的,类似于这个伪代码:
bucket=sum(fr)/10.0
percentile=1
sum=0
for (current_fr, current_id) in zip(fr,id):
sum=sum+current_fr
if (sum > percentile*bucket):
print "%i percentile: %i" % (percentile*10,current_id)
percentile=percentile+1
但是这段代码非常原始:它没有考虑百分位应该在集合中的值之间,它不能后退等等。
还有更优雅、通用、现成的解决方案吗?
【问题讨论】:
标签: python numpy pandas statistics