Browse Source

Remplementado deteccion de género en base a datos del INE de España

main
Roberto Alsina 3 months ago
parent
commit
ae79c296c5
  1. 35
      nombres/busqueda/handler.py
  2. 1
      nombres/busqueda/handler_test.py
  3. 6
      nombres/historico/handler.py
  4. 1
      nombres/historico/handler_test.py

35
nombres/busqueda/handler.py

@ -22,15 +22,38 @@ def remove_accents(input_str):
return "".join([c for c in nfkd_form if not unicodedata.combining(c)])
@dataclass
class Género:
nombre: str = ""
masculinidad: float = 0
def femininidad(nombre):
sql1 = """
SELECT COALESCE(frecuencia,0)
FROM mujeres WHERE nombre=:nombre
"""
sql2 = """
SELECT COALESCE(frecuencia,0)
FROM hombres WHERE nombre=:nombre
"""
with connection.cursor() as cursor:
mujeres = cursor.execute(sql1, {"nombre": nombre.upper()}).fetchone()
mujeres = 0 if mujeres is None else mujeres[0]
hombres = cursor.execute(sql2, {"nombre": nombre.upper()}).fetchone()
hombres = 0 if hombres is None else hombres[0]
if hombres == mujeres == 0:
return 0.5
return mujeres / (hombres + mujeres)
def split_por_genero(nombres):
# TODO: reimplementar usando datos de España de género asignado
return {"f": nombres, "m": nombres}
femeninos = []
masculinos = []
for n in nombres:
fem = femininidad(n[1])
if fem is None:
femeninos.append(n)
masculinos.append(n)
elif fem >= 0.5:
femeninos.append(n)
else:
masculinos.append(n)
return {"f": femeninos, "m": masculinos}
def handle(req):

1
nombres/busqueda/handler_test.py

@ -5,6 +5,7 @@ from .handler import handle
# To disable testing, you can set the build_arg `TEST_ENABLED=false` on the CLI or in your stack.yml
# https://docs.openfaas.com/reference/yaml/#function-build-args-build-args
def test_handle():
# assert handle("input") == "input"
pass

6
nombres/historico/handler.py

@ -25,7 +25,7 @@ def handle(req):
"""handle a request to the function
Args:
req (str): request body
[nombre1, nombre2, ... nombreN]
"""
@ -53,10 +53,10 @@ def handle(req):
WHERE nombre = :nombre
ORDER BY anio
"""
cursor.execute(sql,{"nombre": nombre})
cursor.execute(sql, {"nombre": nombre})
datos.update({r["anio"]: r["contador"] for r in cursor.fetchall()})
chart.add(nombre.title(), [datos[x] for x in range(1922, 2015)])
chart.x_labels = [str(n) for n in range(1922, 2015)]
chart.x_labels_major = [str(n) for n in range(1920, 2020, 10)]

1
nombres/historico/handler_test.py

@ -5,6 +5,7 @@ from .handler import handle
# To disable testing, you can set the build_arg `TEST_ENABLED=false` on the CLI or in your stack.yml
# https://docs.openfaas.com/reference/yaml/#function-build-args-build-args
def test_handle():
# assert handle("input") == "input"
pass

Loading…
Cancel
Save