Mapa de transacciones inmobiliarias, tratamiento de fichero

Posted on by - 0 comments

Continuando el post anterior, una vez que se tiene el fichero que se quiere tratar, lo primero que se hace es abrir este y analizar el formato en el que se encuentra.

En este caso los datos que se quieren obtener se encuentran en una misma hoja, lo cual simplifica el tratamiento. Por otra parte hay varias celdas combinadas (indicando los años), e imágenes, lo cual puede causar problemas a la hora de importar la hoja.

Es hora de empezar a fijarse en los detalles, que después nos ahorraran muchos cabreos.

  1. Nombre de la hoja, en este caso es "Total ", si, lleva un espacio al final del nombre, hay que tener cuidado con estos detalles.

  2. Numero de filas al principio del fichero que no son necesarias, en este caso vemos que el numero de os trimestres están en la fila 13, por tanto las 12 primeras filas las podemos saltar.

  3. Frecuencia de los datos, en este caso es trimestral.

  4. Si se analiza un poco la tablas, se podrá observar, que hay filas, donde en la columna B estan el nombre de la provincia o comunidad autónoma, pero no tiene datos, por tanto estas se deberán de eliminar.

Con esto se tienen todas las herramientas para convertir el fichero excel, en una tabla de datos, con la que poder trabajar de forma eficiente.

En primer lugar se lee el fichero excel.

#Se importa pandas
import pandas as pd

"""Se lee el fichero excel, pasando como parametros la ruta del fichero y el nombre de la hoja, "transacciones_numicipales.xls",sheet_name="Total " (cuidado con el espacio en el nombre de la hoja) como las primeras 11 filas no contienen datos, se obvian skiprows=12, y se toma como nombre de los campos la primera fila a partir de la 12 header=0"""

df = pd.read_excel("transacciones_municipales.xls",sheet_name="Total ",header=0, skiprows=12)

En segundo lugar se genera un indice con la columna B, aquella donde se encuentran los nombres de todos los municipios.

"""Se genera un íncide de la tabla con la segunda columna, esta esta nombrada como Unnamed: 1, ya que esta celda esta vacía y que el resultado reemplace a la variable existente inplace=True"""

df.set_index('Unnamed: 1', inplace=True)

En tercer lugar, para quitar registros incensarios y limpiar la tabla de datos, se eliminan columnas y filas vacías.

"""Se eliminan las columnas y filas vacias, se especifica que toda la fila este vacia how='all', y que el resultado reemplace a la variable existente inplace=True"""

df.dropna(axis=0, how='all',inplace=True)
df.dropna(axis=1, how='all',inplace=True)

Por último se renombran las columnas con las fechas correspondientes, ya que hasta este momento solo tenían el número de trimestre.

"""Se renombran las columnas, para ello se genera las fechas entre 31/03/2004 y 01/07/2018 (primer trimestre de 2004 
y segundo trimestre de 2018) que son el inicio y el final del fichero que se esta tratando, y la frecuencia con la que
se genera cada nuevo registro es cada 3 meses freq='3M'"""
df.columns = pd.date_range(start='3/31/2004', end='7/1/2018', freq='3M')

#Se imprime por pantalla el resultado
print(df)

Con esto ya se tienen los datos preparados para poder realizar el mapa.

Código completo.

#Se importan la librería pandas
import pandas as pd

"""Se lee el fichero excel, pasando como parametros la ruta del fichero y el nombre de la hoja,
"transacciones_numicipales.xls",sheet_name="Total " (cuidado con el espacio en el nombre de la hoja)
como las primeras 11 filas no contienen datos, se obvian skiprows=12, y se toma como nombre de
los campos la primera fila a partir de la 12 header=0"""
df = pd.read_excel("transacciones_numicipales.xls",sheet_name="Total ",header=0, skiprows=12)

"""Se genera un íncide de la tabla con la segunda columna, esta esta nombrada como Unnamed: 1, 
ya que esta celda esta vacía y que el resultado reemplace a la variable existente inplace=True"""
df.set_index('Unnamed: 1', inplace=True)

"""Se eliminan las columnas y filas vacias, se especifica que toda la fila este vacia how='all', y que el resultado
reemplace a la variable existente inplace=True"""
df.dropna(axis=0, how='all',inplace=True)
df.dropna(axis=1, how='all',inplace=True)

"""Se renombran las columnas, para ello se genera las fechas entre 31/03/2004 y 01/07/2018 (primer trimestre de 2004 
y segundo trimestre de 2018) que son el inicio y el final del fichero que se esta tratando, y la frecuencia con la que
se genera cada nuevo registro es cada 3 meses freq='3M'"""
df.columns = pd.date_range(start='3/31/2004', end='7/1/2018', freq='3M')

#Se imprime por pantalla el resultado
print(df)

Comment




HTML Preview:


Comments

There's no comments...