python 全排列问题

现有一代码计算字段的代码,用于计算所有的排列组合并通过列中的0和1值来计算组合出现的次数。

但问题在于如果需要计算的超过十五个这样,程序就跑不动了,不符我的要求。

希望能得到改进方案,最好是代码指导

import pandas as pd
import numpy as np
import matplotlib
import itertools
数据集 = pd.read_excel("示例1-01表.xlsx")
数据集.fillna(0,inplace=True)
数据总量 = len(数据集)
pd.set_option('display.max_rows', None)

列名 = 数据集.columns.values.tolist()
iter1 = itertools.combinations(列名, 1)
for j in iter1:
    字段名 = str(j).replace("(", "").replace(")", "").replace(
            ", ", ",").replace("'", "").replace(",)", ")")
    字段名 = 字段名.replace(",","")
    集合 = 数据集[字段名]
集合["合计"] = 1
print(集合.head(5))

字段组合列表 = []
字段组合数量 = []
for i in range(2, len(列名)+1):
    iter1 = itertools.combinations(列名, i)
    for j in iter1:
        字段名 = str(j).replace("(", "").replace(")", "").replace(
            ", ", ",").replace("'", "")
        字段名 = 字段名.split(",")
        集合 = 数据集[字段名]
        集合["合计"] = 集合.sum(axis=1)
        集合 = 集合.loc[集合["合计"] == i]
        字段组合列表.append(j)
        字段组合数量.append(len(集合))

for 列名元素 in 列名:
    字段组合列表.append(列名元素)
    字段组合数量.append(len(数据集.loc[数据集[列名元素]==1]))

集合 = pd.DataFrame({'字段组合': 字段组合列表, '数量': 字段组合数量})
集合["占比"] = (集合['数量']*100/数据总量).map('{:,.2f}%'.format)
集合.sort_values(by=['数量'], ascending=False)

表和代码连接:kyuzz/交集计算 (gitee.com)

是不是排列组合的结果太多了

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632