规范化数据框

Normalizing a dataframe

我想规范化我的数据框,但规范化应该每 16 行进行一次,我有 16*1550 行和 17 列。 我使用以下代码实现了它,它发出了警告。这是正确的做法吗?

for n in range(1550):

     data_features[16*n:16*(n+1)][:] = (data_features[16*n:16*(n+1)][:] - data_features[16*n:16*(n+1)][:].mean())/data_features[16*n:16*(n+1)][:].std()

您访问数据框的方式有误。要修改 单元格 ,您必须始终使用 lociloc(或者,如果相关,atiat)并且永远不要 select 列中的行。如果你想按块标准化,你应该按块处理行。所以一个简单的修复可能是:

for n in range(1550):
    data_features.iloc[16*n:16*(n+1)] = (
        data_features.iloc[16*n:16*(n+1)]
        - data_features.iloc[16*n:16*(n+1)].mean()
        )/data_features.iloc[16*n:16*(n+1)].std()