熊猫布尔系列不会绘图

Posted

技术标签:

【中文标题】熊猫布尔系列不会绘图【英文标题】:Pandas boolean Series won't plot 【发布时间】:2019-01-14 22:49:21 【问题描述】:

我是 Python 新手,我正在尝试绘制一个布尔数组。但是,我遇到了一个错误,尽管其他人似乎对绘制布尔数组没有任何问题。

对于数值数组,它按预期工作。所以,下面的代码可以正常工作。

import pandas as pd
series_numeric = pd.Series([0,1,0])
series_numeric.plot()

但是,对于布尔数组,会发生错误。这是代码:

import pandas as pd
series_bool = pd.Series([False,True,False])
series_bool.plot()

它会抛出以下错误:

TypeError: Empty 'DataFrame': no numeric data to plot

但是,这很奇怪,因为this video(1:45:48)的演讲者在绘制布尔数组时似乎没有任何问题。

希望任何人都可以提供帮助!

【问题讨论】:

您使用的是什么pandas 版本? 可以用pandas复制0.22.0,这看起来像个bug 这是我预期的错误。我可能在视频中错过了它,尽管我没有看到他在哪里绘制布尔值。您希望series_bool.plot() 生成的图形是什么样的? 我使用的是 Pandas 0.23.4 版。 我也有同样的问题。如果您想查看零和一,那么 boolean 不是您想要的类型。只需将astypefloatint 一起使用。正如@Peyman 所示。为简洁起见,您也可以series_bool.mul(1).plot() 【参考方案1】:

这绝对是由于pandas/plotting/_core.py 处理数据的方式发生了变化。如果你去source of the current release 0.23.4,被认为是数字的data_types是np.number, "datetime", "datetimetz", "timedelta"

    numeric_data = data.select_dtypes(include=[np.number,
                                               "datetime",
                                               "datetimetz",
                                               "timedelta"])

    try:
        is_empty = numeric_data.empty
    except AttributeError:
        is_empty = not len(numeric_data)

    # no empty frames or series allowed
    if is_empty:
        raise TypeError('Empty 0!r: no numeric data to '
                        'plot'.format(numeric_data.__class__.__name__))

如果我们将几个版本返回到source of release 0.20.0,则此行如下所示:

numeric_data = data._convert(datetime=True)._get_numeric_data()

随着0.21.0 的发布而改变

【讨论】:

【参考方案2】:

先转换类型,然后绘制如下:

series_bool.astype(float).plot()

P.S.,在您所指的视频中,讲师也在绘制 True/False,所以这看起来像是 Pandas 对布尔值处理的改变

【讨论】:

numerical_status = machine_status=='OK' 返回一个布尔系列。您可以通过运行以下等效功能来检查这一点:(pd.Series(['apple', 'apple', 'banana'])=='apple').plot()。我的猜测是,处理布尔值的方式已经从它们被隐式转换为 0 和 1,就像 pythonic 一样,它们被视为非数字类型。尝试在你的 python 控制台中输入True+1 @tobsecret 对于布尔系列是正确的。然而,Peyman 提出的建议有效。非常感谢! @tobsecret 你是对的!这似乎与 Pandas 处理布尔值的变化有关!编辑答案以反映这一点!

以上是关于熊猫布尔系列不会绘图的主要内容,如果未能解决你的问题,请参考以下文章

如何避免熊猫直方图子图中的绘图标题和轴标题之间的重叠? [复制]

熊猫数据框绘图

索引转换为熊猫日期时间后,绘图图表是一团糟

熊猫计算唯一值并更改为百分比并放入绘图条形图中

如何在 3D 绘图(熊猫)中指定 kmeans 簇的颜色?

熊猫情节不显示