我正在处理如下数据集:
Gender, Height, Width
Male, 23.4, 4.4
Female, 45.4, 4.5
我想要想象堆叠的高度和宽度直方图。我希望每个情节有两个叠加的直方图(每个性别一个)。
这是文档中的堆积直方图。如果有三种性别,这可能是一个很好的宽度图。
我希望你明白我的意思,我已经在这里抨击了几个小时。
答案 0 :(得分:6)
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()
这将创建如下的直方图: