将pandas qcut bin应用于新数据

GRN*_*GRN 21 python pandas

我正在使用pandas qcut将一些数据拆分为20个bin,作为数据准备的一部分,用于训练二进制分类模型,如下所示:

data['VAR_BIN'] = pd.qcut(cc_data[var], 20, labels=False)
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何将从上面的qcut语句派生的相同分箱逻辑应用于一组新数据,比如用于模型验证.是否有捷径可寻?

谢谢

ayh*_*han 34

你可以通过传递retbins=True.

考虑以下DataFrame:

import pandas as pd
import numpy as np
prng = np.random.RandomState(0)
df = pd.DataFrame(prng.randn(100, 2), columns = ["A", "B"])
Run Code Online (Sandbox Code Playgroud)

pd.qcut(df["A"], 20, retbins=True, labels=False)返回一个元组,其第二个元素是bin.所以你可以这样做:

ser, bins = pd.qcut(df["A"], 20, retbins=True, labels=False)
Run Code Online (Sandbox Code Playgroud)

ser是分类系列,bins是断点.现在,您可以传递二进制文件以pd.cut将相同的分组应用于另一列:

pd.cut(df["B"], bins=bins, labels=False, include_lowest=True)
Out[38]: 
0     13
1     19
2      3
3      9
4     13
5     17
...
Run Code Online (Sandbox Code Playgroud)

  • 好答案。希望这可以帮助像我一样沉闷的人:*第一步是“ qcut”(带有“ q”),第二步是“ cut”(没有“ q”)* :) (2认同)
  • 通过使用这个逻辑,我在验证集中得到了 Na 值。有什么办法可以解决吗? (2认同)