对于任何仅包含数值数据的给定数据框,我想创建一个方阵(尺寸等于列数)以总结每个单元格中的以下信息-每列的长度,元素的总和每列,元素的平方和,等等。
下面是我制作的当前代码,需要很长时间才能执行。我们可以提高效率吗?
def create_summary(df):
col = df.columns.tolist()
df_matrix = df.values
l = len(col)
x ={}
z={}
for i in range(l):
z[i] = []
for j in range(l):
y= df_matrix[:,j]
z= df_matrix[:,i]
x[i,j] = np.array([])
"""
This code makes calculations for all the basic elements in the table. They are appended to
a lists of a dictionary.
"""
x[i,j] = np.append(x[i,j], [len(z), z.sum(), (z**2).sum(),
len(y), y.sum(), (y**2).sum(), (z*y).sum(), ((z*y)**2).sum()] )
z[i].append(x[j,i])
result = pd.DataFrame(z, index=col)
result.columns = col
return(result)