Conteos de valor de gráfico de pandas en orden descendente

Salman Mehmood 21 junio 2023
Conteos de valor de gráfico de pandas en orden descendente

El objetivo principal de este artículo es demostrar cómo podemos trazar valores en un gráfico en orden descendente con la ayuda de Matplotlib en Python.

Recuentos de valor de gráfico en Pandas

El problema

Se puede almacenar y acceder a una gran cantidad de datos en cualquier momento utilizando el Dataframe, según la necesidad y la situación. Brinda flexibilidad para almacenar múltiples tipos de datos en una sola estructura de datos ordenada para uso personalizado.

Si bien Dataframe almacena datos, a veces también es necesario visualizarlos. Usando Matplotlib, visualizar datos es bastante fácil.

Dependiendo del escenario, puede darse el caso de que tengamos que visualizar los datos de forma descendente.

Considere el siguiente código:

import pandas as pd
import matplotlib.pyplot as plt


keyItems = ("a", "a", "a", "a", "a", "b", "b", "b", "b", "b", "c", "c", "c", "d")
idData = ("X", "X", "X", "X", "X", "X", "X", "X", "Y", "X", "X", "X", "X", "X")

df = pd.DataFrame({"keys": keyItems, "ids": idData})
print("\nDataframe:\n" + str(df))
print("\nValue Counts:\n" + str(df.value_counts()))

df.value_counts().plot(kind="barh")

plt.show()

Producción :

Dataframe:
   keys ids
0     a   X
1     a   X
2     a   X
3     a   X
4     a   X
5     b   X
6     b   X
7     b   X
8     b   Y
9     b   X
10    c   X
11    c   X
12    c   X
13    d   X

Value Counts:
keys  ids
a     X      5
b     X      4
c     X      3
b     Y      1
d     X      1
dtype: int64

La trama:

trama del problema

Del código mencionado anteriormente, se puede ver que las claves y sus correspondientes ids se han declarado por separado, con todas las claves almacenadas en una variable llamada keyItems y sus correspondientes id almacenadas en una variable llamada idData.

Después de instanciar el Dataframe, comprobamos con qué frecuencia se produjo un determinado valor utilizando el método value_counts. Después de eso, trazamos el gráfico y lo mostramos en la pantalla usando el método show, que es parte de matplotlib.plot.

A partir de la gráfica, se puede ver que el gráfico se traza de manera ascendente. En función de los requisitos del proyecto o de algún otro escenario, puede existir la posibilidad de que se requiera trazar el gráfico de forma descendente en lugar de que se muestre el orden ascendente en el gráfico de salida.

La solución

Con la adición de sort_values() antes de trazar el gráfico, es posible ordenar los valores en orden descendente, lo que da como resultado que los valores más grandes aparezcan en la parte superior, mientras que los más pequeños en la parte inferior de la salida.

Considere el siguiente código:

df.value_counts().sort_values().plot(kind="barh")

El siguiente código demuestra el efecto de sort_values() en value_counts().

print("\nValue Counts:\n" + str(df.value_counts()))
print("\nValue Counts - Sorted:\n" + str(df.value_counts().sort_values()))

Código completo:

import pandas as pd
import matplotlib.pyplot as plt

keyItems = ("a", "a", "a", "a", "a", "b", "b", "b", "b", "b", "c", "c", "c", "d")
idData = ("X", "X", "X", "X", "X", "X", "X", "X", "Y", "X", "X", "X", "X", "X")

df = pd.DataFrame({"keys": keyItems, "ids": idData})
print("\nValue Counts:\n" + str(df.value_counts()))
print("\nValue Counts - Sorted:\n" + str(df.value_counts().sort_values()))

df.value_counts().sort_values().plot(kind="barh")
plt.show()

Producción :

Value Counts:
keys  ids
a     X      5
b     X      4
c     X      3
b     Y      1
d     X      1
dtype: int64

Value Counts - Sorted:
keys  ids
b     Y      1
d     X      1
c     X      3
b     X      4
a     X      5

La trama:

trama del problema

Es posible ordenar la salida de values_count en orden descendente usando el método sort_values, con la aparición más grande en la parte superior del gráfico y la más pequeña en la parte inferior de la gráfica de salida.

Si surgiera la necesidad, también es posible ordenar los values_count por índice en lugar de valores utilizando el método sort_index.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Artículo relacionado - Pandas Plot