datosgobar / series-tiempo-ar-scraping

ETL y servidor web para scrapear series de tiempo de Excels semi-estructurados y transformarlos en distribuciones de formato abierto, basado en una extensión experimental del Perfil Nacional de Metadatos de la política de apertura de datos de la APN.
MIT License
8 stars 7 forks source link

El scraper maneja mal los float en alguna parte del handling del dato #46

Open abenassi opened 5 years ago

abenassi commented 5 years ago

Esto genera que se creen CSVS con redondeos incorrectos:

Screenshot 2019-09-23 14 29 10

https://infra.datos.gob.ar/catalog/sspm/dataset/372/distribution/372.6/download/administracion-publica-nacional-valores-trimestrales-17.csv

Alsosa commented 4 years ago

Agustín, Dentro de processors.py, cuando se usa el procesador de xls, se llama a la función 'get_data_frames' del objeto xlseries. De ahí trae los data frames ya con esos float que tienen los valores que aparecen en la imagen que enviaste. La idea es que tengan menos decimales? Si es así, cuantos deberían tener?

abenassi commented 4 years ago

Alan, la idea es que exploremos dónde sería el mejor punto para no perder precisión en los float que hacen que un número que debería ser 1.16 termine siendo 1.159999999999999 o 1.160000000000001. No estoy seguro de en qué punto debería ser manejado esto, pero es posible que sea dentro de xlseries y no del scraper. Pero queremos respetar la cantidad de decimales que realmente tenga el número. [image: Screenshot 2019-10-22 12.00.40.png]

Este es el punto original desde donde se toma por primera vez "un número" del Excel desde el cual se scrapea (módulo data.py en xlseries), y después da vueltas por la librería hasta terminar en un DataFrame.

Lo que tal vez habría que hacer es seleccionar un caso que "falla" según nuestros criterios, y ver desde dónde empieza a tener decimales de más (si es desde .value en adelante, en cuyo caso tal vez hay que aplicar una función helper en ese mismo punto con alguna heurística que evite la pérdida de precisión, o si esto sucede más adelante, por ejemplo cuando empieza a integrar un DataFrame).

Se entiende por dónde va la exploración? Si la tarea parece muy complicada podemos re-pensarla o pasar a otra cosa.

El lun., 21 oct. 2019 a las 16:11, Alan (notifications@github.com) escribió:

Agustín, Dentro de processors.py, cuando se usa el procesador de xls, se llama a la función 'get_data_frames' del objeto xlseries. De ahí trae los data frames ya con esos float que tienen los valores que aparecen en la imagen que enviaste. La idea es que tengan menos decimales? Si es así, cuantos deberían tener?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/datosgobar/series-tiempo-ar-scraping/issues/46?email_source=notifications&email_token=ABBTQYU5XRZF3KSQSPZPVFDQPX5ELA5CNFSM4IZKGTRKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEB3OKAY#issuecomment-544662787, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABBTQYRQE5RPKA6ZTKCHS3LQPX5ELANCNFSM4IZKGTRA .