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
Example #5
0
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()
Example #7
0
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()