如何对多个属性(列)进行对数转换 - Python

How to do a log transformation on more than one attribute(column) - Python

我有一个包含 2 列的数据集,它们的比例完全不同。

我需要对两列进行对数转换才能对它们进行一些可视化。

我找不到 python 允许我对多个列进行对数转换的代码。

有人可以帮我吗?

我有一个包含定性和定量列的数据集,我希望在 RealizedPL 和 Volume 列上做日志。

我的数据集看起来有点像这样:

     Date           Name       Country     Product     RealizedPL     Volume
0    2019.01.01     Charles    Country1    ProductA      100           10200
1    2019.02.20     Pierre     Country2    ProductB      150           20500
2    2019.03.02     Chiara     Country1    ProductA      200           15300

如何进行日志转换并保留其他列?通过为日志创建新列或直接用日志替换列。

谢谢

为此,您可以在 scikit learn 中使用 FunctionTransformer,只需选择要应用转换的列即可。作为第二步,您可以将这些转换后的列添加到原始数据框中。

在虚拟示例中,它看起来像这样:

import pandas as pd
import numpy as np
from sklearn.preprocessing import FunctionTransformer

df = pd.DataFrame({"a": [1, 2, 3], "b": [3, 44, 2], "c": [4, 4, 3]})
transformer = FunctionTransformer(np.log)

df[["a_log", "b_log"]] = transformer.fit_transform(df[["a", "b"]])

您不妨试试:

df[["RealizedPL","Volume"]] = df[["RealizedPL","Volume"]].apply(np.log)
print(df)
         Date     Name   Country   Product  RealizedPL    Volume
0  2019.01.01  Charles  Country1  ProductA    4.605170  9.230143
1  2019.02.20   Pierre  Country2  ProductB    5.010635  9.928180
2  2019.03.02   Chiara  Country1  ProductA    5.298317  9.635608

或:

df[["RealizedPL_log", "Volume_log"]] = df[["RealizedPL","Volume"]].apply(np.log)

将日志作为单独的列。

另请注意,如果这只是为了可视化目的,您不妨尝试 df.plot.scatter(..., logx=True, logy=True)