如何对多个属性(列)进行对数转换 - 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)
。
我有一个包含 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)
。