def __init__(self, parser, db): """Initializes the class with families and individuals""" self.parser = parser self.db = db self.errors = [] self.tables = [] self.tables.append(TableHelpers.dataframe2table(self.db.individuals, "Individuals")) self.tables.append(TableHelpers.dataframe2table(self.db.families, "Families"))
def list_multiple_births(parser, db): tables = [] multiple_birth_children = db.individuals.groupby(['famc','birth']) multiple_births = DataFrame({'Children': multiple_birth_children.size()}).reset_index() multiple_births = multiple_births[(multiple_births.Children > 1)].rename(columns={'famc':'FamID','birth':'Birthdate'}) pt = TableHelpers.dataframe2table(multiple_births, "US32: Multiple Births") tables.append(pt) return tables
def list_deceased(parser, db): tables = [] today = date.today() individuals = db.individuals individuals = individuals.loc[( ~individuals["death"].isnull())] # ~ is the loc equivalent of "not" pt = TableHelpers.dataframe2table(individuals, "US29 - Deceased Individuals") tables.append(pt) return tables
def list_ages(parser, db): tables = [] ages = [] for indiv in parser.individuals.values(): if indiv.birth is not None: ages.append(DateHelpers.calculate_age(indiv.birth, None)) else: ages.append(None) individuals = db.individuals individuals["Age"] = pd.Series(ages).values newTable = TableHelpers.dataframe2table(individuals, "US27: Individuals and Ages") tables.append(newTable) return tables
def older_siblings_by_age(parser, db): tables = [] for _, row in db.families.iterrows(): famID = row["ID"] children = db.individuals.loc[db.individuals["famc"] == famID] children = children.sort_values( by=["birth"], ascending=True) # Ascending birth dates if children.shape[0] > 0: # if there are more than 0 rows pt = TableHelpers.dataframe2table( children, "US28: Children in Family {} Descending - Oldest First".format( famID)) tables.append(pt) return tables