浏览代码

fix(品类再分享分析): 去掉再分享品类非空过滤,支持品类空值显示为未知

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
yangxiaohui 2 月之前
父节点
当前提交
9c1dd806b7
共有 3 个文件被更改,包括 8 次插入3 次删除
  1. 二进制
      tasks/品类再分享分析/.DS_Store
  2. 0 1
      tasks/品类再分享分析/query.sql
  3. 8 2
      tasks/品类再分享分析/visualize.py

二进制
tasks/品类再分享分析/.DS_Store


+ 0 - 1
tasks/品类再分享分析/query.sql

@@ -24,7 +24,6 @@ WHERE   dt >= ${start}
 AND     dt <= ${end}
 AND     usersharedepth = 0
 AND     videoid IS NOT NULL
-AND     再分享merge一级品类 IS NOT NULL
 GROUP BY dt, channel, merge一级品类, merge二级品类, 再分享merge一级品类, 再分享merge二级品类
 ORDER BY dt, channel, 点击uv DESC
 ;

+ 8 - 2
tasks/品类再分享分析/visualize.py

@@ -42,6 +42,12 @@ def get_cat2_label(cat1, cat2):
         return f"{cat1_str}/{cat2}"
     return cat1_str
 
+# 获取品类标签(处理空值)
+def get_cat_label(val):
+    if pd.notna(val) and str(val).strip():
+        return str(val)
+    return '未知'
+
 # 计算渠道×日期×品类级别的矩阵数据
 def calc_matrix_data(channel, date=None, level='cat1'):
     """计算指定渠道和日期的品类矩阵"""
@@ -55,8 +61,8 @@ def calc_matrix_data(channel, date=None, level='cat1'):
     # 根据级别选择品类列
     if level == 'cat1':
         # 填充空值
-        ch_df['头部一级品类'] = ch_df['头部一级品类'].fillna('未知')
-        ch_df['再分享一级品类'] = ch_df['再分享一级品类'].fillna('未知')
+        ch_df['头部一级品类'] = ch_df['头部一级品类'].apply(get_cat_label)
+        ch_df['再分享一级品类'] = ch_df['再分享一级品类'].apply(get_cat_label)
         row_col = '头部一级品类'
         col_col = '再分享一级品类'
     else: