Skip to main content
 首页 » 编程设计

python之Pandas 范围内的频率表

2025年05月04日17cloudgamer

我在 Python 中有两个随机数数组:

vn = np.random.normal(20,5,500); 
vu = np.random.uniform(17,25,500); 

我正在尝试使用 pandas 创建一个频率表以按范围计算出现次数,但我真的不知道该怎么做,示例输入和输出如下所示:

输入:

vn: [2,3,6,6,7,8,9,9,10,7] 
vu: [1,1,2,3,6,7,7,7,8,9] 

输出:

Range     count_vn     count_vu 
(0, 5]        2            4 
(5, 10]       8            6 

请您参考如下方法:

IIUC:

In [228]: df.apply(lambda x: pd.cut(x, bins=[0,5,10]).value_counts()).add_prefix('count_') 
Out[228]: 
         count_vn  count_vu 
(5, 10]         8         6 
(0, 5]          2         4 

或@ayhan 提供的更好的解决方案:

In [26]: df.apply(pd.Series.value_counts, bins=[0,5,10]) 
Out[26]: 
               vn  vu 
(5.0, 10.0]     8   6 
(-0.001, 5.0]   2   4 

它以某种方式产生了“奇怪的”垃圾箱...