熊猫布尔系列不会情节

时间:2018-08-07 18:58:21

标签: python arrays pandas plot boolean

我是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)中的说话者似乎对绘制布尔数组没有任何问题。

希望任何人都能提供帮助!

2 个答案:

答案 0 :(得分:3)

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

series_bool.astype(float).plot()

enter image description here

P.S。,在您所引用的视频中,讲师也在绘制True / False,所以这看起来像是熊猫对布尔值的处理方式的改变

答案 1 :(得分:2)

这绝对是由于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的发布而改变