使用 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

如何将 pandas 系列转换为 seaborn 条形图

seaborn使用(样式管理)

来自 pandas 数据框的 2 列的 Seaborn 散点图

如何为来自同一个熊猫数据框的所有不同列制作单独的 Seaborn kde 图?