cuadro de pandas para la columna múltiple

Mis marcos de datos (estructura de pandas) se ve como arriba introduzca la descripción de la imagen aquí

Ahora quiero hacer un diagtwig de caja para cada función en un canvas separado. La condición de separación es la primera columna. Tengo una gráfica similar para el histogtwig (código a continuación) pero no puedo hacer una versión funcional para la gráfica de caja.

hist_params = {'normed': True, 'bins': 60, 'alpha': 0.4} # create the figure fig = plt.figure(figsize=(16, 25)) for n, feature in enumerate(features): # add sub plot on our figure ax = fig.add_subplot(features.shape[1] // 5 + 1, 6, n + 1) # define range for histograms by cutting 1% of data from both ends min_value, max_value = numpy.percentile(data[feature], [1, 99]) ax.hist(data.ix[data.is_true_seed.values == 0, feature].values, range=(min_value, max_value), label='ghost', **hist_params) ax.hist(data.ix[data.is_true_seed.values == 1, feature].values, range=(min_value, max_value), label='true', **hist_params) ax.legend(loc='best') ax.set_title(feature) 

El código anterior produce una salida tal como (adjunta solo parte de él): introduzca la descripción de la imagen aquí

DataFrame.boxplot() automatiza esto bastante bien:

 import numpy as np import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame({'is_true_seed': np.random.choice([True, False], 10), 'col1': np.random.normal(size=10), 'col2': np.random.normal(size=10), 'col3': np.random.normal(size=10)}) fig, ax = plt.subplots(figsize=(10, 10)) df.boxplot(['col1', 'col2', 'col3'], 'is_true_seed', ax) 

El primer argumento le dice a los pandas qué columnas trazar, el segundo qué columna agrupar (lo que usted llama la condición de separación) y el tercero sobre qué ejes dibujar.

Listar todas las columnas, pero la que desea agrupar puede ser tedioso, pero puede evitarlo al omitir ese primer argumento. Entonces tienes que nombrar explícitamente a los otros dos:

 df.boxplot(by='is_true_seed', ax=ax)