Hacemos una revisión completa cada uno de los enunciados en nuestro espacio con la meta de mostrarte siempre información con la mayor veracidad y actualizada.
Solución:
este código:
data['2013-08-17'].boxplot(by='SPECIES')
No funcionará, ya que boxplot es una función para DataFrame y no para Series.
Mientras que en Pandas > 0.18.1 la función boxplot tiene el argumento columns
que define de qué columna se toman los datos.
Entonces
data.boxplot(column='2013-08-17',by='SPECIES')
debe devolver el resultado deseado.
Un ejemplo con el conjunto de datos Iris:
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('https://raw.githubusercontent.com/pandas-dev/pandas/master/pandas/tests/data/iris.csv')
fig, ax = plt.subplots(figsize=(10,8))
plt.suptitle('')
data.boxplot(column=['SepalLength'], by='Name', ax=ax)
crea:
plt.suptitle('')
apaga los molestos subtítulos automáticos. Y, por supuesto, los argumentos de columna aceptan listas de columnas… así que
data.boxplot(column=['SepalLength', 'SepalWidth'], by='Name', ax=ax)
también funciona
Creo que lo descubrí, tal vez esto sea útil para alguien:
grouped = data['2013-08-17'].groupby(axis=1, level='SPECIES').T
grouped.boxplot()
Básicamente, la salida groupby debía transponerse para que el diagrama de caja mostrara la agrupación correcta: