根据数据框的一列

时间:2017-03-13 16:24:55

标签: python pandas dataframe statistics

我有一个带有passengers列的pandas.dataframe,其范围可能会因创建数据帧的功能而有很大差异。

其他列通常或多或少是恒定范围(它们是经济指标)。

segments.head(2);

            passengers       gdp  gdp_per_capita  inflation  unemployment  \
Month                                                                       
2002-01-01       11688  4461.087       31634.953    150.847        14.418   
2002-02-01        9049  4142.153       29321.702    204.132        14.738   

            population  
Month                   
2002-01-01      339.59  
2002-02-01      343.32  

我最有价值的数据是乘客人数,所以我不想改变它。然而,我想用作预测因子的其他测量的规模差异使得难以跟踪变化(有时数万,有时是小数)。

我如何标准化所有列的范围以与mean(passengers)

保持一致

1 个答案:

答案 0 :(得分:1)

您可以通过不同的方式解决该问题,可以制作/应用手动转换功能,也可以使用预先存在的功能,例如 sklearn.preprocessing.StandardScaler < /强>

StandardScaler将通过删除平均值和缩放到单位方差&#34;来标准化功能。因此,您可以根据您的愿望/需求改变平均值并调整单位差异。

然而,在我看来,你将尝试建立一个关于该数据的预测模型,如果是这样,最好的方法是测试所有假设,并保持最佳效果,我的建议是:

  • 消除传感器的偏斜(如果存在) - Log&amp; Log1p是最常见的转换,但根据您的数据,其他转换可能会更好。您也应该测试任意函数(例如,反向或1 /(X + 1))并使用最佳变换(最接近0的偏斜)
  • 测试缩放/非缩放功能。如果数据偏斜,则使用transform / test进行测试。
  • 如果存在异常值,则测试是否使用(异常值转换为边界值/异常值转换为np.nan)。制作一个布尔特征列,用于标识每个要素的异常值。测试是否有价值的信息或只是模型的噪音。

希望有所帮助,