pandas crea gráficos de barras con plot.bar (barras verticales) y plot.barh (barras horizontales). El índice de los datos se utiliza para las categorías y cada columna se convierte en un grupo de barras.
plot.bar
Llamar a plot.bar sobre un data frame con varias columnas crea un gráfico de barras agrupadas. Utiliza rot = 0 para mantener las etiquetas en horizontal.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({"oro": [40, 40, 20, 18, 16],
"plata": [44, 27, 12, 19, 26],
"bronce": [42, 24, 13, 16, 22]},
index = ["EE. UU.", "China", "Japón", "Australia", "Francia"])
df.plot.bar(rot = 0)
# plt.show()

Gráfico de barras de una sola columna
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({"oro": [40, 40, 20, 18, 16],
"plata": [44, 27, 12, 19, 26],
"bronce": [42, 24, 13, 16, 22]},
index = ["EE. UU.", "China", "Japón", "Australia", "Francia"])
df["oro"].plot.bar(rot = 0, color = "#D4AF37")
# plt.show()

plot.barh crea barras horizontales, que son más fáciles de leer cuando las etiquetas son largas. Ordena los valores antes de representarlos para crear un gráfico de barras ordenado.
import pandas as pd
import matplotlib.pyplot as plt
s = pd.Series({"Python": 52, "JavaScript": 45, "SQL": 38, "Java": 30, "C#": 27})
s.sort_values().plot.barh()
# plt.show()

Establece stacked = True para apilar las columnas unas sobre otras en lugar de colocarlas una al lado de la otra.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({"oro": [40, 40, 20, 18, 16],
"plata": [44, 27, 12, 19, 26],
"bronce": [42, 24, 13, 16, 22]},
index = ["EE. UU.", "China", "Japón", "Australia", "Francia"])
df.plot.bar(stacked = True, rot = 0)
# plt.show()

Pasa una lista de colores (uno por columna) a color, o un diccionario que asigne un color a cada columna. width establece la anchura de las barras.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({"oro": [40, 40, 20, 18, 16],
"plata": [44, 27, 12, 19, 26],
"bronce": [42, 24, 13, 16, 22]},
index = ["EE. UU.", "China", "Japón", "Australia", "Francia"])
df.plot.bar(color = {"oro": "#D4AF37", "plata": "#A8A9AD", "bronce": "#CD7F32"},
width = 0.8, rot = 0)
# plt.show()

plot.bar devuelve los ejes de matplotlib, por lo que puedes agregar los valores de cada grupo de barras con bar_label.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({"oro": [40, 40, 20, 18, 16],
"plata": [44, 27, 12, 19, 26],
"bronce": [42, 24, 13, 16, 22]},
index = ["EE. UU.", "China", "Japón", "Australia", "Francia"])
ax = df.plot.bar(rot = 0, width = 0.8)
for container in ax.containers:
ax.bar_label(container, fontsize = 8)
# plt.show()

Consulta la guía sobre gráficos con pandas para más opciones o aprende a crear un gráfico de barras en matplotlib y un gráfico de barras apiladas en matplotlib.
También te puede interesar