Olá, pessoal. Beleza?
Vocês podem me recomendar uma base de dados com prenomes brasileiros? Eu tenho um arquivo que tem uma série de informações e eu quero manter nesse arquivo apenas os nomes próprios.
Por isso, pensei em arrumar um arquivo com nomes registrados no Brasil e pedir para manter nesse meu arquivo apenas o tal prenome brasileiro e a string seguinte (possivelmente sobrenome).
Ou vocês me sugerem outro caminho?
Obrigada.
2 curtidas
O @turicas tem um dataset disso. Ele estudou no Brasil.IO a classificação de gênero em nomes brasileiros, com o uso do CENSO de 2010 (comenta se eu estiver falando besteira @turicas)
Então acho que você pode baixar os dados dele e isolar apenas os nomes brasileiros. Em Python:
import requests
import pandas as pd
payload = {}
headers= {}
# São 101 páginas na API
for n in range(1, 102):
print(n)
n = str(n)
url = "https://brasil.io/api/dataset/genero-nomes/nomes/data?page=" + n
response = requests.request("GET", url, headers=headers, data = payload)
dados = response.json()
df = pd.DataFrame(dados['results'])
if n == 1:
df_nomes = df.copy()
else:
df_nomes = df_nomes.append(df)
# Isola só a coluna de nome e cria novo dataframe
df_nomes_separa = df_nomes['first_name'].reset_index()
df_nomes_separa = df_nomes_separa[pd.notnull(df_nomes_separa['first_name'])]
df_nomes_separa.to_csv("nomes_brasil.csv", index=False)
2 curtidas
Como o @reichaves comentou, no Brasil.IO tem um dataset que baixei do IBGE Nomes os dados, com classificação por gênero e desambiguação por grupos de nomes (ex: Tiago, Thiago, Thyago estão no mesmo grupo). Porém, não precisa fazer tantas requisições pra API: também é possível baixar em um arquivo só o dataset completo do Brasil.IO. Fiz uma função que baixa o arquivo (é um CSV compactado), descompacta e lê os registros - caso o arquivo já exista no seu HD, ele não baixa novamente (ou seja, vai ficar lento só na primeira vez que for rodar, nas demais, tendo o arquivo, ele só lê local). Você não precisa instalar nenhuma biblioteca extra (além do Python) para rodar esse código. Espero que seja útil:
import csv
import gzip
import io
import os
from urllib.request import urlopen
def get_names(filename):
if not os.path.exists(filename):
# File doesn't exist, so we download it from Brasil.IO
data = urlopen("https://data.brasil.io/dataset/genero-nomes/nomes.csv.gz").read()
with open(filename, mode="wb") as writer_fobj:
writer_fobj.write(data)
fobj = io.TextIOWrapper(gzip.open(filename, mode="rb"), encoding="utf-8")
return list(csv.DictReader(fobj))
names = get_names("/tmp/nomes.csv.gz")
for name_data in names:
if name_data["first_name"] == "ALVARO":
print(name_data)
Esse script demorou 4.978s na primeira vez que executei e 0.792s nas demais.
Eu também criei um post no Blog do Brasil.IO mostrando em mais detalhes como classificar nomes por gênero usando esse dataset, comparando a utilização da API com a utilização acima (baixar o dataset completo): Classificando nomes por gênero usando dados públicos.
3 curtidas
Obrigada pela ajuda, @reichaves e @turicas. Vou rodar por aqui e, mais para a frente, eu conto se deu tudo certo!
2 curtidas
O @turicas e o @reichaves já comentaram, mas só adicionando uma outra alternativa na resposta deles, no R, tem o pacote genderBR (https://github.com/meirelesff/genderBR) - Acho que pode te ajudar também 
2 curtidas