Procediento para la obtención de frecuencias absolutas en Python a partir de una lista de países.

Una de las enormes ventajas de programar en Python es disponer de librerías y modulos como Pandas para utilizar funciones sin necesidad de desarrolar su código. Aun así, hoy vamos a proceder a obtener las frecuencias absolutas de los elementos que se encuentran en una lista de Python sin librerías.

Si bien este ejercicio con Pandas sería de máxima facilidad con el método value_counts, en este post lo vamos a llevar a cabo mediante la libreria básica de Python.

Frecuencias absolutas

Trabájese sobre la hipótesis de que tenemos una lista de paises de la que queremos obtener las frecuencias con Python:

De lo que se trata es de crear un listado con los países que aparecen y además obtener su frecuencia, esto es el número de veces que se repite cada uno.

Para ello vamos a utilizar un diccionario vacío que se declara del siguiente modo:

Counts funcionará como un acumulador que contiene paises y su frecuencia.

Los diccionarios en Python son ideales para este procedimiento, puesto que almacenan información mediante una estructura de clave-valor o key-value, es decir trabaja con pares de valores.

Pues bien, mediante la siguiente expresión y mediante un <<bucle for>>, Python irá almacenando los valores nombre-país como ‘key’ y el conteo de veces que aparece como ‘values’.

Not in para obtener frecuencias con Python

Mediante la expresión <<not in>> lograremos que los países que aun no aparezcan en counts sean introducidos con frecuencia uno y más tarde si se repite, aumente su frecuencia en uno.

bucle for en Python

Con un simple print de counts, podremos obtener las frecuencias obtenidas:

consulta de diccionario en Python
En la consola de Spyder es suficiente con insertar el nombre de una variable para obtener su contenido. En este caso un diccionario con los países y el contéo de cada uno.

Para proceder a ordenar los valores, y al no disponer de la función sort en un diccionario, podemos acudir a una lista. Para ello almacenaremos los elementos de counts en una lista vacía que ordene por values (frecuencia) y no por nombre, puesto que lo que buscamos es un orden numérico, no alfabético.

Creamos una lista vacía, llamada lista_paises.

Con for y la extracción de los items de counts (keys y values) podremos ir extrayendo las frecuencias obtenidas para luego ordenarlas en orden inverso con sort, método que sí está disponible en las listas.

Extracción de pares de valores de un diccionario de Python

Listar las frecuencias obtenidas

Finalmente y mediante el uso del <<bucle for>> extraeremos el listado de los países con sus frecuencias, ahora almacenados y en orden por frecuencia dentro de la lista de mayor a menor.

Aunque lista_paises es una lista y no un diccionario, Python permite la extracción de sus parejas con keys y values como si de un diccionario se tratará, pero sin utilizar la expresión items():

Bucle for en Python

Como se observa en la consulta se extrae invirtiendo el orden. Primero values y más tarde keys. Obteniendo la siguiente salida:

Si lo preferís podemos usar f-string para extraer en mayúsculas los nombres de los países listados:

Obtendremos de este modo una lista más atractiva:

Frecuencias obtenidas en Python
Frecuencia de países extraida a partir de la lista original

Así pues, se ha llevado a cabo un procedimiento habitual en análisis de los datos. El comando freq o frequence en SPSS no está disponible en Python. Es por esto que hemos tenido que desarrollar código para no acudir a las librerías de Pandas o Sidetable, que hubiera sido la opción más lógica, sencilla y elegante.

Si quieres saber más sobre Python, pincha aquí.

Autor: ignacio

Profesor de Sistemas de Gestión de Información

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *