如何在同一Jupyter笔记本单元格中显示多个pandas系列直方图?

5

我有一个明显分层的数据集,我正在寻找图形证据表明它们的直方图存在差异。假设我的数据集看起来像这样:

id | cat | hour
---------------
1  | a   | 14
5  | c   | 9

如果我尝试绘制每个固定分类变量的直方图,则会得到重叠的图形。例如,如果我编写

unique_cats = list(df["cat"].unique())
for cat in unique_cats:
    df[df["cat"] == cat]["hour"].hist(bins=24, rwidth=0.9,
                                      normed=True, alpha=0.3)

然后我得到了一堆重叠的直方图。这是一个截图:

overlapping histograms

我该如何让我的直方图在jupyter笔记本中各自占据一行?


@ImportanceOfBeingErnest 抱歉,我不是有意保留那个:) 但是,我添加了一个屏幕截图显示问题。 - user184074
“它们自己的单独行”是指您希望每个直方图都有一个图形或子图吗? - ImportanceOfBeingErnest
是的,那正是我想要的! - user184074
图形和子图不是同一回事。您更喜欢哪一个? - DavidG
@DavidG 你说得对,但在我的情况下,据我所知,这种差异并不重要。 - user184074
1个回答

5
您可能需要为每个类别创建一个新的图形 (plt.figure()):
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
%matplotlib inline

df = pd.DataFrame({"cat": np.random.choice(list("ABC"), size=100),
                  "hour" : np.random.rand(100)})
unique_cats = list(df["cat"].unique())
for cat in unique_cats:
    plt.figure()
    df[df["cat"] == cat]["hour"].hist(bins=24, rwidth=0.9,
                                      normed=True, alpha=0.3)

enter image description here


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