def process_csv(filepath): import unicodecsv as csv with open(filepath, 'rb') as f: fc = csv.DictReader(f) data = list(fc) from agefromname import AgeFromName age_from_name = AgeFromName() # initialize once; reuse. out = [] for row in data: firstname = row["candidate"].split()[0] if len(firstname) <= 2 or firstname.endswith('.'): firstname = firstname = row["candidate"].split()[1] firstname = firstname.lower().replace('"', '') (sex, age, confidence) = est_sex_age(firstname, age_from_name, min_age=28) row['sex'] = sex row['age'] = age row['estimate_confidence'] = confidence out.append(row) print row['candidate'], sex, age, confidence with open(filepath + '_revised.csv', 'wb') as f: fc = csv.DictWriter(f, fieldnames=data.keys()) fc.writeheader() fc.writerows(out) print f.name, 'written'
def test_get_estimated_counts(self): g = GenerationFromName({ 'AAA': [1930, 1945], 'BBB': [1946, 1999] }, self.a) year_count = AgeFromName().get_estimated_counts('nancy', 'f', 1950) actual = g.get_estimated_counts('nancy', 'f', 1950) self.assertEqual(type(actual), pd.Series) self.assertEqual(actual.name, 'estimated_count') self._manually_verify_counts_or_distribution(actual, year_count) self.assertAlmostEqual(sum(actual), sum(year_count), places=0)
def __init__( self, generation_birth_years={ 'Greatest': [1915, 1929], 'Silent': [1930, 1945], 'Baby Boomers': [1946, 1964], 'Generation X': [1965, 1980], 'Millenials': [1981, 1995], 'Generation Z': [1996, 2010], 'Post Gen Z': [2011, 2025] }, age_from_name=None): ''' :param generation_birth_years: dict, maps generation names to the first and last years of birth. Ex.: {'Millenials': [1980, 1995], 'Generation X': [1956, 1979]} Years outside this range will be considered "_other". :param age_from_name: AgeFromName, optional. If note entered, will be autogenerated ''' self._validate_generation_birth_years(generation_birth_years) self._generation_birth_years = generation_birth_years self._age_from_name = age_from_name if age_from_name is not None else AgeFromName( )
def infer_age(first_names, genders): """ Infers age using first name and gender. "agefromname" package used: https://github.com/JasonKessler/agefromname """ age_from_name = AgeFromName() ages = [] for i, name in enumerate(first_names): if genders[i] == 'male': if len(age_from_name.get_estimated_counts(name, 'm', 2017)) == 0: ages.append(np.nan) else: ages.append(2017 - age_from_name.argmax(name, 'm', 2017)) elif genders[i] == 'female': if len(age_from_name.get_estimated_counts(name, 'f', 2017)) == 0: ages.append(np.nan) else: ages.append(2017 - age_from_name.argmax(name, 'f', 2017)) else: ages.append(np.nan) return ages
import csv import yaml import json import sys from agefromname import AgeFromName from datetime import datetime afn = AgeFromName() def occusel(names, _config=None): if _config == None: global config else: config = _config try: infile = open('cache.json', 'r+') except FileNotFoundError: with open('cache.json', 'w+') as outfile: outfile.write('{}') infile = open('cache.json', 'r+') cache = json.load(infile) infile.close() namedic = {} year = datetime.now().year for name in names: namedic[name] = {} try: namedic[name]['score'] = cache[name] except KeyError: if afn.prob_female(name) >= 0.5:
def setUpClass(cls): cls.a = AgeFromName()
import time from selenium import webdriver from selenium.webdriver.common.keys import Keys # from selenium.webdriver.common.by import By # from selenium.webdriver.support.ui import WebDriverWait # from selenium.webdriver.support import expected_conditions as EC import getpass import json from agefromname import AgeFromName age_from_name = AgeFromName() userStr = input("Votre username :"******"votre password:") browser = webdriver.Chrome() #browser.get('https://auth.mines-paristech.fr/cas/login') browser.get( 'https://auth-par.mines-paristech.fr/cas/login?service=https%3A%2F%2Fldap-ihm.mines-paristech.fr%2Fninja%2Findex.jsp' ) time.sleep(2) username = browser.find_element_by_id('username') username.send_keys(userStr) password = browser.find_element_by_id('password') password.send_keys(passwordStr) #signInButton = browser.find_element_by_class_name('btn-submit') #signInButton = browser.find_element_by_class_name('mdc-button mdc-button--raised') #signInButton.click()