<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Facturación de electricidad conforme al PVPC
Simulación de la facturación eléctrica para instalaciones monofásicas de potencia contratada ≤ 10 kW y voltaje < 1kV (instalaciones típicas de particulares)
Admite como entrada consumos totales (tantos como periodos de discriminación horaria en la tarifa seleccionada) o bien consumos horarios. 
También genera consumos horarios en base a mediciones totales, usando los perfiles de consumo del PVPC, y genera el CSV de consumo horario conforme al formato utilizado por las distribuidoras.
Facturas
Step1:  Cambios de tarifa
Step2:  Consumo horario
Step3:  Factura a partir de consumo horario
Step4:  Reparto de la facturación en otros intervalos
Step5:  Exportación a dict
Para disponer de las variables asociadas a la factura como un objeto estándar 'JSON serializable'
Step6:  Exportación a HTML
Para generar, o bien una página web 'completa' con la representación de la factura eléctrica, o bien el HTML mínimo con el contenido de la factura, para integrarlo dentro de la página web general
<ASSISTANT_TASK:>
Python Code:
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
import matplotlib.pyplot as plt
from esiosdata import FacturaElec
from esiosdata.facturapvpc import (TIPO_PEAJE_GEN, TIPO_PEAJE_NOC, TIPO_PEAJE_VHC, 
                                   ZONA_IMPUESTOS_PENIN_BALEARES, ZONA_IMPUESTOS_CANARIAS)
from esiosdata.prettyprinting import *
t_0, t_f = '2016-11-01', '2017-01-05'
f1 = FacturaElec(t_0, t_f, tipo_peaje=TIPO_PEAJE_VHC, consumo=[219, 126, 154],
                 zona_impuestos=ZONA_IMPUESTOS_PENIN_BALEARES)
print_ok(f1)
Explanation: Facturación de electricidad conforme al PVPC
Simulación de la facturación eléctrica para instalaciones monofásicas de potencia contratada ≤ 10 kW y voltaje < 1kV (instalaciones típicas de particulares)
Admite como entrada consumos totales (tantos como periodos de discriminación horaria en la tarifa seleccionada) o bien consumos horarios. 
También genera consumos horarios en base a mediciones totales, usando los perfiles de consumo del PVPC, y genera el CSV de consumo horario conforme al formato utilizado por las distribuidoras.
Facturas:
End of explanation
f1.tipo_peaje = 2
print_info(f1)
f1.tipo_peaje = 'GEN'
print_cyan(f1)
Explanation: Cambios de tarifa:
End of explanation
consumo_horario = f1.consumo_horario
print_ok('Consumo horario [{}]: {} horas, TOTAL={:.2f} kWh\nHead:\n{}\nTail:{}'
         .format(type(consumo_horario), len(consumo_horario), consumo_horario.sum(), 
                 consumo_horario.head(), consumo_horario.tail())) 
Explanation: Consumo horario:
End of explanation
f2 = FacturaElec(consumo=consumo_horario)
f2
Explanation: Factura a partir de consumo horario:
End of explanation
# Reparto en varias facturas:
import datetime as dt
consumo_total = f2.consumo_horario
t0, tf = consumo_total.index[0].date(), consumo_total.index[-1].date()
div_dias = f2.num_dias_factura // 3
# print(t0, tf, div_dias, f2.num_dias_factura)
c1 = consumo_total.loc[:t0 + dt.timedelta(days=div_dias)].iloc[:-1]
c2 = consumo_total.loc[t0 + dt.timedelta(days=div_dias): t0 + dt.timedelta(days=2*div_dias)].iloc[:-1]
c3 = consumo_total.loc[t0 + dt.timedelta(days=2*div_dias):]
assert c1.shape[0] + c2.shape[0] + c3.shape[0] == consumo_total.shape[0]
facturas = [FacturaElec(consumo=c) for c in [c1, c2, c3]]
print_ok(sum([f.coste_total for f in facturas]))
print_ok(f2.coste_total)
Explanation: Reparto de la facturación en otros intervalos:
End of explanation
import json
d_factura = f2.to_dict()
print_ok(d_factura)
print_info(json.dumps(d_factura))
Explanation: Exportación a dict
Para disponer de las variables asociadas a la factura como un objeto estándar 'JSON serializable'
End of explanation
from ipywidgets import HTML, Layout
# Html simple, para incluir en otra web
HTML(f2.to_html(), layout=Layout(width='75%'))
# Página web completa:
HTML(f2.to_html(web_completa=True), layout=Layout(width='75%'))
Explanation: Exportación a HTML
Para generar, o bien una página web 'completa' con la representación de la factura eléctrica, o bien el HTML mínimo con el contenido de la factura, para integrarlo dentro de la página web general
End of explanation
<END_TASK>