a
    ‡þ*cÕ+  ã                   @   s:  d Z ddlZddlZddlZddlZddlmZ ddlmZ ddlZ	ddl
ZddlZejdejdejd� e e¡Ze ¡ dfd	d
„Zdd„ Zdd„ Zd!dd„Zd"dd„Zdd„ Zedk�r6e ¡ ZejdksÖJ dƒ‚e e¡jZ de_!e "e ¡ e "d¡ dZ#ee#ddƒ e "d¡ e ¡ e Z$e "de$d›d �¡ dS )#z+Tratamiento de datos de turismo para djangoé    N)Údatetime)Úrelativedeltaz/%(asctime)s %(levelname)s:%(name)s: %(message)sz%H:%M:%S)ÚformatÚlevelÚdatefmtÚstreamFc                 C   sÊ  t  d¡}||_dgd }�z„g d¢}g d¢}g d¢}| dt| ƒ ¡ t | d¡}t | d	¡}t | d
¡}	t | d¡}
t | d¡}t | d¡}t | d¡}|t|ƒd  }|t|ƒd  }t | d¡}t | d¡}t | d¡}t | d¡}t | d¡}|t|ƒd  }t | d¡| }t | d¡}z&t |
d ¡}t |d¡}tdƒ}W n   tdƒ}Y n0 | |||	|
||||||||||||||g}| d| ¡ | d| ¡ | d|	 ¡ | d|
 ¡ | d| ¡ | d | ¡ | d!| ¡ | d"| ¡ | d#| ¡ | d$| ¡ | d%| ¡ | d&| ¡ | d'| ¡ | d(| ¡ | d)| ¡ | d*| ¡ | d'| ¡ | d+| ¡ | d,tt	|ƒƒ ¡ |W S    t  
d- t ¡ ¡¡ | Y S 0 d.S )/uÁ  
    Return Salida[](string):
    
    0 - Fecha de entrada
    1 - YYYY-MM-DD HH:MM
    2 - Fecha DD-MM-YYYY
    3 - Fecha YYYY-MM-DD
    4 - AÃ±o
    5 - Mes
    6 - Mes - nombre
    7 - AÃ‘O-MES
    8 - DÃ­a
    8 - DÃ­a de la semana  - nÃºmero 1..7
    10 - DÃ­a - nombre
    11 - DÃ­a del aÃ±o
    12 - DÃ­as del aÃ±o
    13 - Hora
    14 - Minuto
    15 - Trimestre
    16 - AÃ‘O-TRIMESTRE
    17 - Semana
    18 - AÃ‘O-SEMANA
           
    z&calendarior   é   )ZENEÚFEBÚMARZABRÚMAYÚJUNÚJULZAGOÚSEPÚOCTÚNOVZDIC)ÚLÚMÚXÚJÚVÚSÚD)Ú01r   r   Ú02r   r   Ú03r   r   Ú04r   r   z	Date in: z%Y-%m-%d %H:%Mz%d-%m-%Yz%Y-%m-%dz%Yz%mz%dz%ué   z%jz%Hz%Mz%Vz%YM%mz%YQz%YW%Vz-02-29z%bin  im  zFecha H:M: zFecha D-M-Y: zFecha Y-M-D: u   AÃ±o: zMes: zMes (nombre): u
   AÃ±o-Mes: zDia: u   DÃ­a Semana: u   DÃ­a Semana (nombre): u   DÃ­a del AÃ±o: u   DÃ­as del AÃ±o: zSemana: zMinuto: zTrimestre: u   AÃ±o-Trimestre: u   AÃ±o-Semana: u   NÂº datos: úError: [{}]N)ÚloggingÚ	getLoggerÚdisabledÚinfoÚstrr   ÚstrftimeÚintÚfromisoformatÚlenÚ	exceptionr   ÚsysÚexc_info)ÚfechaÚ	local_logÚloggerÚsalidaZ
nombre_mesZ
nombre_diaZ	trimestreZfhmÚfÚfrÚyÚmÚdÚdsÚmnÚdnÚdyÚhoraZminutoZsemanaÚymÚqZyqZywZ	febrero29ZbisiestoZdiasanyo© r:   úJ/home/ja/Documentos/test/lartica/datascience/utils/turismo/turismo_data.pyÚ
calendario'   sn    

*r<   c              	   C   s€   t  d¡}| |_zJ| d| ¡ tj|dd�}| d t|ƒt|ƒ¡¡ | | 	¡ ¡ |W S    t  
d t ¡ ¡¡ Y n0 dS )a,  
    Transform file to dataframe
    
    Parameters:
    ----------                                                                                       
        local_log: False activa el logging
        f: fichero de entrada
    Return:
    ----------
        df: dataframe datos del fichero
    z&transform_file_dfz	File in: r   )ÚheaderzReturn: df-> len: {}, type: {}r   N)r   r   r    r!   ÚpdÚ
read_excelr   r&   ÚtypeÚdescriber'   r(   r)   )r+   r.   r,   Údfr:   r:   r;   Útransform_file_dfŒ   s    
rC   c              	   C   s¦  t  d¡}| |_�zj| d¡ |j|d |k }|g d¢ }|jddd� | d¡}|d  d	¡|d
< t|d |d
  d |d
  dƒ|d< t	 
|j¡|d< |d  dd„ ¡|d< |jtjtj gddd� | |¡}|d  ¡ }|d  ¡ }|d
  ¡ }	|d  ¡ }
|dg }|d
g }|dg }t|ddg jƒ}| d t|ƒt|ƒ¡¡ | | ¡ ¡ | |j¡ ||||	|
g}|W S    t  d t ¡ ¡¡ | Y S 0 dS )u\  
    Filtra el dataframe por categoria
    
    Parameters:
    ----------                                                                                         
        local_log: False activa el logging
        df: dataframe con los datos de todas las categorÃ­as
        cod: codigo de la categoria a filtrar
        n_last: filtramos los n ultimos meses
    return:
    ----------
        xy : diccionario con PERIDO - VALOR
        x : PERIDO
        y : VALOR
        y_12 : VALOR en el 12 periodos antes
        y_var12 : % de variaciÃ³n respecto al mismo periodo del aÃ±o anterior
        
    z&transform_filter_catzdf in: ÚCOD)ÚFECHAÚVALORrD   Ú	CATEGORIArE   T©ÚinplacerF   é   ÚVALOR_12éd   é   ÚVALOR_VAR12ÚPERIODOc                 S   s   t | ƒd S )Né   )r<   )Úxr:   r:   r;   Ú<lambda>È   ó    z&transform_filter_cat.<locals>.<lambda>r   z Return: df0 -> len: {}, type: {}r   N)r   r   r    r!   ÚlocÚ	set_indexÚsort_valuesÚshiftÚroundr>   Úto_datetimeÚindexÚapplyÚreplaceÚnpÚinfÚtailÚtolistÚdictÚvaluesr   r&   r@   rA   Údtypesr'   r(   r)   )r+   rB   ÚcodZn_lastr,   Zdf1Zdf2rQ   r0   Úy_12Úy_var12Údf0Z	df0_lag12Z	df0_var12Úxyr-   r:   r:   r;   Útransform_filter_cat§   s<    


&



ri   ú+/home/ja/Documentos/test/lartica/db.sqlite3c           
   	   C   s¨   t  dt ¡ jj ¡}d|_zf| d¡ t 	| ¡}| 
¡ }d}t ||¡}| ¡  t|jƒ}|d  ¡ }|d  ¡ }|||g}	|	W S    | d t ¡ ¡¡ Y n0 d S )NÚ__FzBD - Categoriasz5SELECT DISTINCT COD, CATEGORIA FROM TurismoCategoria;rD   rG   r   )r   r   r(   Ú	_getframeÚf_codeÚco_namer    r!   Úsqlite3ÚconnectÚcursorr>   Úread_sql_queryÚclosera   rb   r`   r'   r   r)   )
Úbdr,   ÚconÚcurZconsultarB   Zcod_catrd   Ú	categoriar-   r:   r:   r;   Úturismo_bd_categoriaä   s     



rx   ÚEOT9é   c              	   C   s"  t  dt ¡ jj ¡}d|_zà| d¡ t 	| ¡}| 
¡ }d d||¡}t ||¡}| ¡  |jdgdgd�}|jtjtj d	tjgd
dd� t|ƒ t|ddg jƒ}|d  ¡ }	|d  ¡ }
|d  ¡ }|d  ¡ }t|ddg jƒ}||	|
||g}|W S    | d t ¡ ¡¡ Y n0 d S )Nrk   Fz
BD - DatoszGSELECT {} FROM Turismo WHERE COD = "{}" ORDER BY "FECHA" DESC LIMIT {};Ú*rO   T)ÚbyÚ	ascendingÚ r   rH   rF   rK   rN   r   )r   r   r(   rl   rm   rn   r    r!   ro   rp   rq   r   r>   rr   rs   rV   r\   r]   r^   ÚnanÚprintra   rb   r`   r'   r)   )rt   ÚcodigoÚ	n_ultimosr,   ru   rv   Zconsulta_datosrB   rh   rQ   r0   re   rf   r-   r:   r:   r;   Úturismo_bd_datosÿ   s,    

	 rƒ   c              	   C   sH   z"t ƒ }tdd�}t|d ƒ |W S    t d t ¡ ¡¡ Y n0 dS )z€
    Parameters
    ----------
    local_log : TYPE: Boolean, False - activa el logging

    Returns
    -------
    None.

    ZEOT1619)r�   é   r   N)rx   rƒ   r€   r   r'   r   r(   r)   )r+   Zperiodosr.   Z
categoriasÚdatar:   r:   r;   Úmain(  s    
r†   Ú__main__)é   rP   zScript requires Python 3.7+.zInitium novumzd_turismo.xlsxz	Ave verumzProgram completed in z0.5fz	 seconds.)rj   )rj   ry   rz   )%Ú__doc__r   r(   ÚpathlibÚtimer   Údateutil.relativedeltar   Úpandasr>   Únumpyr]   ro   ÚbasicConfigÚDEBUGÚstderrr   Ú__name__r,   Únowr<   rC   ri   rx   rƒ   r†   Úperf_counterÚstartÚversion_infoÚPathÚ__file__ÚparentÚherer    r!   Zlocal_log_disabledÚelapsedr:   r:   r:   r;   Ú<module>   sD   ü
e=

)


	
