Python DataFrame中设备型号分组汇总方案咨询
解决方案:基于品牌关键词匹配的快速分组汇总
针对百万行设备型号数据的分组需求,最直接高效的方案是基于品牌关键词的规则匹配——因为设备型号几乎都包含明确的品牌标识(iPhone、Galaxy等),无需复杂的NLP模型就能实现精准分组。
步骤1:构建品牌映射规则
先整理常见品牌的关键词(含变体写法),映射到统一的分组名称:
import pandas as pd import numpy as np # 定义品牌关键词与目标分组的映射,可根据实际数据补充 brand_mapping = { 'iphone': 'iPhone', 'ipad': 'iPad', 'galaxy|samsung': 'Galaxy', # 正则匹配Galaxy或Samsung相关型号 'playstation|ps': 'PlayStation', 'nintendo|switch': 'Nintendo' }
步骤2:批量匹配品牌(矢量化操作,适配百万行)
利用pandas的矢量化字符串方法+np.select实现高速匹配,避免逐行apply的性能瓶颈:
# 生成匹配条件:检查设备型号是否包含对应品牌关键词(忽略大小写) conditions = [ df['设备型号'].str.lower().str.contains(keyword, regex=True) for keyword in brand_mapping.keys() ] # 对应的分组名称 choices = list(brand_mapping.values()) # 为每一行匹配所属品牌,未匹配的归为"其他" df['品牌'] = np.select(conditions, choices, default='其他')
步骤3:分组求和生成汇总统计
# 按品牌分组,计算总请求量 summary = df.groupby('品牌')['请求量(单位:十万)'].sum().reset_index() # 重命名列名匹配期望输出 summary.columns = ['设备型号', '总请求量(单位:十万)'] print(summary)
效果验证
针对你提供的示例数据,运行后会得到完全符合期望的结果:
| 设备型号 | 总请求量(单位:十万) |
|---|---|
| iPhone | 4.8248 |
| iPad | 2.2726 |
| Galaxy | 13.967 |
| 其他 | 0.0 |
优势说明
- 速度快:矢量化操作处理百万行数据仅需数秒,远快于Spacy/Gensim等NLP模型
- 可扩展性:新增品牌只需在
brand_mapping中补充关键词即可 - 稳定性高:规则匹配不受短文本歧义影响,结果可预测
内容的提问来源于stack exchange,提问作者lightyagami96
相关产品推荐
相关产品推荐

