Python pandas bar gráfico con títulos de columna
Tengo el siguiente marco de datos:
year tradevalueus partner
0 1989 26065 Algeria
1 1989 12345 Albania
2 1991 178144 Argentina
3 1991 44384 Bhutan
4 1990 1756844 Bulgaria
5 1990 57088556 Myanmar
Quiero un gráfico de barras por año en el eje x para cada socio comercial con valores. Por esto, con los datos anteriores, quiero tener 3 años en el eje x con 2 gráficos de barras para cada año con la variable de valor comercial y quiero nombrar cada uno de estos por la columna de socio. He comprobado df.plot.bar()
y otros posts de apiloverflow sobre gráficos de barras pero no dan la salida que deseo. Cualquier puntero sería muy apreciado.
¡Gracias!
Pregunta hecha hace 3 años, 4 meses, 28 días - Por algorithmadept
3 Respuestas:
-
Puede pivotar la tabla y la trama:
df.pivot(index='year',columns='partner',values='tradevalueus').plot.bar()
O utilizar el marino:
import seaborn as sns sns.barplot(x='year', y='tradevalueus', hue='partner', data=df, dodge=True)
Producto:
Respondida el Dec 18, 2020 a las 04:18 - por algorithmarchitect
Votos positivos: 0 | Votos negativos: 0 -
Puedes lograr el gráfico de barras que deseas utilizando la biblioteca pandas y matplotlib en Python. Aquí tienes el código que puedes utilizar:
python import pandas as pd import matplotlib.pyplot as plt data = {'year': [1989, 1989, 1991, 1991, 1990, 1990], 'tradevalueus': [26065, 12345, 178144, 44384, 1756844, 57088556], 'partner': ['Algeria', 'Albania', 'Argentina', 'Bhutan', 'Bulgaria', 'Myanmar']} df = pd.DataFrame(data)
Crear una figura y un conjunto de ejes
fig, ax = plt.subplots()Iterar sobre cada año para crear el gráfico de barras
for year in df['year'].unique(): df_year = df[df['year'] == year] partners = df_year['partner'] values = df_year['tradevalueus'] ax.bar(partners, values, label=str(year))Configurar el eje x y las etiquetas
ax.set_xticklabels(df['partner'], rotation=45, ha='right') ax.set_xlabel('Partner') ax.set_ylabel('Trade Value (US$)') ax.set_title('Trade Value by Partner and Year') ax.legend(title="Year") plt.tight_layout() plt.show()Este código generará un gráfico de barras con el nombre de cada socio comercial en el eje x, dos barras por cada año con la variable de valor comercial y con los nombres de los socios como etiquetas. Además, el gráfico mostrará los años en la leyenda.
Espero que esta solución sea de ayuda. ¡Déjame saber si tienes alguna otra pregunta o duda!
Respondida el Dec 19, 2020 a las 04:13 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Paso 1: Pivotar el dataframe para tener columnas para cada año
python import pandas as pd df_pivoted = df.pivot_table(index='partner', columns='year', values='tradevalueus')
Paso 2: Trazar el gráfico
python import matplotlib.pyplot as plt ax = df_pivoted.plot.bar(figsize=(12, 8))
Establecer títulos de columna
ax.set_xticklabels(ax.get_xticklabels(), rotation=45)Añadir títulos de gráfico y ejes
plt.title('Valor comercial por año y socio comercial') plt.xlabel('Año') plt.ylabel('Valor comercial (USD)') plt.show()Explicación:
El método
pivot_table
pivota el dataframe para crear una nueva columna para cada año, con los valores comerciales correspondientes como entradas.df_pivoted.plot.bar()
crea el gráfico de barras, con los años (ahora columnas) en el eje X y los valores comerciales en el eje Y.ax.set_xticklabels()
rota las etiquetas del eje X para que sean más legibles.plt.title()
,plt.xlabel()
yplt.ylabel()
establecen los títulos del gráfico y los ejes.plt.show()
muestra el gráfico.Resultado:*
Un gráfico de barras con tres años (1989, 1990, 1991) en el eje X y dos gráficos de barras apilados (uno para cada socio comercial) para cada año, con los valores comerciales correspondientes. Cada gráfico de barras está etiquetado con el nombre del socio comercial.
Respondida el Dec 19, 2020 a las 04:27 - por Gemini
Votos positivos: 0 | Votos negativos: 0