Parcela diferentes barras de errores en panda concat plot
He hecho una función tratando de trazar algunas barras de la media de algunos valores en un marco de datos. Donde estoy teniendo problemas es añadir los errores respectivos para cada uno de los complots de barras. No puedo entender cómo uno debe usar el Yerr Parámetro correctamente.
def env_mean_concat(dataframe_name, title_name, max_score):
x = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 1'].mean().rename('Environment 1')
y = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 2'].mean().rename('Environment 2')
plot = pd.concat([x, y], axis=1).plot(kind = "bar", yerr=1) #yerr=env_std_dev(dataframe_name).values.T)
plot.set_title("Mean of " + title_name)
plot.set_xlabel("Questions")
plot.set_ylabel("Score")
plot.set_ylim(0, max_score)
También he hecho una función que devuelve la desviación estándar de los datos
def env_std_dev(dataframe_name):
std_1 = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 1'].std()
std_2 = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 2'].std()
return std_1, std_2
En la imagen se puede ver la trama, pero con yerr=1 para fines de demostración.
¿Qué puedo hacer para conseguir std_1 para ser la barra de error en la barra azul, y std_2 para ser el error en la barra naranja?
Pregunta hecha hace 3 años, 5 meses, 0 días - Por codecatalyst
3 Respuestas:
-
Claro que era sólo que tenía problemas para entender la estructura de Yerr!
Cambio del código de desviación
def env_std_dev(dataframe_name): std_1 = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 1'].std() std_2 = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 2'].std() std = [std_1.to_numpy(), std_2.to_numpy()] return std
Que ahora
yerr=env_std_dev(dataframe_name)
dentro env_mean_concat nos da mi trama deseada:
Gracias a los chicos que me apuntan en la dirección correcta. Echaré un vistazo a Seaborn en el futuro con seguridad!
Respondida el Dec 16, 2020 a las 10:24 - por scriptsorcerer
Votos positivos: 0 | Votos negativos: 0 -
Para agregar barras de error a tu gráfico de barras en Pandas usando
concat
yplot
, puedes hacer lo siguiente:- Modifica tu función `env_mean_concat` para incluir los errores estándar de cada entorno:
python def env_mean_concat(dataframe_name, title_name, max_score): x = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 1'].mean().rename('Environment 1') y = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 2'].mean().rename('Environment 2') std_1, std_2 = env_std_dev(dataframe_name) plot = pd.concat([x, y], axis=1).plot(kind="bar", yerr=[std_1.values, std_2.values]) plot.set_title("Mean of " + title_name) plot.set_xlabel("Questions") plot.set_ylabel("Score") plot.set_ylim(0, max_score)
- Asegúrate de que la función `env_std_dev` devuelva las desviaciones estándar en un formato adecuado:
python def env_std_dev(dataframe_name): std_1 = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 1']['Score'].std() std_2 = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 2']['Score'].std() return std_1, std_2
- Asegúrate de que la columna 'Score' sea la que estás utilizando para calcular las desviaciones estándar.
Con estos cambios, en la función
env_mean_concat
, estás pasando los errores estándar correspondientes a cada barra al parámetroyerr
, que acepta una lista de errores para cada barra individual en una trama de barras.Respondida el Dec 17, 2020 a las 10:23 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Para trazar barras de error en un gráfico de barras de pandas, puedes usar el parámetro
yerr
. Este parámetro espera una lista o array de valores de error correspondientes a los valores de datos. En tu caso, tienes dos conjuntos de datos, uno para cada entorno, y quieres trazar las barras de error correspondientes a las desviaciones estándar de cada conjunto de datos.Aquí tienes el código modificado con la corrección:
import pandas as pd def env_mean_concat(dataframe_name, title_name, max_score): x = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 1'].mean().rename('Environment 1') y = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 2'].mean().rename('Environment 2')
Calcula las desviaciones estándar
std_1 = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 1'].std() std_2 = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 2'].std()Crea una lista de barras de error
yerr = [std_1.values, std_2.values]Traza el gráfico de barras con barras de error
plot = pd.concat([x, y], axis=1).plot(kind = "bar", yerr=yerr) plot.set_title("Mean of " + title_name) plot.set_xlabel("Questions") plot.set_ylabel("Score") plot.set_ylim(0, max_score)Con esta modificación, el código calculará las desviaciones estándar para cada entorno y creará una lista de barras de error. Esta lista se pasará al parámetro
yerr
en la funciónplot()
, que trazará las barras de error correspondientes a las barras azules y naranjas.Respondida el Dec 17, 2020 a las 10:34 - por Gemini
Votos positivos: 0 | Votos negativos: 0