-1

问题背景

我正在尝试绘制直方图以查看客户年龄在大小为 4 的 bin 中的分布。我最初使用的是不同大小的 bin,但以这种方式调整 bin 会影响图形的计数或 y 轴。

使用 plt.ylim(min, max) 是我设置 y 轴的方法。为了指定 max 变量,我尝试计算 bin 中年龄 (25<x<=35) 的最大值。

计数时我不断收到值错误。即使我使用 .astype(int) 将系列转换为整数,它也会显示另一个错误。

错误消息: ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

请问,我该如何纠正这个问题?

代码片段

freq, bins, patches = plt.hist(bank_churn_df['Customer_Age'], 
                               label = 'Ages', 
                               bins=4)

plt.ylim(0,bank_churn_df[(bank_churn_df.Customer_Age > 25) & (bank_churn_df.Customer_Age <= 35)].value_counts())

4

1 回答 1

0

请注意,ylim需要 2 个参数:bottomtop。两者都应该是单个值。

作为底部,您传递了0,到目前为止,它是一个值。

顶部value_counts()的结果,即它是 pandasonic 系列的值。

然而,我在上面写的所有内容都只是一个边缘评论。

我在您的代码中看到了这样一个缺陷,即value_counts计算每个单独值出现的次数。但是y轴上限应该是每个 bin 中有多少个值的最大值

所以也许你应该:

  • 首先从您的源数据计算pd.cut ,
  • 然后从中计算value_counts ,
  • 最后取这些值的最大值

另一种尝试是在显式调用ylim的情况下生成直方图,依赖于默认值。

于 2022-02-06T18:42:35.190 回答