Pandas 使用NaNs Python对连续功能进行二值化
我有一个包含4000行和35个特征的熊猫数据帧,其中一些连续特征包含缺失值(NAN)。例如,其中一个(缺少46个值)具有非常左偏的分布,我希望通过选择阈值1.5对其进行二值化,低于该阈值我希望将其设置为类0,高于或等于1.5作为类1。 比如:Pandas 使用NaNs Python对连续功能进行二值化,pandas,binary,nan,Pandas,Binary,Nan,我有一个包含4000行和35个特征的熊猫数据帧,其中一些连续特征包含缺失值(NAN)。例如,其中一个(缺少46个值)具有非常左偏的分布,我希望通过选择阈值1.5对其进行二值化,低于该阈值我希望将其设置为类0,高于或等于1.5作为类1。 比如:X_original=[0.01,2.80,-1.74,1.34,1.55],X_bin=[0,1,0,0,1]。 我试过这样做:dataframe[“bin”]=(dataframe[“original”]>1.5)。 但是,我注意到缺失值(NAN)消失了
X_original=[0.01,2.80,-1.74,1.34,1.55],X_bin=[0,1,0,0,1]。
我试过这样做:dataframe[“bin”]=(dataframe[“original”]>1.5)。
但是,我注意到缺失值(NAN)消失了,它们被编码在0类中
如何解决此问题?据我所知,有一种方法可以在比较后保留缺失的值,但您可以执行以下操作:
import pandas as pd
import numpy as np
X_original = pd.Series([0.01,2.80,-1.74, np.nan,1.55])
X_bin = X_original > 1.5
X_bin[X_original.isna()] = np.NaN
print(X_bin)
输出
0 0.0
1 1.0
2 0.0
3 NaN
4 1.0
dtype: float64
0 0
1 1
2 0
3 <NA>
4 1
dtype: Int8
要将列保持为整数(也可为空),请执行以下操作:
输出
0 0.0
1 1.0
2 0.0
3 NaN
4 1.0
dtype: float64
0 0
1 1
2 0
3 <NA>
4 1
dtype: Int8
0
1 1
2 0
3.
4 1
数据类型:Int8
我发现处理此问题的最佳方法是使用列表理解:
dataframe["Bin"] = [0 if el<1.5 else 1 if el >= 1.5 else np.NaN for el in dataframe["Original"]]
对于缺少的值,您想做什么?在我需要使用其余的功能对它们进行插补后,如何计算它们?使用KNN插补器或LSTM