JavaScript/TS数组统计问题:星级评分按日统计表格异常排查
问题排查与代码修正
常见错误原因
- 未统一日期格式:如果日期列同时存在字符串、datetime等多种格式,会导致分组出现重复日期,统计结果混乱
- 分组统计逻辑错误:直接对星级做
value_counts未结合日期分组,或groupby后未正确展开各星级为列 - 缺失星级补全遗漏:部分日期可能没有某星级的评分,未手动补0会导致表格列不完整
修正后的代码示例(基于Pandas)
假设你的数据集包含date(日期列)和star_rating(星级评分列,值为1-5),以下是正确的统计实现:
import pandas as pd # 统一日期格式,避免分组异常 surveyReport['date'] = pd.to_datetime(surveyReport['date']).dt.date # 按日期+星级分组统计数量,转换为宽表 star_stats = surveyReport.groupby(['date', 'star_rating']).size().unstack(fill_value=0) # 补全1-5星的列,确保所有星级列都存在 for star in range(1, 6): if star not in star_stats.columns: star_stats[star] = 0 # 调整列顺序并重命名,符合需求格式 star_stats = star_stats[[1, 2, 3, 4, 5]].reset_index() star_stats.columns = ['日期', '1星', '2星', '3星', '4星', '5星'] # 查看结果 print(star_stats)
关键修正点
- 强制统一日期格式为
date类型,消除因格式差异导致的分组错误 - 使用
unstack(fill_value=0)自动将分组后的星级转换为列,缺失星级自动补0 - 手动指定列顺序,确保输出表格的星级列按1-5的顺序排列
内容的提问来源于stack exchange,提问作者Puneeth
相关产品推荐
相关产品推荐

