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:

    enter image description here

    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() y plt.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