Calcular el porcentaje de una columna en pandas

logo python

Veamos como  calcular el porcentaje de una columna en Pandas, para lo cual usaremos sus propia función sum()

Como sabemos Pandas trabaja con dataframes o marcos de datos y también queda claro, que el porcentaje se obtiene dividiendo  el valor total entre  la suma de todos los valores y luego multiplicando ese resultado por 100.

Lo que hacemos, no es otra cosa que aplicar este mismo procedimiento a la columna que deseamos analizar.

Primero sumaremos toda la columna con sum(), que es el método que se emplea para sumar en Pandas.

La sintaxis seria esta:

df [porcentaje] =(df ['resultado'] / df ['column_a_sumar'].sum()) * 100

Otros post sobre Python

Viéndolo en un ejemplo practico seria esto:

import pandas as pd 
import numpy as np 

#tenemos una matriz accesorios con dos columnas (periodos y cantidad)   
accesorios = { 
     'periodos': ['periodo_1', 'periodo_2', 'periodo_3', 
             'periodo_4', 'periodo_5', 'periodo_6', 
             'periodo_7'], 
     'cantidad': [100, 40, 47, 78, 89, 78, 64]} 

# instanciamos accesorios como un dataframe de pandas,
# y definimos sus columnas
   
accesorios = pd.DataFrame(accesorios,  
                   columns = ['periodos', 
                             'cantidad']) 
# calculamos la columna porcentaje, la cual se añade automaticmente # al dataframe accesorios. Dividimos la cantidad entre la suma de 
# la columna y la multiplicamos por 100
accesorios['porcentaje'] = (accesorios['cantidad'] / 
                  accesorios['cantidad'].sum()) * 100
  
accesorios

Como ven hemos calculado el porcentaje de la columna para saber que magnitud del total representa cada período.

La salida es:

Out[1]:
	periodos	cantidad	porcentaje
0	periodo_1	100	20.161290
1	periodo_2	40	8.064516
2	periodo_3	47	9.475806
3	periodo_4	78	15.725806
4	periodo_5	89	17.943548
5	periodo_6	78	15.725806
6	periodo_7	64	12.903226

Y esto es todo, espero ayudar a alguien con este post.

No discutas nunca con un imbécil, te llevará a su terreno y allí te ganará por experiencia

D.
Translate »