【问题标题】:Pandas qcut apply on new data result in NaNPandas qcut 适用于 NaN 的新数据结果
【发布时间】:2020-05-14 09:23:32
【问题描述】:

我正在为一个建模项目分箱,但遇到了这个问题。 此示例使用不带 11 的数据帧获取 bin,当 bin 应用于其中包含 11 的新数据帧时,这会导致 NaN。显然这会发生,但我想知道是否有(通常有)任何聪明的方法可以轻松处理这个问题,例如将 (7.75, 10.0] 转换为 (7.75, np.inf) 的一些技术。


import pandas as pd
a,bin = pd.qcut(pd.DataFrame({"A":[1,2,3,4,5,6,7,8,9,10]}).A,retbins = True, q = 4)
pd.cut(pd.DataFrame({"A":[1,2,11]}).A, bins = bin ,include_lowest = True)


0    (0.999, 3.25]
1    (0.999, 3.25]
2              NaN
Name: A, dtype: category
Categories (4, interval[float64]): [(0.999, 3.25] < (3.25, 5.5] < (5.5, 7.75] < (7.75, 10.0]]

【问题讨论】:

    标签: python pandas dataframe feature-engineering


    【解决方案1】:

    在创建 bin 时只需使用 np.inf 而不是 10

    a,bin = pd.qcut(pd.DataFrame({"A":[1,2,3,4,5,6,7,8,9,np.inf]}).A,retbins = True, q = 4)
    pd.cut(pd.DataFrame({"A":[1,2,11]}).A, bins = bin ,include_lowest = True)
    
    0    (0.999, 3.25]
    1    (0.999, 3.25]
    2      (7.75, inf]
    Name: A, dtype: category
    Categories (4, interval[float64]): [(0.999, 3.25] < (3.25, 5.5] < (5.5, 7.75] < (7.75, inf]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多