You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从二进制DataFrame中推导分析结果?附产品分类信息

产品分类整理

Category A

  • X800818
  • X822707
  • X822708
  • X870082
  • X800810
  • X800323
  • X800835
  • X893890
  • X822541
  • X800831

Category B

  • X830742
  • X841223
  • X841449
  • X870138
  • X810352
  • X870146
  • X800850
  • X841236
  • X811712
  • X893314

Category C

  • X893609
  • X890188
  • X893313
  • X841271
  • X891250
  • X811820
  • X728538
  • X727220
  • X960804
  • X728904

Category D

  • X727345
  • X800875
  • X727302
  • X870426
  • X729002
  • X727300
  • X759042
  • X728495
  • X897198
  • X790190

二进制DataFrame分析思路(结合产品分类)

嘿,先得明确你的二进制DataFrame的基础结构——比如行是不是代表某个样本(比如用户、订单、检测样本之类的),列是不是对应上面的产品编号,而0/1值代表「该样本是否包含这个产品」(比如1=拥有,0=没有)?如果是这个常见场景的话,咱们可以按下面的步骤来推导分析结果:

1. 先建立产品-分类的映射字典

首先把每个产品编号和它所属的分类绑定,这样能把DataFrame里的产品维度快速转换成分类维度,用Python pandas的代码示例如下:

import pandas as pd

# 构建产品-分类映射字典
product_category = {}

# 批量添加Category A的产品映射
category_a = ["X800818", "X822707", "X822708", "X870082", "X800810", "X800323", "X800835", "X893890", "X822541", "X800831"]
for p in category_a:
    product_category[p] = "Category A"

# 批量添加Category B的产品映射
category_b = ["X830742", "X841223", "X841449", "X870138", "X810352", "X870146", "X800850", "X841236", "X811712", "X893314"]
for p in category_b:
    product_category[p] = "Category B"

# 批量添加Category C的产品映射
category_c = ["X893609", "X890188", "X893313", "X841271", "X891250", "X811820", "X728538", "X727220", "X960804", "X728904"]
for p in category_c:
    product_category[p] = "Category C"

# 批量添加Category D的产品映射
category_d = ["X727345", "X800875", "X727302", "X870426", "X729002", "X727300", "X759042", "X728495", "X897198", "X790190"]
for p in category_d:
    product_category[p] = "Category D"

2. 基础统计分析:分类层面的覆盖情况

2.1 每个样本的分类持有情况

计算每个样本拥有多少个不同分类的产品,或者具体拥有哪些分类:

# 假设你的二进制DataFrame名为df,列是产品编号
# 按分类分组,计算每个分类下是否有至少一个产品为1(即该样本拥有该分类的产品)
category_df = df.groupby(product_category, axis=1).max()
# 现在category_df的列就是Category A/B/C/D,值为0/1,表示样本是否拥有对应分类的产品

# 计算每个样本拥有的分类数量
category_df['total_categories'] = category_df.sum(axis=1)

通过这个结果,你能看到样本的产品覆盖广度分布——比如有多少样本只拥有1个分类的产品,多少样本同时持有3个分类的产品。

2.2 分类的整体流行度

统计各分类的用户/样本覆盖占比,或者产品总拥有次数:

# 各分类的样本拥有占比(百分比)
category_popularity = category_df.mean() * 100
print("各分类拥有样本占比:\n", category_popularity)

# 各分类下产品的总拥有次数(所有样本中该分类产品被持有的总次数)
category_total_counts = df.groupby(product_category, axis=1).sum().sum()
print("各分类产品总拥有次数:\n", category_total_counts)

3. 关联分析:分类之间的相关性

想知道哪些分类经常被同时拥有?可以用相关性分析或交叉统计:

# 计算分类之间的皮尔逊相关系数,看分类间的关联程度
category_corr = category_df.corr()
print("分类间相关性:\n", category_corr)

# 统计同时拥有A和B类产品的样本占比
a_and_b_ratio = category_df[(category_df['Category A'] == 1) & (category_df['Category B'] == 1)].shape[0] / category_df.shape[0] * 100
print(f"同时拥有A和B类产品的样本占比:{a_and_b_ratio:.2f}%")

4. 进阶分析:根据分类分布做细分

如果你的DataFrame有对应标签(比如用户消费等级、样本检测结果),可以分析分类与标签的关联:

# 假设df有一个标签列'label',比如'高价值'/'低价值'
# 查看不同标签下的分类拥有差异
label_category_stats = category_df.groupby(df['label']).mean() * 100
print("不同标签下的分类拥有占比:\n", label_category_stats)

如果没有标签,也可以用K-Means等聚类算法,把样本按分类分布分成不同群体,挖掘各群体的分类偏好。


内容的提问来源于stack exchange,提问作者BS.Mira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:21:46