from collections import Counter
records = [
(17, "P3E", "F"), (16, "P3E", "M"), (17, "P3E", "F"),
(18, "K7L", "M"), (16, "P3E", "M"), (18, "K7L", "M"),
(17, "K7L", "F"),
]
def k_of(rows):
groups = Counter(rows)
return min(groups.values())
def generalize(row):
age, area, gender = row
band = "15-19" if 15 <= age <= 19 else "other"
return (band, area, gender)
print("k before:", k_of(records))
general = [generalize(r) for r in records]
print("k after age bands:", k_of(general))
print(Counter(general))
no_gender = [(band, area) for band, area, gender in general]
print("k after also removing gender:", k_of(no_gender))