首先定义区间边界并初始化频次数组,接着遍历数据判断每个值所属区间并累加计数,最后将统计结果转换为图表数据格式,通过前端库如Chart.js绘制直方图展示分布。

如果您需要对一组PHP数据按照数值区间进行频次统计,通常是因为原始数据量较大或分布范围广,直接分析难以发现规律。通过将数值划分到不同区间(即分桶),可以更清晰地观察数据分布情况。以下是几种在PHP中实现区间统计与直方图(histogram)分桶的方法:
该方法适用于自定义区间边界且数据量不大的场景。通过遍历数据并判断其所属区间,累加对应区间的计数器。
1、定义区间边界数组,例如:$bins = [0, 10, 20, 30, 40, 50];每个相邻元素构成一个左闭右开区间。
2、初始化结果数组 $frequency,键为区间描述,值为计数,初始全为0。
立即学习“PHP免费学习笔记(深入)”;
3、遍历原始数据数组 $data 中的每一个数值 $value。
4、使用循环查找 $value 所属的区间,条件为:$value >= $bins[i] 且 $value 。
5、找到对应区间后,将该区间的频次加1。
6、输出或返回 $frequency 数组,即可得到各区间频次分布。
此方法先将连续数值映射到离散的桶编号,再用内置函数高效统计频次。
1、确定桶宽度 $width,如设为10,则每10个单位为一个区间。
2、使用 array_map 对原始数据进行转换,将每个值 $v 映射为其所在桶的编号:floor($v / $width)。
3、调用 array_count_values 函数统计每个桶编号出现的次数。
4、通过 ksort 对键排序,确保区间按从小到大排列。
5、遍历结果数组,将桶编号还原为区间范围字符串,如 "0-9"、"10-19" 等,并构建最终的频次列表。
当区间宽度不一致时,可预先建立区间列表,并逐条比对数据归属。
1、定义非等宽区间数组 $ranges,格式为 [ ['min' => 0, 'max' => 5], ['min' => 5, 'max' => 15], ... ]。
2、初始化空数组 $result,用于存储各区间的频次。
3、遍历 $data 中的每个数值 $num。
4、对每个 $num,遍历 $ranges 查找满足 $num >= $range['min'] 且 $num 的区间。
5、若匹配成功,对应区间的计数加1;否则归入“超出范围”类别。
6、最终返回包含所有区间及其频次的结果数组。
为了在网页中展示直方图,需构造符合图表库要求的数据结构。
1、完成上述任一分桶统计后,得到关联数组 $freq,键为区间标签,值为频次。
2、使用 foreach 遍历 $freq,构造二维数组 $chartData,每一项为 [ 'x' => 区间名, 'y' => 频次 ]。
3、使用 json_encode 将 $chartData 输出至JavaScript变量中。
4、在前端使用 Chart.js 或 ECharts 等库绘制柱状图,x轴显示区间,y轴显示频次。
5、设置颜色、标题、坐标轴标签等样式参数以增强可读性。
以上就是php数据整理怎么按数值区间统计频次_php区间统计与histogram分桶实现示例的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号