Return某个值的bin经过CUT或者value_counts()拆分成Pandas个bin后
Return the bin of a certain value after splitting into Pandas bins after CUT or value_counts()
假设我使用 df.value_counts(bins=10)
拆分我的框架
这是它的样子
Values_mean
(53.649, 90.21] 5127
(35.369, 53.649] 4285
(90.21, 108.49] 3559
(108.49, 126.77] 2579
(866.77, 935.05] 1526
(199.891, 218.171] 1304
(218.171, 251.451] 506
(-1.46699, 17.089] 478
(251.451, 284.732] 30
(284.732, 343.012] 7
Name: Values_mean, dtype: int64
现在我想找出值在哪里:newVal=38.54
将适合数据的哪个百分位数。
示例:这些值的 CUMSUM = 19401
newVal=38.54
将属于 Bin :
(35.369, 53.649] 4285
所以它表示 4285/19401 它属于 0.2208 的数据。
提前致谢
您想对索引进行排序,然后使用 right
属性获取间隔的右侧。然后使用 searchsorted
找到适合搜索值的位置。使用该信息计算出计数值。
def ptile(x, s):
total = s.sum()
s = s.sort_index()
i = s.index.right.searchsorted(x)
return s.iloc[i] / total
ptile(38.54, s)
0.2208649038709345
假设我使用 df.value_counts(bins=10)
拆分我的框架
这是它的样子
Values_mean
(53.649, 90.21] 5127
(35.369, 53.649] 4285
(90.21, 108.49] 3559
(108.49, 126.77] 2579
(866.77, 935.05] 1526
(199.891, 218.171] 1304
(218.171, 251.451] 506
(-1.46699, 17.089] 478
(251.451, 284.732] 30
(284.732, 343.012] 7
Name: Values_mean, dtype: int64
现在我想找出值在哪里:newVal=38.54 将适合数据的哪个百分位数。
示例:这些值的 CUMSUM = 19401
newVal=38.54
将属于 Bin :
(35.369, 53.649] 4285
所以它表示 4285/19401 它属于 0.2208 的数据。
提前致谢
您想对索引进行排序,然后使用 right
属性获取间隔的右侧。然后使用 searchsorted
找到适合搜索值的位置。使用该信息计算出计数值。
def ptile(x, s):
total = s.sum()
s = s.sort_index()
i = s.index.right.searchsorted(x)
return s.iloc[i] / total
ptile(38.54, s)
0.2208649038709345