python-3.x - Python - 在数据框中选择 2 列并对它们进行分类
问题描述
我是编程界的新手,我正在做一些研究以获取数据科学领域的知识。
我有一个包含很多信息的数据框,其中包括性别和年龄。我想带上每个性别(男性和女性)的行数,并将它们分类为儿童(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'])))
结果:
A quantidade de crianças do sexo masculino é de 36
A quantidade de crianças do sexo feminino é de 32
A quantidade de jovens do sexo masculino é de 22
A quantidade de jovens do sexo feminino é de 23
A quantidade de adultos do sexo masculino é de 519
A quantidade de adultos do sexo feminino é de 259
解决方案
我会使用 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
推荐阅读
- bash - 如何在没有循环的情况下逐行将文件读入变量
- python - 如何从表单集中删除表单
- php - PHP 使用字符串作为数组键模式
- java - 列出javac编译的Java源文件
- java - Angular 6 访问 REST 因 Access-Control-Allow-Origin 而失败
- apache - Jersey 客户端:使用 ConnectionKeepAliveStrategy
- java - 使用java 8流转换为大写字母
- swift - 类型别名的无效重新声明
- angular - 如何使用 Angular 重置自定义表单控件
- java - 多个 MediaPlayers 不断失败 - Android 工作室