使用 pandas 和 seaborn 制作年龄金字塔图
Posted
技术标签:
【中文标题】使用 pandas 和 seaborn 制作年龄金字塔图【英文标题】:Using pandas and seaborn to make an age pyramid chart 【发布时间】:2021-03-15 20:09:45 【问题描述】:我正在处理模拟人口普查数据,并希望使用我的数据框从性别列中获取“男性”和“女性”的值,并将它们与他们的年龄进行对比,这本身就是一个不同的列。我尝试了多种不同的方法,根本无法绘制。 数据帧中的数据已被清理,我还尝试使用 numpy 数组拆分这些数据,尽管我知道有一种方法可以仅操作数据帧,但我不知道如何操作。
尝试的金字塔代码
*pop_age = df.T
pop_age.reset_index(inplace=True)
pop_age.columns = ['Age', 'Female', 'Male']
f, ax = plt.subplots(figsize=(10,20))
age_plot = sns.barplot(x='Male', y='Age', data=pop_age, lw=0)
age_plot = sns.barplot(x='Female', y='Age', data=pop_age, lw=0)
age_plot.set(xlabel='Population Count', ylabel='Age', title='Population Age Pyramid')*
Numpy 数组拆分数据
men=[]
women=[]
for i in range(len(data2)):
if data2[i][7] == 'Male':
a=data2[i]
men.append(a)
elif data2[i][7] == 'Female' or 'Fe male':
b=data2[i]
woman.append(b)
任何帮助将不胜感激。 :)
【问题讨论】:
【参考方案1】:您的代码似乎不错。
您只需要为每个 barplot 精确设置所需的颜色:
age_plot = sns.barplot(x='Male', y='Age', data=pop_age, lw=0, color = 'thecoloryouwant')
然后,您只需手动创建图例并更改 x 轴的刻度标签即可仅获取正值。
【讨论】:
ValueError:长度不匹配:预期轴有 10237 个元素,新值有 3 个元素。我仍然想出这个错误,有什么建议吗? :) 这显然在这一行:----> 3 pop_age.columns = ['Age', 'Female', 'Male']以上是关于使用 pandas 和 seaborn 制作年龄金字塔图的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 seaborn 和 ipywidgets 制作交互式条形图
将分割图(点图)添加到分组箱线图 - Pandas 和 Seaborn