Analizar extractos bancarios con pandas & pyplot

Francisco / Pachu
4 min readDec 24, 2021

--

La mayoría de aplicaciones bancarias te ofrecen una visualización de los datos bancarios, sin embargo es limitada y genérica para todos los usuarios, con nuestro propio notebook seremos libres de adaptarlo a nuestro estilo de vida, prepárate!

1. Estado Actual

Esta es la única parte que ha de ser editada por el usuario, se actualizan los datos y se visualiza dónde se tienen los ahorros y el progreso mensual de los mismos.

data = [['Banco', 3000], 
['Inversiones', 2000],
['PayPal', 400],
['Préstamo', 1000]]

# creamos un dataframe
df_economia = pd.DataFrame(data, columns = ['Activo', 'Cantidad'])
fig = px.pie(values=list(df_economia['Cantidad']), names=list(df_economia['Activo']), title='Distribución actual')
fig.update_traces(textposition='inside', textinfo='percent+label')
fig.show()
px.pie, gráfico realizado con PyPlot
px.line, gráfico realizado con PyPlot

Después de un primer vistazo sobre el estado actual pasamos a procesar los datos para automatizar el análisis del extracto bancario

2. Procesamiento de datos

Leemos el extracto, por lo general los distintos bancos presentan un formato similar:

Dataframe tras la lectura del extracto bancario

Comenzamos a tocar el dataframe, eliminamos columnas irrelevantes, renombramos, añadimos columna “Tipo” y eliminamos registros que no queramos evaluar, como por ejemplo traspasos internos (funcionamiento del banco).

df.drop([‘Fecha valor’, ‘Moneda’, ‘Moneda.1’, ‘Concepto ampliado’, ‘Saldo’], axis=1, inplace=True)df.rename(columns={“Fecha ctble” : “Fecha”, “Concepto” : “Desc”},inplace=True)
df[‘Fecha’] = pd.to_datetime(df[‘Fecha’])
df[‘Tipo’]=df[‘Importe’].apply(lambda x: “ingreso” if x>0 else “gasto”)df.drop(df[df[‘Desc’].str.contains(“TRASPASO AUTOMATICO”)].index, inplace=True)
Dataframe tras el preprocesado.

Ya hemos simplificado los registros del dataframe. A continuación, basándonos en las descripciones de los registros procedemos a la creación de las categorías, si contiene determinadas palabras o secuencia de caracteres será catalogado con una categoría en concreto. Para que se clasifique con la categoría supermercado se necesita que la descripción del registro contenga la secuencia de caracteres de los elementos de la lista supermercado.

 #VERSION SIMPLIFICADA
supermercado = ['alimerka', 'toogoodtog', 'mercadona', 'masymas']
servicios = ['farmacia', 'brico', 'ferreteria', 'serv.']
transporte = ['station', 'gasoil', 'alsa', 'blabla']
def agrupador(desc):
desc = desc.lower()
if any(x in desc for x in supermercado):
categoria = 'supermercado'
elif any(x in desc for x in servicios):
categoria = 'servicios'
elif any(x in desc for x in deportes):
categoria = 'deportes'
else:
categoria = 'OTROS'

return categoria
# aplicamos la funcion agrupador
df['Categoria'] = df['Desc'].apply(agrupador)

Se realizan las últimas modificaciones sobre el dataset, se crean dataframes de los distintos meses (más info en github) y listos para visualizar:

Dataframe final, listo para la magia!

3. Análisis económico

Comenzamos viendo los ingresos y gastos de los últimos 4 meses, automatizado gracias a la librería datetime. El código es sencillo pero extenso, así pues lo evitamos y vemos directamente la visualización:

px.bar, gráfico realizado con PyPlot
fig = px.bar(df_act[df_act['Tipo']=='gasto'].groupby(['Categoria'], as_index = False).sum(),
x='Categoria', y='Importe', title='Último mes de estudio', color='Categoria', text='Importe')
fig.update_layout(xaxis={'categoryarray' : ['alquiler', 'servicios', 'supermercado', 'deportes']})
fig.update_traces(texttemplate='%{text:.2f}')
fig.show()

Analizamos los gastos en función de las categorías del mes de estudio. En cada mes se ha de mejorar el agrupador de categorías para evitar la columna “otros” que representa los no categorizados.

px.bar, gráfico realizado con PyPlot

Realizamos el mismo plot, en este caso tomando como datos el último cuatrimestre. Del mismo modo se puede hacer para todo el año, o semestre, etc.

px.bar, gráfico realizado con PyPlot

Este análisis nos da una idea de cuanto estamos gastando e ingresando y en que sectores, permitiéndonos un mayor entendimiento y control de los gastos. ¿Qué aspecto echas en falta para mejorar el analisis?

--

--

No responses yet