我是编程界的新手,我正在做一些研究以获取数据科学领域的知识。
我有一个包含很多信息的数据框,其中包括性别和年龄。我想介绍每种性别(男性和女性)的行数,并将其分类为儿童(0至> 12岁),年轻(12至> 18岁)和成人(18岁以上)。 结果将是这样:
女童:x金额
年轻女性:y量
成年女性:z量
男童:n项
年轻男性:k量
成年男性:j量
我已经迷失了自己,不知道自己是否正确启动了……我用所需的两列创建了另一个数据框。
df2 = df[["Sex", "Age"]].copy()
从这里有点卡住
编辑(对代码中的某些术语感到抱歉,它们在葡萄牙语中,但是代码是可以理解的
我可以解决问题。 这是我从一开始所做的:
仅使用我需要的信息创建新的DF:
df2 = df[["Sex", "Age"]].copy()
创建用于对值进行分类的函数:
def definition(age):
if age >= 18:
return 'Adulto'
elif age >= 12:
return 'Jovem'
return 'Criança'
将新列添加到DF
df2['Classification'] = df2['Age'].map(definition)
和打印
print("A quantidade de crianças do sexo masculino é de {}".format(len(df2.loc[df2['Classification'] == 'Criança'].loc[df2['Sex'] == 'male'])))
print("A quantidade de crianças do sexo feminino é de {}".format(len(df2.loc[df2['Classification'] == 'Criança'].loc[df2['Sex'] == 'female'])))
print("A quantidade de jovens do sexo masculino é de {}".format(len(df2.loc[df2['Classification'] == 'Jovem'].loc[df2['Sex'] == 'male'])))
print("A quantidade de jovens do sexo feminino é de {}".format(len(df2.loc[df2['Classification'] == 'Jovem'].loc[df2['Sex'] == 'female'])))
print("A quantidade de adultos do sexo masculino é de {}".format(len(df2.loc[df2['Classification'] == 'Adulto'].loc[df2['Sex'] == 'male'])))
print("A quantidade de adultos do sexo feminino é de {}".format(len(df2.loc[df2['Classification'] == 'Adulto'].loc[df2['Sex'] == 'female'])))
结果:
第36次男性化犯罪的量化证明
32位女性性犯罪嫌疑人
第22届男性青少年量刑》
第23届女权行为少年报
第519期成年男子的性侵行为
第259条女性成年男子身份标记
答案 0 :(得分:0)
我将使用pandas.cut创建年龄类,然后将两列分组并检查大小。让我知道我是否可以详细说明。
bins = [1, 5, 10, 15]
group_names = ['Children', 'Young', 'Adult']
age_groups = pandas.cut(df2.Age, bins, labels=group_names)
df2['Age Groups'] = age_groups.tolist()
df2.groupby(['Gender','Age Groups']).size()
我对pandas.cut的细微差别的熟悉有点生锈,因此上面的垃圾箱并不是您想要的。我建议在笔记本中处理数据,以将其放在所需的位置。这里的文档很有帮助https://pandas.pydata.org/pandas-docs/stable/generated/pandas.cut.html