我是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)中的说话者似乎对绘制布尔数组没有任何问题。
希望任何人都能提供帮助!
答案 0 :(得分:3)
首先转换类型,然后绘制如下图:
series_bool.astype(float).plot()
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
的发布而改变