Для любого данного кадра данных с только числовыми данными я хочу создать квадратную матрицу (с размерами, равными количеству столбцов), чтобы суммировать следующую информацию в каждой из ячеек - длину каждого столбца, сумму элементов вкаждый столбец, сумма квадратов элементов и т. д.,?
Ниже приведен текущий код, который я сделал, и выполнение которого занимает много времени.Можем ли мы сделать это более эффективным?
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)