2024-04-28 20:10:20 发布
网友
我要删除所有那些值计数小于95%的记录。目前,我正在静态地为值计数<;=5执行此操作,但我只想保留值计数的前95个百分位。我该怎么弄到?这里的部分也是绝对的。你知道吗
vc = repair['PART_NO'].value_counts() u = [i not in set(vc[vc<=5].index) for i in repair['PART_NO']] repair = repair[u] repair.describe(include="all")
我想保留第95个百分位数而不是百分位数。 因此,解决方案是:
repair['FREQ'] = \ repair.groupby('PART_NO', as_index=False)['PART_NO'].transform(lambda s: s.count()) repair.head()
repair = repair[repair.FREQ < repair.FREQ.quantile(.95)]
也许我理解你的问题错了,让我们举个例子。代码如下:
# in the below list, the num 1 have percentile > 95 lst = [1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] count = len(lst) * 1.0 # test for each num percentile compute print [[x, lst.count(x) / count] for x in set(lst)] # [[1, 0.9545454545454546], [2, 0.045454545454545456]] # remove percentile < 95 ret_lst = [[x, lst.count(x) / count] for x in set(lst) if lst.count(x) / count >= 0.95] print ret_lst # [[1, 0.9545454545454546]] # get the item whose percentile > 95 lst_final = [item[0] for item in ret_lst] print lst_final # [1]
上述lst中的元素可以是str或其他type。例如:
lst
str
type
# the lst can have any type, like int, str in the below # in the below list, the 'a' have percentile > 95 lst = ['a', 'b', 1, 0, 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'] count = len(lst) * 1.0 # test for each elements percentile compute print [[x, lst.count(x) / count] for x in set(lst)] # [['a', 0.9508196721311475], [1, 0.01639344262295082], ['b', 0.01639344262295082], [0, 0.01639344262295082]] # remove percentile < 95 ret_lst = [[x, lst.count(x) / count] for x in set(lst) if lst.count(x) / count >= 0.95] print ret_lst # [['a', 0.9508196721311475]] lst_final = [item[0] for item in ret_lst] print lst_final # ['a']
我想保留第95个百分位数而不是百分位数。 因此,解决方案是:
获取每个部件号的频率并将其添加到数据帧中
repair['FREQ'] = \ repair.groupby('PART_NO', as_index=False)['PART_NO'].transform(lambda s: s.count()) repair.head()
过滤出修复行修理频率大于或等于第95百分位:19600
repair = repair[repair.FREQ < repair.FREQ.quantile(.95)]
也许我理解你的问题错了,让我们举个例子。代码如下:
上述
lst
中的元素可以是str
或其他type
。例如:相关问题 更多 >
编程相关推荐