2016-06-19 12 views
9

Sto usando panda qCut splittare alcuni dati in 20 bidoni come parte della preparazione dei dati per la formazione di un modello di classificazione binaria in questo modo:panda Applicazione qCut bidoni per i nuovi dati

data['VAR_BIN'] = pd.qcut(cc_data[var], 20, labels=False) 

La mia domanda è, come può Applico la stessa logica binning derivata dall'istruzione qcut sopra a un nuovo insieme di dati, ad esempio per scopi di validazione del modello. C'è un modo semplice per farlo?

Grazie

risposta

8

Puoi farlo passando retbins=True.

Si consideri il seguente dataframe:

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

pd.qcut(df["A"], 20, retbins=True, labels=False) restituisce una tupla il cui secondo elemento è i bidoni. Così si può fare:

ser, bins = pd.qcut(df["A"], 20, retbins=True, labels=False) 

ser è la serie categorica e bins sono i punti di rottura. Ora è possibile passare i contenitori a pd.cut per applicare lo stesso raggruppamento all'altra colonna:

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 
...