获取含NULL值表格非NULL值组合的算法咨询
解决方案:按缺失值模式分组计数
这个需求本质是统计每行的NULL分布模式出现的次数,核心思路是把每行转换成对应的NULL/非NULL模式,再对模式分组计数,具体实现可以分两种场景:
1. 基于二维数组(比如Python处理)
把Excel数据转成二维数组后,用哈希表(字典)统计每个模式的出现次数:
from collections import defaultdict # 假设data是读取后的二维数组,NULL用None表示 pattern_counts = defaultdict(int) for row in data: # 生成当前行的模式:NULL保留为'NULL',非NULL替换为'*' current_pattern = tuple('NULL' if cell is None else '*' for cell in row) pattern_counts[current_pattern] += 1 # 转换为结果格式 result = [] for pattern, count in pattern_counts.items(): result.append(list(pattern) + [count])
这个方法处理数千条数据完全没问题,时间复杂度是O(n*m)(n是行数,m是列数),性能足够。
2. 基于数据库查询
如果把Excel加载到数据库,可以直接用SQL分组统计,以MySQL为例:
SELECT CASE WHEN A IS NULL THEN 'NULL' ELSE '*' END AS A, CASE WHEN B IS NULL THEN 'NULL' ELSE '*' END AS B, CASE WHEN C IS NULL THEN 'NULL' ELSE '*' END AS C, COUNT(*) AS `Number of occurrences` FROM your_table GROUP BY 1, 2, 3;
执行这个查询就能直接得到你需要的结果表格。
补充说明
这个任务属于数据探索里的缺失值模式分析,没有特定的“算法名称”,但核心逻辑就是模式提取+分组计数,是数据预处理中的常见操作,针对数千条数据的规模,上述两种方法都能高效完成。
内容的提问来源于stack exchange,提问作者Random Actions
相关产品推荐
相关产品推荐

