on names

Como buenos padres-a-la-espera primerizos, temprano en el embarazo de mi señora, nos 1 tiramos de cabeza a decidir el nombre del primogénito.

Como buen nerd, en vez de apoyarme en libros de nombres o buscar inspiración en el arbol familiar, me dediqué a buscar datos de los nombres más comunes de Chile en el Registro Civil.

Por Google se puede llegar a una sección de estadísticas con información entre el 2000 y el 2010 para los 50 nombres de hombres y mujeres que más se repiten. Es buena información como para lo que yo quería, aunque un poco desactualizada (al final de algo sirvió, pero donde manda capitán no manda marinero).

Como ya me había metido en el tema, cuando el Registro Civil dió a conocer algunos datos para las inscripciones del 2016 me puse a buscar por todos lados por información concreta, pero en ninguna parte encontré los datos duros, sólo parafraseos de la misma información que ya estaba en el registro civil.

Se me había olvidado el tema, hasta que hoy un par de tweets:

y luego

lo trajeron de vuelta.

De nuevo a buscar los datos en el sitio web del Registro Civil (de nuevo, nada), así que me puse a escarbar en la nota de emol, a ver si encontraba algún servicio del que pudiera extraer la información, despues de todo, tenían un buscador habilitado, y los datos tenía que estar en alguna parte.

No encontré ningún servicio, pero encontré algo mejor.

La búsqueda la hace en el navegador, sacando los datos de un par de documentos que cargan directamente… ¡Y que tienen toda la información! 2

Así que, a jugar.

primero, los archivos:

$ curl -O "http://www.emol.com/especiales/2017/actualidad/nacional/nombres-inscritos/hombres.json"
$ curl -O "http://www.emol.com/especiales/2017/actualidad/nacional/nombres-inscritos/mujeres.json"

un poco de python para pasar los datos a algo un poco más fácil de manejar:

import json
import sqlite3

hombres = json.loads(open('hombres.json','r').read())["nombres"]
mujeres = json.loads(open('mujeres.json','r').read())["nombres"]

conn = sqlite3.connect('nombres.db')
conn.execute("CREATE TABLE nombres (nombre text, sexo text, cantidad int)")
for h in hombres:
  conn.execute("INSERT INTO nombres VALUES (?,?,?)", (h, "hombre" , int(hombres[h]['n'])))
conn.commit()
for m in mujeres:
  conn.execute("INSERT INTO nombres VALUES (?,?,?)", (m, "mujer" , int(mujeres[m]['n'])))
conn.commit()
conn.close()

y un poco de sql para hacerme la vida más facil.

CREATE TABLE orden_hombres (orden INTEGER PRIMARY KEY AUTOINCREMENT,
                            nombre TEXT, 
                            sexo TEXT, 
                            cantidad INTEGER);
CREATE TABLE orden_mujeres (orden INTEGER PRIMARY KEY AUTOINCREMENT, 
                            nombre TEXT, 
                            sexo TEXT, 
                            cantidad INTEGER);
CREATE TABLE nombres_ordenados (orden INTEGER, 
                                nombre TEXT, 
                                sexo TEXT, 
                                cantidad INTEGER);
INSERT INTO orden_hombres (nombre, sexo, cantidad) 
    SELECT nombre,sexo,cantidad FROM nombres 
    WHERE sexo = "hombre" 
    ORDER BY cantidad DESC, nombre ASC;
INSERT INTO orden_mujeres (nombre, sexo, cantidad) 
    SELECT nombre,sexo,cantidad FROM nombres 
    WHERE sexo = "mujer" 
    ORDER BY cantidad DESC, nombre ASC;
INSERT INTO nombres_ordenados (orden, nombre, sexo, cantidad) 
    SELECT orden, nombre, sexo, cantidad FROM orden_hombres;
INSERT INTO nombres_ordenados (orden, nombre, sexo, cantidad) 
    SELECT orden, nombre, sexo, cantidad FROM orden_mujeres;
DROP TABLE orden_hombres;
DROP TABLE orden_mujeres;
DROP TABLE nombres;
ALTER TABLE nombres_ordenados RENAME TO nombres;

y listo, tenemos los datos.

primero, una revisión de sanidad:

sqlite> SELECT sum(cantidad) FROM nombres;
sum(cantidad)
-------------
233758
sqlite>

lo mismo que lo que indica la nota de emol 3.

Algunos datos

  • Se inscribieron 114895 mujeres y 118863 hombres.
  • Hay 6182 nombres diferentes de mujeres, y 4554 nombres diferentes de hombres.
  • De todos los nombres que aparecen, el 88.9% son nombres que tienen menos de 10 inscritos el 2016.
  • El 64,5 % de los nombres son únicos.
  • Cristian (563) le gana a Christian (147).
  • Hay 5 Muhammad y 2 Mohamed (El nombre más popular del mundo, de acuerdo a Fogel).
  • Hay 5 mujeres con el nombre Jesus. No hay hombres con el nombre María.
  • Hay 9 Khalessi… si, 9.

Y la lista de los top 10:

ordenhombre(cantidad)mujer(cantidad)
1agustin4398sofia4011
2mateo4106isidora3586
3benjamin3707emilia3373
4vicente3218florencia3043
5joaquin3194maite2850
6martin2925amanda2810
7matias2870josefa2810
8maximilian2619agustina2753
9tomas2592isabella2541
10alonso2568antonella2420

La lista de los nombres “raros” es larga, llena de formas creativas de escribir nombres (por ejemplo, hay 3 geremias y 1 jheampier), por lo que lo único me queda por decir es… pobres cabros.

Speechless

Por mi parte, me quedo tranquilo con saber que el nombre que elegimos no es de los más comunes, pero tampoco es tan exótico como para que le hagan bulling.

Hay veces en que no es tan malo ser del montón.


  1. Y por nos quiero decir ella. ↩︎

  2. La lista trae sólo los primeros nombres, en minuscula y sin acentos. Se hace lo que se puede con lo que se tiene. ↩︎

  3. Extrañamente, el número de bebes que se reporta en la nota de emol, es diferente al que reportó la noticia del registro civil en enero. Al menos la nota de emol es consistente. ↩︎