-
Notifications
You must be signed in to change notification settings - Fork 8
/
names.py
85 lines (77 loc) · 1.82 KB
/
names.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from bs4 import BeautifulSoup
import math
f = open('dist.male.first.txt')
lines = f.readlines()
male = {}
for l in lines:
name = l.split(' ')[0]
male[name] = float(l[15:20])
f = open('dist.female.first.txt')
lines = f.readlines()
female = {}
for l in lines:
name = l.split(' ')[0]
female[name] = float(l[15:20])
def chanceMale(name):
name = name.upper()
if name in male:
m = male[name]
else:
m = 0
if name in female:
f = female[name]
else:
f = 0
if m == 0 and f == 0:
return .5
else:
return m/(f+m)
f = open('lifeTable.htm')
soup = BeautifulSoup(f)
rows = soup.find_all('tr')
maleYears = {}
femaleYears = {}
for row in rows:
data = row.get_text().split('\n')
maleYears[int(data[1])] = float(data[3].replace(',',''))*math.pow(1-float(data[2].replace(',','')),5)
femaleYears[int(data[1])] = float(data[6].replace(',',''))*math.pow(1-float(data[5].replace(',','')),5)
maleNameAge = {}
femaleNameAge = {}
for age in range(13, 70):
birthYear = 2012 - age;
f = open('birthNames\\yob' + str(birthYear) + '.txt')
lines = f.readlines()
for l in lines:
data = l.split(',')
name = data[0].upper()
num = float(data[2])
if data[1] == 'M':
if not name in maleNameAge:
maleNameAge[name] = {}
maleNameAge[name][age] = num*maleYears[age]
else:
if not name in femaleNameAge:
femaleNameAge[name] = {}
femaleNameAge[name][age] = num*femaleYears[age]
def meanAge(name):
name = name.upper()
num = 0
denom = 0
for age in range(13, 70):
try:
num = num + age*femaleNameAge[name][age]
denom = denom + femaleNameAge[name][age]
except Exception:
True
try:
num = num + age*maleNameAge[name][age]
denom = denom + maleNameAge[name][age]
except Exception:
True
if num != 0 and denom != 0:
if num / denom < 13:
print num / denom
dogs = hair
return num / denom
else:
return -1