Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在多个属性(列)上执行日志转换-Python_Python_Logging_Scikit Learn_Normalization_Transformation - Fatal编程技术网

如何在多个属性(列)上执行日志转换-Python

如何在多个属性(列)上执行日志转换-Python,python,logging,scikit-learn,normalization,transformation,Python,Logging,Scikit Learn,Normalization,Transformation,我有一个数据集,有两列数据,它们的比例完全不同 我需要对这两列进行日志转换,以便能够对它们进行可视化 我找不到python代码允许我在多个列上进行日志转换 有人能帮我吗 我有一个包含定性和定量列的数据集,我希望在RealizedPL和Volume列上进行日志记录 我的数据集看起来有点像这样: Date Name Country Product RealizedPL Volume 0 2019.01.01 Charle

我有一个数据集,有两列数据,它们的比例完全不同

我需要对这两列进行日志转换,以便能够对它们进行可视化

我找不到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
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"]])
如何进行日志转换并保留其他列?通过为日志创建新列或直接用日志替换列


谢谢

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

在一个虚拟示例中,它如下所示:

     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
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.plot.scatter(…,logx=True,logy=True)

如果我想将“Log\u RealizedPL”列和“Log\u Volume”列添加到数据帧中该怎么办?