我有一个数据框,其中包含数字变量和分类变量(共200列)。我需要基于此数据帧生成规则(简短的数据质量,数据中没有任何标签)。示例:如果填充了A列,那么大多数情况下也应按照规则1填充B列。
因此,首先,我想捕获列表中value不为null的列的索引。然后进行设置操作以查找两列之间的重叠。 请让我知道我的方法是否正确。还是有其他更好的方法。
因此,我开始为其编写代码,并且在矩阵中得到了全零。这是它的代码:
matrix={}
dat = np.zeros((len(columns),len(columns)))
for col in (columns):
matrix[col]=data[data[col].notnull()].index.tolist()
#print(matrix)
matrix2=pd.DataFrame(matrix.items())
matrix2 = pd.DataFrame(matrix2).reset_index()
matrix2.columns = ['index','variable', 'value']
matrix2=matrix2[["variable","value"]]
values1=list(matrix2["value"])
for i in range(len(columns)):
for j in range(len(columns)):
seta=set(values1[i])
setb=set(values1[j])
overlap= seta & setb
result = (len(overlap) / 1000000) * 100
dat[i,j]=result
print(dat)
I am getting all zeros in the matrix.```
Values1 contains index position of row where value is not null.
Values1
[]
[1,2,3,4..10000]
..
..
[1,....,900]