<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Usuarios de Energía Eléctrica
Parámetros que se obtienen desde esta fuente
ID |Descripción
---|
Step1:  2. Descarga de datos
Step2:  3. Estandarizacion de datos de Parámetros
Step3:  Exportar Dataset
Antes de exportar el dataset voy a reducir su tamaño porque tiene 82,236 renglones divididos por tarifa. ÚNicamente voy a dejar los totales de todas las tarifas.
<ASSISTANT_TASK:>
Python Code:
descripciones = {
    'P0609': 'Usuarios Electricos'
}
# Librerias utilizadas
import pandas as pd
import sys
import urllib
import os
import csv
import zipfile
# Configuracion del sistema
print('Python {} on {}'.format(sys.version, sys.platform))
print('Pandas version: {}'.format(pd.__version__))
import platform; print('Running on {} {}'.format(platform.system(), platform.release()))
Explanation: Usuarios de Energía Eléctrica
Parámetros que se obtienen desde esta fuente
ID |Descripción
---|:----------
P0609|Usuarios eléctricos
End of explanation
url = r'http://datos.cfe.gob.mx/Datos/Usuariosyconsumodeelectricidadpormunicipio.csv'
archivo_local = r'D:\PCCS\00_RawData\01_CSV\CFE\UsuariosElec.csv'
if os.path.isfile(archivo_local):
        print('Ya existe el archivo: {}'.format(archivo_local))
else:
    print('Descargando {} ... ... ... ... ... '.format(archivo_local))
    urllib.request.urlretrieve(url, archivo_local)
    print('se descargó {}'.format(archivo_local))
Explanation: 2. Descarga de datos
End of explanation
dtypes = {                        # Los valores numericos del CSV estan guardados como " 000,000 " y requieren limpieza
    'Cve Mun':'str',
    '2010':'str', 
    '2011':'str', 
    '2012':'str', 
    '2013':'str', 
    '2014':'str', 
    '2015':'str', 
    '2016':'str', 
    'ene-17':'str', 
    'feb-17':'str', 
    'mar-17':'str', 
    'abr-17':'str', 
    'may-17':'str', 
    'jun-17':'str', 
    'jul-17':'str', 
    'ago-17':'str', 
    'sep-17':'str', 
    'oct-17':'str', 
    'nov-17':'str', 
    'dic-17':'str'}
# Lectura del Dataset
dataset = pd.read_csv(archivo_local, skiprows = 2, nrows = 82236, na_values = ' -   ',
                     dtype=dtypes)   # Lee el dataset
dataset['CVE_EDO'] = dataset['Cve Inegi'].apply(lambda x: '{0:0>2}'.format(x))               # CVE_EDO de 2 digitos
dataset['CVE_MUN'] = dataset['CVE_EDO'].map(str) + dataset['Cve Mun']
dataset.head()
# Quitar espacios en blanco y comas de columnas que deberian ser numericas
columnums = ['2010', '2011', '2012', '2013', '2014', '2015', '2016', 'ene-17', 'feb-17', 'mar-17', 'abr-17', 'may-17', 'jun-17', 'jul-17', 'ago-17', 'sep-17', 'oct-17', 'nov-17', 'dic-17']
for columna in columnums:
    dataset[columna] = dataset[columna].str.replace(' ','')
    dataset[columna] = dataset[columna].str.replace(',','')
dataset.head()
# Convertir columnas a numericas 
columnasanios = ['2010', '2011', '2012', '2013', '2014', '2015', '2016', 'ene-17', 'feb-17',
 'mar-17', 'abr-17', 'may-17', 'jun-17', 'jul-17', 'ago-17', 'sep-17', 'oct-17', 'nov-17', 'dic-17']
for columna in columnasanios:
    dataset[columna] = pd.to_numeric(dataset[columna], errors='coerce', downcast = 'integer')
dataset.head()
# Quitar columnas que ya no se utilizarán
dropcols = ['Cve Edo', 'Cve Inegi', 'Cve Mun', 'Entidad Federativa', 'Municipio', 'Unnamed: 25', 'CVE_EDO']
dataset = dataset.drop(dropcols, axis = 1)
# Asignar CVE_EDO como indice
dataset = dataset.set_index('CVE_MUN')
dataset.head()
# Sumar las columnas de 2017
columnas2017 = ['ene-17', 'feb-17', 'mar-17', 'abr-17', 'may-17', 'jun-17', 'jul-17', 'ago-17', 'sep-17', 'oct-17', 'nov-17', 'dic-17']
dataset['2017'] = dataset[columnas2017].sum(axis = 1)
# Eliminar columnas de 2017
dataset = dataset.drop(columnas2017, axis = 1)
dataset.head()
Explanation: 3. Estandarizacion de datos de Parámetros
End of explanation
len(dataset)
dataset.head(40)
dataset_total = dataset[dataset['Tarifa'] == 'TOTAL']
dataset_total.head()
len(dataset_total)
Explanation: Exportar Dataset
Antes de exportar el dataset voy a reducir su tamaño porque tiene 82,236 renglones divididos por tarifa. ÚNicamente voy a dejar los totales de todas las tarifas.
End of explanation
<END_TASK>