【问题标题】:Python/Pandas: Array (back) to DataFramePython/Pandas:数组(返回)到 DataFrame
【发布时间】:2023-03-15 04:24:01
【问题描述】:

我应用了以下函数来规范化我的数据框中的列。

from sklearn.preprocessing import normalize

pd.DataFrame(normalize(traffic, norm='l2', axis=1, copy=True, return_norm=False))

但是,这个函数返回一个数组

array([[ 0.19781966,  0.21981735,  0.        , ...,  0.05655909,
         0.        ,  0.00033033],
       [ 0.18050277,  0.2031944 ,  0.        , ...,  0.15848418,
         0.        ,  0.00032616],
       [ 0.14110768,  0.16995336,  0.        , ...,  0.0820779 ,
         0.        ,  0.00023619],

有没有办法将标准化数据写入原始“流量”数据帧并替换原始值?

申请的时候才发现

pd.DataFrame(normalize(traffic, norm='l2', axis=1, copy=True, return_norm=False))

所有原始列名和索引都消失了。

【问题讨论】:

    标签: arrays pandas dataframe normalize


    【解决方案1】:

    如果normalize 函数返回一个与traffic DF 形状相同的数组,您可以这样做:

    pd.DataFrame(normalize(traffic, norm='l2', axis=1, copy=True, return_norm=False),
                 columns=traffic.columns, index=traffic.index)
    

    【讨论】:

    • 这似乎有帮助。我只是想知道为什么在每一列中,值没有从 0 缩放到 1。就我而言,它们的范围是 0.238 到 0.413?
    • @Rnaldinho,AFAIK 他们应该总结为1.0
    • MinMax Scaling 似乎工作得很好。尽管 MinMax 确实对异常值非常敏感,但每列中的值都从 0 缩放到 1。 normalization() 不应该从 0 扩展到 1 吗?
    • 我想我解决了:pd.DataFrame(normalize(wikipedia, norm='max', axis=0, copy=True, return_norm=False), columns=wikipedia.columns, index=wikipedia.index)。注意 norm='max', axis=0。
    猜你喜欢
    • 2019-08-29
    • 2020-03-30
    • 2021-02-20
    • 2020-02-25
    • 2018-11-18
    • 1970-01-01
    • 2016-12-09
    • 2018-02-23
    • 2021-06-23
    相关资源
    最近更新 更多