首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有海蟒的种群金字塔

有海蟒的种群金字塔
EN

Stack Overflow用户
提问于 2021-12-07 17:20:16
回答 2查看 217关注 0票数 0
代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

Female = df[(df["Gender"] == "Female")]
Male = df[(df["Gender"] == "Male")]

AgeClass = ['100+','95-99','90-94','85-89','80-84','75-79','70-74','65-69','60-64','55-59','50-54','45-49','40-44','35-39','30-34','25-29','20-24','15-19','10-14','5-9','0-4']

bar_plot = sns.barplot(x= Male, y=df['Age'], order=AgeClass)

bar_plot = sns.barplot(x= Female, y=df['Age'], order=AgeClass)

bar_plot.set(xlabel="Population (hundreds of millions)", ylabel="Age-Group", title = "Population Pyramid")

我试着用海运从熊猫df中建立一个人口金字塔。

我有价值错误。帮我修一下

代码语言:javascript
复制
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-07 17:42:04

我无法访问你的数据集,所以我不确定。据我所见,一个问题可能是,您传递给y的级数与传递给x的级数大小不同,因为x是掩码的结果,y是整个原始DataFrame的级数。

你应该这样做:

代码语言:javascript
复制
mask_female = df["Gender"] == "Female"
female = df[mask_female]["Gender"]
age_female = df[mask_female]["Age"]

mask_male = df["Gender"] == "Male"
male = df[mask_male]["Gender"]
age_male = df[mask_male]["Age"]

然后,对于sns.barplot调用,应该将maleage_malefemaleage_female传递给x和y参数。

另外,确保AgeClass中的所有值实际上都出现在"Age“列中。

一个小建议是:在创建这样的掩码时,我会使用非常好且可读的eval方法:

代码语言:javascript
复制
mask_male = df.eval("Gender == 'Male'")
票数 1
EN

Stack Overflow用户

发布于 2021-12-07 17:30:18

我相信您的问题来自于order=AgeClass,SeaBorn期待的是表中存在的值数组,而不是范围字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70264389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档