【问题标题】:Normalizing a dataframe规范化数据框
【发布时间】:2020-08-01 16:28:09
【问题描述】:

我想规范化我的数据框,但规范化应该每 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()

【问题讨论】:

  • 欢迎来到 Stack Overflow!只要您的问题尊重我们的规则,您就会在这里找到很好的答案。作为新用户,您应该阅读How to Ask 了解他们。具体来说,当您收到错误或警告时,您应该给出包含大量信息的确切错误消息。理想情况下,您应该尝试使用数据样本构建minimal reproducible example,以允许其他人重现。事实上只需足够的代码和数据来重现问题。这样,您将在答案中获得经过修复和测试的代码。
  • 我想要一个分区,规范化 0-15 值,然后 16-31 等等..
  • 请通过编辑而不是 cmets 澄清。

标签: python dataframe normalization


【解决方案1】:

您访问数据框的方式是错误的。要修改单元格,您必须始终使用lociloc(或者,如果相关,atiat)并且切勿从列中选择行。如果你想按块标准化,你应该按块处理行。所以一个简单的解决办法是:

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()

【讨论】:

    猜你喜欢
    • 2021-11-13
    • 2021-04-05
    • 2020-07-09
    • 2020-07-22
    • 2017-05-04
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    相关资源
    最近更新 更多