Coursera课程Pandas数据分析问题求助:销量统计结果不符
排查Pandas DataFrame产品销量/销售额Top10统计问题
请提供以下关键信息
- 数据集结构:执行
df.info()和df.head()的输出结果 - 参考统计结果:平台给出的正确Top10产品标题列表
- 你的代码:分别对应两个问题的完整代码片段
- 错误提示:平台返回的具体报错信息,或你的结果与参考结果的差异点
常见问题排查方向
问题1:按销量降序统计Top10产品标题(top_num_sales)
- 分组逻辑错误:若单条记录是单份订单的销量,必须按产品标题分组后对销量列求和,不能直接取单条记录排序。正确示例:
# 分组求和销量,降序排序后取前10的标题 sales_summary = df.groupby('产品标题')['销量'].sum().sort_values(ascending=False) top_num_sales = sales_summary.head(10).index.tolist() - 产品标题重复:检查标题是否存在格式差异(如大小写、首尾空格、特殊字符),需先统一格式:
df['产品标题'] = df['产品标题'].str.strip().str.lower() - 空值/无效值干扰:过滤销量为空或非正的无效记录:
df = df[df['销量'].notna() & (df['销量'] > 0)]
问题2:按销售额降序统计Top10产品标题(top_tot_sales)
- 销售额计算错误:若数据集无直接销售额列,需用「销量 × 单价」计算,同时确保数据类型为数值型:
# 转换单价为数值类型,处理异常值 df['单价'] = pd.to_numeric(df['单价'], errors='coerce') # 计算单条记录销售额 df['销售额'] = df['销量'] * df['单价'] # 分组求和总销售额,排序取Top10 revenue_summary = df.groupby('产品标题')['销售额'].sum().sort_values(ascending=False) top_tot_sales = revenue_summary.head(10).index.tolist() - 未分组求和直接排序:若直接对单条记录的销售额排序,会导致同一产品多次出现在Top10中,必须先分组求和总销售额。
- 异常值过滤:排除单价、销售额为空或非正的记录:
df = df[(df['单价'].notna() & (df['单价'] > 0)) & (df['销售额'].notna() & (df['销售额'] > 0))]
内容的提问来源于stack exchange,提问作者Nehal Paul
相关产品推荐
相关产品推荐

