如何对不同数据点数量的3组数据集求平均值并绘制连贯平均曲线
解决多组不等长数据求平均后图表尖刺问题
问题根源
图表出现尖刺的核心原因是:部分时间点仅有单组数据存在,AVERAGE/AVERAGEIF直接计算时会把单个数据当作该时间点的平均值,和前后有多个数据点的平均值形成大幅落差,导致突兀尖刺。
分步解决方案
第一步:统一时间轴
整理出三组数据中所有出现过的时间点,按顺序单独列成一列(比如A列)。对每组数据,在对应时间轴位置填充数值,缺失的时间点用NA()填充(不要留空,留空会被函数忽略,NA()能让图表正确识别无效数据)。第二步:计算对应时间点的有效值平均
在空白列(比如D列),针对A列的每个时间点,用数组公式计算三组数据中对应时间点的有效值平均:=AVERAGE(IF(Group1_Time=A2, Group1_Value, NA()), IF(Group2_Time=A2, Group2_Value, NA()), IF(Group3_Time=A2, Group3_Value, NA()))- Google Sheets直接输入后按回车即可;Excel需按
Ctrl+Shift+Enter作为数组公式执行。
这个公式只会计算存在对应时间点的组数据,自动忽略NA()值,避免单个数据拉低/拉高平均值。
- Google Sheets直接输入后按回车即可;Excel需按
第三步:绘制连贯曲线
用A列的统一时间轴和D列的平均值数据绘制折线图,然后在图表设置中选择「隐藏空单元格和#N/A值」:- Excel:「选择数据」→「隐藏的单元格和空单元格」→ 选「连接数据点」
- Google Sheets:图表编辑器→「设置」→「空单元格处理」→ 选「连接数据点」
这样曲线会自动跳过无有效数据的时间点,保持连贯平滑。
额外优化技巧
如果时间点是连续递增的(比如按秒/分钟),可以用SEQUENCE函数自动生成完整时间轴,无需手动整理:
=SEQUENCE(MAX(Max_Time)-Min_Time+1, 1, Min_Time)
其中Min_Time是三组数据中的最早时间,Max_Time是最晚时间。
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

