使用Pandas和Group By绘制堆积直方图

5
我正在处理一个数据集,如下所示:
性别,身高,宽度 男性,23.4,4.4 女性,45.4,4.5
我想可视化身高和宽度的堆积直方图。我希望每个图中有两个堆积的直方图(分别为每个性别)。
这是文档中的堆积直方图。如果有三个性别,这可能是宽度的好图表。

enter image description here

我希望你能理解我的意思,我已经花了几个小时在这个问题上。

1个回答

8

在pandas文档中的示例中,数据帧有三个分离的列,df.hist()为这三个列生成了三个不同的直方图。但是您的数据结构略有不同。如果您想直接使用matplotlib,可以尝试以下方法:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
np.random.seed(10)
df = pd.DataFrame({"Gender":np.random.choice(["Female", "Male"], 1000), 
                "Height": 30+np.random.randn(1000)*5,
                "Width": 5+np.random.randn(1000)})
df.loc[df["Gender"]=="Male", "Height"] = df.loc[df["Gender"]=="Male", "Height"] + 8

plt.hist(df[df["Gender"]=="Male"]["Height"].reset_index(drop=True), alpha=0.6, label="Male")
plt.hist(df[df["Gender"]=="Female"]["Height"].reset_index(drop=True), alpha=0.6, label="Female")
plt.legend()
plt.show()

这将创建一个像这样的直方图:

在此输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接