Tuve la fortuna de encontrar la base de datos en un repositorio de Github que alguien ya había minado previamente. la URL al repositorio es https://github.com/redrbrt/sepomex-zip-codes
In [1]:
# Librerias utilizadas
import pandas as pd
import sys
import os
import csv
import urllib
In [6]:
# Descarga de archivos a carpeta local
fuente = r'https://github.com/redrbrt/sepomex-zip-codes/raw/master/sepomex_abril-2016.csv'
destino = r'D:\PCCS\00_RawData\01_CSV\SEPOMEX\sepomex_abril-2016.csv'
urllib.request.urlretrieve(fuente, destino)
Out[6]:
In [15]:
# Importa el dataset a Python
dataset = pd.read_csv(destino)
dataset.head(3)
Out[15]:
In [16]:
# Corregir longitud de claves
dataset['idEstado'] = dataset.idEstado.apply(lambda x: str(int(x)).zfill(2)) # Correccion a 2 digitos (00)
dataset['idMunicipio'] = dataset.idMunicipio.apply(lambda x: str(int(x)).zfill(3)) # Correccion a 3 digitos (000)
dataset['cp'] = dataset.cp.apply(lambda x: str(int(x)).zfill(5)) # Correccion a 5 digitos (00000)
dataset['CVE_MUN'] = dataset[['idEstado', 'idMunicipio']].apply(lambda x: ''.join(x), axis=1) # Crea CVE_MUN estandar
dataset = dataset.rename(columns={'cp': 'CP'})
dataset.head(3)
Out[16]:
In [17]:
# Creo una copia de trabajo
SEPOMEX1 = dataset
Debido a que el estado y municipio pueden ser derivados desde la CVE_MUN de 5 dígitos, voy a eliminar las columnas:
Tambien eliminaré otras columnas por diferentes motivos:
In [18]:
columnasnointeresantes = ['idEstado', 'estado', 'idMunicipio', 'municipio', 'ciudad', 'zona', 'asentamiento', 'tipo']
for columna in columnasnointeresantes:
del(SEPOMEX1[columna])
orden = ['CP', 'CVE_MUN']
SEPOMEX1 = SEPOMEX1[orden]
SEPOMEX1.head(3)
Out[18]:
De este dataset hay que eliminar renglones duplicados (como ejemplo, los renglones 1 y 2 impresos arriba), que existen porque la base de datos del SEPOMEX contiene un renglón individual cada colonia de las que integran un código postal.
In [19]:
print('[{}] El dataset inició con {} filas, incluyendo repetidas'.format(len(SEPOMEX1), len(SEPOMEX1)))
SEPOMEX1 = SEPOMEX1.drop_duplicates(keep='first', subset=['CP'])
print('[{}] Al quitar las repetidas, el dataset queda con {} filas'.format(len(SEPOMEX1), len(SEPOMEX1)))
In [20]:
SEPOMEX1.head()
Out[20]:
In [22]:
# Guardar dataset como archivo excel
file = r'D:\PCCS\01_Dmine\Datasets\SEPOMEX\sepomex_CP_CVEMUN.xlsx'
writer = pd.ExcelWriter(file)
SEPOMEX1.to_excel(writer, sheet_name = 'DATOS')
writer.save()
print('---------------TERMINADO---------------')