Los box plots resumen la distribución de una variable con sus cuartiles y muestran los valores atípicos. En pandas se crean con plot.box o con el método boxplot, que también permite crear una caja para cada grupo.
plot.box
plot.box dibuja una caja para cada columna numérica del data frame.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
rng = np.random.default_rng(6)
df = pd.DataFrame({"estandar": rng.gamma(6, 7, 300),
"urgente": rng.gamma(4, 5, 300),
"ciudad": rng.choice(["Madrid", "Barcelona", "Sevilla"], 300)})
df[["estandar", "urgente"]].plot.box()
# plt.show()

Box plot horizontal
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
rng = np.random.default_rng(6)
df = pd.DataFrame({"estandar": rng.gamma(6, 7, 300),
"urgente": rng.gamma(4, 5, 300),
"ciudad": rng.choice(["Madrid", "Barcelona", "Sevilla"], 300)})
df[["estandar", "urgente"]].plot.box(vert = False)
# plt.show()

El método boxplot con el argumento by crea una caja para cada grupo de una variable categórica.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
rng = np.random.default_rng(6)
df = pd.DataFrame({"estandar": rng.gamma(6, 7, 300),
"urgente": rng.gamma(4, 5, 300),
"ciudad": rng.choice(["Madrid", "Barcelona", "Sevilla"], 300)})
df.boxplot(column = "estandar", by = "ciudad", grid = False)
plt.suptitle("")
# plt.show()

pandas agrega un título automático a la figura al usar by. Elimínalo con plt.suptitle("") como en el ejemplo anterior.
Pasa un diccionario a color para establecer el color de las cajas (boxes), los bigotes (whiskers), las medianas (medians) y los extremos (caps). Utiliza patch_artist = True para rellenar las cajas.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
rng = np.random.default_rng(6)
df = pd.DataFrame({"estandar": rng.gamma(6, 7, 300),
"urgente": rng.gamma(4, 5, 300),
"ciudad": rng.choice(["Madrid", "Barcelona", "Sevilla"], 300)})
df[["estandar", "urgente"]].plot.box(color = {"boxes": "#264653", "whiskers": "#264653",
"medians": "#E76F51", "caps": "#264653"},
patch_artist = True)
# plt.show()

Puedes pasar a pandas cualquier argumento de la función boxplot de matplotlib. Por ejemplo, showmeans = True agrega la media de cada caja.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
rng = np.random.default_rng(6)
df = pd.DataFrame({"estandar": rng.gamma(6, 7, 300),
"urgente": rng.gamma(4, 5, 300),
"ciudad": rng.choice(["Madrid", "Barcelona", "Sevilla"], 300)})
df[["estandar", "urgente"]].plot.box(showmeans = True)
# plt.show()

Aprende a crear un box plot en matplotlib o en seaborn para tener más opciones de personalización.
También te puede interesar