Skip to content

Commit

Permalink
Merge pull request #245 from datosgobar/243-cambiar-porcentaje-de-ind…
Browse files Browse the repository at this point in the history
…icadores

243 cambiar porcentaje de indicadores
  • Loading branch information
lucaslavandeira committed Feb 27, 2019
2 parents 153284a + 2cdc7ef commit 6582433
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 30 deletions.
31 changes: 15 additions & 16 deletions pydatajson/indicators.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,13 +144,13 @@ def _generate_indicators(catalog, validator=None, only_numeric=False):

# Agrego porcentaje de campos recomendados/optativos usados
fields_count = _count_required_and_optional_fields(catalog)
recomendados_pct = 100 * float(fields_count['recomendado']) / \
recomendados_pct = float(fields_count['recomendado']) / \
fields_count['total_recomendado']
optativos_pct = 100 * float(fields_count['optativo']) / \
optativos_pct = float(fields_count['optativo']) / \
fields_count['total_optativo']
result.update({
'campos_recomendados_pct': round(recomendados_pct, 2),
'campos_optativos_pct': round(optativos_pct, 2)
'campos_recomendados_pct': round(recomendados_pct, 4),
'campos_optativos_pct': round(optativos_pct, 4)
})
return fields_count, result

Expand Down Expand Up @@ -229,7 +229,7 @@ def _federation_indicators(catalog, central_catalog):
)

if federados or no_federados: # Evita división por 0
federados_pct = 100 * float(federados) / (federados + no_federados)
federados_pct = float(federados) / (federados + no_federados)
else:
federados_pct = 0

Expand All @@ -247,7 +247,7 @@ def _federation_indicators(catalog, central_catalog):
'datasets_federados':
datasets_federados,
'datasets_federados_pct':
round(federados_pct, 2),
round(federados_pct, 4),
'distribuciones_federadas_cant':
dist_federadas
})
Expand Down Expand Up @@ -292,19 +292,19 @@ def _network_indicator_percentages(fields, network_indicators):
total = partial + (percentages[indicator][1] or 0)
# Evita division por 0
if total:
pct = 100 * float(partial) / total
network_indicators[indicator] = round(pct, 2)
pct = float(partial) / total
network_indicators[indicator] = round(pct, 4)

# % de campos recomendados y optativos utilizados en el catálogo entero
if fields: # 'fields' puede estar vacío si ningún campo es válido
rec_pct = 100 * float(fields['recomendado']) / \
rec_pct = float(fields['recomendado']) / \
fields['total_recomendado']

opt_pct = 100 * float(fields['optativo']) / fields['total_optativo']
opt_pct = float(fields['optativo']) / fields['total_optativo']

network_indicators.update({
'campos_recomendados_pct': round(rec_pct, 2),
'campos_optativos_pct': round(opt_pct, 2)
'campos_recomendados_pct': round(rec_pct, 4),
'campos_optativos_pct': round(opt_pct, 4)
})


Expand Down Expand Up @@ -360,9 +360,8 @@ def _generate_status_indicators(catalog, validator=None):
datasets_ok_pct = 0
datasets_with_data_pct = 0
if datasets_total:
datasets_ok_pct = round(100 * float(cant_ok) / datasets_total, 2)
datasets_with_data_pct = round(
100 * float(cant_data) / datasets_total, 2)
datasets_ok_pct = round(float(cant_ok) / datasets_total, 4)
datasets_with_data_pct = round(float(cant_data) / datasets_total, 4)

result.update({
'datasets_cant': datasets_total,
Expand Down Expand Up @@ -478,7 +477,7 @@ def _generate_date_indicators(catalog, tolerance=0.2, only_numeric=False):
result.update({
'datasets_desactualizados_cant': desactualizados,
'datasets_actualizados_cant': actualizados,
'datasets_actualizados_pct': 100 * round(actualizados_pct, 2)
'datasets_actualizados_pct': round(actualizados_pct, 4)
})
if not only_numeric:
result.update({
Expand Down
28 changes: 14 additions & 14 deletions tests/test_indicators.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ def test_generate_catalog_indicators(self):
'distribuciones_cant': 6,
'datasets_meta_ok_cant': 2,
'datasets_meta_error_cant': 1,
'datasets_meta_ok_pct': round(100 * float(2) / 3, 2),
'datasets_meta_ok_pct': 0.6667,
'datasets_con_datos_cant': 2,
'datasets_sin_datos_cant': 1,
'datasets_con_datos_pct': round(100 * float(2) / 3, 2),
'datasets_con_datos_pct': 0.6667,
}

for k, v in expected.items():
Expand All @@ -82,7 +82,7 @@ def test_date_indicators(self):
'catalogo_ultima_actualizacion_dias': dias_diff,
'datasets_actualizados_cant': 1,
'datasets_desactualizados_cant': 2,
'datasets_actualizados_pct': 100 * round(float(1) / 3, 2),
'datasets_actualizados_pct': 0.3333,
'datasets_frecuencia_cant': {
'R/P1W': 1,
'R/P1M': 1,
Expand Down Expand Up @@ -162,8 +162,8 @@ def test_field_indicators_on_full_catalog(self):
indicators = self.dj.generate_catalogs_indicators(catalog)[0][0]

expected = {
'campos_recomendados_pct': 95.45,
'campos_optativos_pct': 100
'campos_recomendados_pct': 0.9545,
'campos_optativos_pct': 1.0000
}

for k, v in expected.items():
Expand All @@ -180,7 +180,7 @@ def test_federation_indicators_same_catalog(self):
'datasets_federados_cant': 3,
'datasets_no_federados_cant': 0,
'datasets_no_federados': [],
'datasets_federados_pct': 100,
'datasets_federados_pct': 1.0000,
'distribuciones_federadas_cant': 6
}

Expand All @@ -201,7 +201,7 @@ def test_federation_indicators_no_datasets(self):
('Sistema de contrataciones electrónicas UNO', None),
('Sistema de contrataciones electrónicas DOS', None),
('Sistema de contrataciones electrónicas TRES', None)],
'datasets_federados_pct': 0,
'datasets_federados_pct': 0.00,
'distribuciones_federadas_cant': 0
}

Expand Down Expand Up @@ -270,10 +270,10 @@ def test_network_indicators(self):
'distribuciones_cant': 8,
'datasets_meta_ok_cant': 4,
'datasets_meta_error_cant': 1,
'datasets_meta_ok_pct': 100 * float(4) / 5,
'datasets_meta_ok_pct': 0.8000,
'datasets_con_datos_cant': 3,
'datasets_sin_datos_cant': 2,
'datasets_con_datos_pct': 60.00,
'datasets_con_datos_pct': 0.6000,
'distribuciones_formatos_cant': {
'CSV': 2,
'XLSX': 1,
Expand All @@ -289,8 +289,8 @@ def test_network_indicators(self):
'Open Data Commons Open Database License 1.0': 2,
'None': 3
},
'campos_optativos_pct': 32.56,
'campos_recomendados_pct': 50.72,
'campos_optativos_pct': 0.3256,
'campos_recomendados_pct': 0.5072,
}

for k, v in expected.items():
Expand Down Expand Up @@ -388,7 +388,7 @@ def test_network_federation_indicators(self):
expected = {
'datasets_federados_cant': 3,
'datasets_no_federados_cant': 2,
'datasets_federados_pct': 60.0,
'datasets_federados_pct': 0.6000,
'distribuciones_federadas_cant': 6
}
for k, v in expected.items():
Expand Down Expand Up @@ -511,7 +511,7 @@ def test_valid_and_unreachable_catalogs(self):
'distribuciones_cant': 6,
'datasets_meta_ok_cant': 2,
'datasets_meta_error_cant': 1,
'datasets_meta_ok_pct': round(100 * float(2) / 3, 2),
'datasets_meta_ok_pct': 0.6667,
}

for k, v in expected.items():
Expand All @@ -527,7 +527,7 @@ def test_unreachable_central_catalog(self):
'distribuciones_cant': 6,
'datasets_meta_ok_cant': 2,
'datasets_meta_error_cant': 1,
'datasets_meta_ok_pct': round(100 * float(2) / 3, 2),
'datasets_meta_ok_pct': 0.6667,
'datasets_federados_cant': None,
'datasets_no_federados_cant': None,
'datasets_federados_pct': None,
Expand Down

0 comments on commit 6582433

Please sign in to comment.