为什么 Pandas throw 'NoneType' object is not callable during plotting?
Why does Pandas throw 'NoneType' object is not callable during plotting?
我有Pandas个系列:
results
Out[75]:
job_id
294 PASSED 115
FAILED 1
FIXED 0
Failed 0
REGRESSION 0
SKIPPED 0
295 PASSED 191
FAILED 0
FIXED 0
Failed 0
REGRESSION 0
SKIPPED 0
296 PASSED 191
REGRESSION 1
FAILED 0
FIXED 0
Failed 0
SKIPPED 0
297 PASSED 268
SKIPPED 11
FAILED 7
FIXED 1
REGRESSION 1
Failed 0
298 PASSED 189
REGRESSION 2
FAILED 1
FIXED 1
Failed 0
SKIPPED 0
299 PASSED 266
SKIPPED 11
FAILED 9
FIXED 2
REGRESSION 2
Failed 0
303 PASSED 190
FIXED 2
FAILED 0
Failed 0
REGRESSION 0
SKIPPED 0
305 PASSED 192
FAILED 0
FIXED 0
Failed 0
REGRESSION 0
SKIPPED 0
307 PASSED 192
FAILED 0
FIXED 0
Failed 0
REGRESSION 0
SKIPPED 0
309 PASSED 192
FAILED 0
FIXED 0
Failed 0
REGRESSION 0
SKIPPED 0
Name: result, dtype: int64
当我尝试绘制它时:
results.plot(kind="line")
我收到
Traceback (most recent call last):
File "C:\Python310\lib\site-packages\numpy\core\getlimits.py", line 384, in __new__
dtype = numeric.dtype(dtype)
TypeError: 'NoneType' object is not callable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python310\lib\site-packages\IPython\core\interactiveshell.py", line 3251, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-78-2d999262e4ca>", line 1, in <module>
results.plot(kind="line")
File "C:\Python310\lib\site-packages\pandas\plotting\_core.py", line 972, in __call__
return plot_backend.plot(data, kind=kind, **kwargs)
File "C:\Python310\lib\site-packages\pandas\plotting\_matplotlib\__init__.py", line 71, in plot
plot_obj.generate()
File "C:\Python310\lib\site-packages\pandas\plotting\_matplotlib\core.py", line 294, in generate
self._post_plot_logic_common(ax, self.data)
File "C:\Python310\lib\site-packages\pandas\plotting\_matplotlib\core.py", line 473, in _post_plot_logic_common
self._apply_axis_properties(ax.xaxis, rot=self.rot, fontsize=self.fontsize)
File "C:\Python310\lib\site-packages\pandas\plotting\_matplotlib\core.py", line 561, in _apply_axis_properties
labels = axis.get_majorticklabels() + axis.get_minorticklabels()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1201, in get_majorticklabels
ticks = self.get_major_ticks()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1371, in get_major_ticks
numticks = len(self.get_majorticklocs())
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1277, in get_majorticklocs
return self.major.locator()
File "C:\Python310\lib\site-packages\matplotlib\ticker.py", line 2113, in __call__
vmin, vmax = self.axis.get_view_interval()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1987, in getter
return getattr(getattr(self.axes, lim_name), attr_name)
File "C:\Python310\lib\site-packages\matplotlib\axes\_base.py", line 781, in viewLim
self._unstale_viewLim()
File "C:\Python310\lib\site-packages\matplotlib\axes\_base.py", line 776, in _unstale_viewLim
self.autoscale_view(**{f"scale{name}": scale
File "C:\Python310\lib\site-packages\matplotlib\axes\_base.py", line 2932, in autoscale_view
handle_single_axis(
File "C:\Python310\lib\site-packages\matplotlib\axes\_base.py", line 2895, in handle_single_axis
x0, x1 = locator.nonsingular(x0, x1)
File "C:\Python310\lib\site-packages\matplotlib\ticker.py", line 1654, in nonsingular
return mtransforms.nonsingular(v0, v1, expander=.05)
File "C:\Python310\lib\site-packages\matplotlib\transforms.py", line 2880, in nonsingular
if maxabsvalue < (1e6 / tiny) * np.finfo(float).tiny:
File "C:\Python310\lib\site-packages\numpy\core\getlimits.py", line 387, in __new__
dtype = numeric.dtype(type(dtype))
TypeError: 'NoneType' object is not callable
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python310\lib\site-packages\numpy\core\getlimits.py", line 384, in __new__
dtype = numeric.dtype(dtype)
TypeError: 'NoneType' object is not callable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:\Python310\lib\tkinter\__init__.py", line 839, in callit
func(*args)
File "C:\Python310\lib\site-packages\matplotlib\backends\_backend_tk.py", line 251, in idle_draw
self.draw()
File "C:\Python310\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 9, in draw
super().draw()
File "C:\Python310\lib\site-packages\matplotlib\backends\backend_agg.py", line 436, in draw
self.figure.draw(self.renderer)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 73, in draw_wrapper
result = draw(artist, renderer, *args, **kwargs)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 50, in draw_wrapper
return draw(artist, renderer)
File "C:\Python310\lib\site-packages\matplotlib\figure.py", line 2810, in draw
mimage._draw_list_compositing_images(
File "C:\Python310\lib\site-packages\matplotlib\image.py", line 132, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 50, in draw_wrapper
return draw(artist, renderer)
File "C:\Python310\lib\site-packages\matplotlib\axes\_base.py", line 3082, in draw
mimage._draw_list_compositing_images(
File "C:\Python310\lib\site-packages\matplotlib\image.py", line 132, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 50, in draw_wrapper
return draw(artist, renderer)
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1158, in draw
ticks_to_draw = self._update_ticks()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1045, in _update_ticks
major_locs = self.get_majorticklocs()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1277, in get_majorticklocs
return self.major.locator()
File "C:\Python310\lib\site-packages\matplotlib\ticker.py", line 2114, in __call__
return self.tick_values(vmin, vmax)
File "C:\Python310\lib\site-packages\matplotlib\ticker.py", line 2120, in tick_values
vmin, vmax = mtransforms.nonsingular(
File "C:\Python310\lib\site-packages\matplotlib\transforms.py", line 2880, in nonsingular
if maxabsvalue < (1e6 / tiny) * np.finfo(float).tiny:
File "C:\Python310\lib\site-packages\numpy\core\getlimits.py", line 387, in __new__
dtype = numeric.dtype(type(dtype))
TypeError: 'NoneType' object is not callable
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python310\lib\site-packages\numpy\core\getlimits.py", line 384, in __new__
dtype = numeric.dtype(dtype)
TypeError: 'NoneType' object is not callable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:\Python310\lib\tkinter\__init__.py", line 839, in callit
func(*args)
File "C:\Python310\lib\site-packages\matplotlib\backends\_backend_tk.py", line 251, in idle_draw
self.draw()
File "C:\Python310\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 9, in draw
super().draw()
File "C:\Python310\lib\site-packages\matplotlib\backends\backend_agg.py", line 436, in draw
self.figure.draw(self.renderer)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 73, in draw_wrapper
result = draw(artist, renderer, *args, **kwargs)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 50, in draw_wrapper
return draw(artist, renderer)
File "C:\Python310\lib\site-packages\matplotlib\figure.py", line 2810, in draw
mimage._draw_list_compositing_images(
File "C:\Python310\lib\site-packages\matplotlib\image.py", line 132, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 50, in draw_wrapper
return draw(artist, renderer)
File "C:\Python310\lib\site-packages\matplotlib\axes\_base.py", line 3082, in draw
mimage._draw_list_compositing_images(
File "C:\Python310\lib\site-packages\matplotlib\image.py", line 132, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 50, in draw_wrapper
return draw(artist, renderer)
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1158, in draw
ticks_to_draw = self._update_ticks()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1045, in _update_ticks
major_locs = self.get_majorticklocs()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1277, in get_majorticklocs
return self.major.locator()
File "C:\Python310\lib\site-packages\matplotlib\ticker.py", line 2114, in __call__
return self.tick_values(vmin, vmax)
File "C:\Python310\lib\site-packages\matplotlib\ticker.py", line 2120, in tick_values
vmin, vmax = mtransforms.nonsingular(
File "C:\Python310\lib\site-packages\matplotlib\transforms.py", line 2880, in nonsingular
if maxabsvalue < (1e6 / tiny) * np.finfo(float).tiny:
File "C:\Python310\lib\site-packages\numpy\core\getlimits.py", line 387, in __new__
dtype = numeric.dtype(type(dtype))
TypeError: 'NoneType' object is not callable
我想绘制此图以将作业执行与堆积条形图进行比较,以可视化结果中的任何问题。
我假设您想制作以下内容:
下面是生成上述情节的完全可重现的 Python 脚本。
import matplotlib.pyplot as plt
import pandas as pd
result_types = ["PASSED", "FAILED", "FIXED", "Failed", "REGRESSION", "SKIPPED"]
# this seems to be your data format exactly
results = pd.DataFrame(
{
"job_id": [294] * 6 + [295] * 6 + [296] * 6,
"": [115, 1, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0],
},
).set_index(["job_id", pd.Index(result_types * 3)])
results = results.reset_index(-1).pivot(columns="level_1").droplevel(0, axis=1)
results.columns = results.columns.rename("counts")
results[result_types].plot(kind="bar", stacked="True")
plt.show()
我有Pandas个系列:
results
Out[75]:
job_id
294 PASSED 115
FAILED 1
FIXED 0
Failed 0
REGRESSION 0
SKIPPED 0
295 PASSED 191
FAILED 0
FIXED 0
Failed 0
REGRESSION 0
SKIPPED 0
296 PASSED 191
REGRESSION 1
FAILED 0
FIXED 0
Failed 0
SKIPPED 0
297 PASSED 268
SKIPPED 11
FAILED 7
FIXED 1
REGRESSION 1
Failed 0
298 PASSED 189
REGRESSION 2
FAILED 1
FIXED 1
Failed 0
SKIPPED 0
299 PASSED 266
SKIPPED 11
FAILED 9
FIXED 2
REGRESSION 2
Failed 0
303 PASSED 190
FIXED 2
FAILED 0
Failed 0
REGRESSION 0
SKIPPED 0
305 PASSED 192
FAILED 0
FIXED 0
Failed 0
REGRESSION 0
SKIPPED 0
307 PASSED 192
FAILED 0
FIXED 0
Failed 0
REGRESSION 0
SKIPPED 0
309 PASSED 192
FAILED 0
FIXED 0
Failed 0
REGRESSION 0
SKIPPED 0
Name: result, dtype: int64
当我尝试绘制它时:
results.plot(kind="line")
我收到
Traceback (most recent call last):
File "C:\Python310\lib\site-packages\numpy\core\getlimits.py", line 384, in __new__
dtype = numeric.dtype(dtype)
TypeError: 'NoneType' object is not callable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python310\lib\site-packages\IPython\core\interactiveshell.py", line 3251, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-78-2d999262e4ca>", line 1, in <module>
results.plot(kind="line")
File "C:\Python310\lib\site-packages\pandas\plotting\_core.py", line 972, in __call__
return plot_backend.plot(data, kind=kind, **kwargs)
File "C:\Python310\lib\site-packages\pandas\plotting\_matplotlib\__init__.py", line 71, in plot
plot_obj.generate()
File "C:\Python310\lib\site-packages\pandas\plotting\_matplotlib\core.py", line 294, in generate
self._post_plot_logic_common(ax, self.data)
File "C:\Python310\lib\site-packages\pandas\plotting\_matplotlib\core.py", line 473, in _post_plot_logic_common
self._apply_axis_properties(ax.xaxis, rot=self.rot, fontsize=self.fontsize)
File "C:\Python310\lib\site-packages\pandas\plotting\_matplotlib\core.py", line 561, in _apply_axis_properties
labels = axis.get_majorticklabels() + axis.get_minorticklabels()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1201, in get_majorticklabels
ticks = self.get_major_ticks()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1371, in get_major_ticks
numticks = len(self.get_majorticklocs())
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1277, in get_majorticklocs
return self.major.locator()
File "C:\Python310\lib\site-packages\matplotlib\ticker.py", line 2113, in __call__
vmin, vmax = self.axis.get_view_interval()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1987, in getter
return getattr(getattr(self.axes, lim_name), attr_name)
File "C:\Python310\lib\site-packages\matplotlib\axes\_base.py", line 781, in viewLim
self._unstale_viewLim()
File "C:\Python310\lib\site-packages\matplotlib\axes\_base.py", line 776, in _unstale_viewLim
self.autoscale_view(**{f"scale{name}": scale
File "C:\Python310\lib\site-packages\matplotlib\axes\_base.py", line 2932, in autoscale_view
handle_single_axis(
File "C:\Python310\lib\site-packages\matplotlib\axes\_base.py", line 2895, in handle_single_axis
x0, x1 = locator.nonsingular(x0, x1)
File "C:\Python310\lib\site-packages\matplotlib\ticker.py", line 1654, in nonsingular
return mtransforms.nonsingular(v0, v1, expander=.05)
File "C:\Python310\lib\site-packages\matplotlib\transforms.py", line 2880, in nonsingular
if maxabsvalue < (1e6 / tiny) * np.finfo(float).tiny:
File "C:\Python310\lib\site-packages\numpy\core\getlimits.py", line 387, in __new__
dtype = numeric.dtype(type(dtype))
TypeError: 'NoneType' object is not callable
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python310\lib\site-packages\numpy\core\getlimits.py", line 384, in __new__
dtype = numeric.dtype(dtype)
TypeError: 'NoneType' object is not callable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:\Python310\lib\tkinter\__init__.py", line 839, in callit
func(*args)
File "C:\Python310\lib\site-packages\matplotlib\backends\_backend_tk.py", line 251, in idle_draw
self.draw()
File "C:\Python310\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 9, in draw
super().draw()
File "C:\Python310\lib\site-packages\matplotlib\backends\backend_agg.py", line 436, in draw
self.figure.draw(self.renderer)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 73, in draw_wrapper
result = draw(artist, renderer, *args, **kwargs)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 50, in draw_wrapper
return draw(artist, renderer)
File "C:\Python310\lib\site-packages\matplotlib\figure.py", line 2810, in draw
mimage._draw_list_compositing_images(
File "C:\Python310\lib\site-packages\matplotlib\image.py", line 132, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 50, in draw_wrapper
return draw(artist, renderer)
File "C:\Python310\lib\site-packages\matplotlib\axes\_base.py", line 3082, in draw
mimage._draw_list_compositing_images(
File "C:\Python310\lib\site-packages\matplotlib\image.py", line 132, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 50, in draw_wrapper
return draw(artist, renderer)
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1158, in draw
ticks_to_draw = self._update_ticks()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1045, in _update_ticks
major_locs = self.get_majorticklocs()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1277, in get_majorticklocs
return self.major.locator()
File "C:\Python310\lib\site-packages\matplotlib\ticker.py", line 2114, in __call__
return self.tick_values(vmin, vmax)
File "C:\Python310\lib\site-packages\matplotlib\ticker.py", line 2120, in tick_values
vmin, vmax = mtransforms.nonsingular(
File "C:\Python310\lib\site-packages\matplotlib\transforms.py", line 2880, in nonsingular
if maxabsvalue < (1e6 / tiny) * np.finfo(float).tiny:
File "C:\Python310\lib\site-packages\numpy\core\getlimits.py", line 387, in __new__
dtype = numeric.dtype(type(dtype))
TypeError: 'NoneType' object is not callable
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python310\lib\site-packages\numpy\core\getlimits.py", line 384, in __new__
dtype = numeric.dtype(dtype)
TypeError: 'NoneType' object is not callable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:\Python310\lib\tkinter\__init__.py", line 839, in callit
func(*args)
File "C:\Python310\lib\site-packages\matplotlib\backends\_backend_tk.py", line 251, in idle_draw
self.draw()
File "C:\Python310\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 9, in draw
super().draw()
File "C:\Python310\lib\site-packages\matplotlib\backends\backend_agg.py", line 436, in draw
self.figure.draw(self.renderer)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 73, in draw_wrapper
result = draw(artist, renderer, *args, **kwargs)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 50, in draw_wrapper
return draw(artist, renderer)
File "C:\Python310\lib\site-packages\matplotlib\figure.py", line 2810, in draw
mimage._draw_list_compositing_images(
File "C:\Python310\lib\site-packages\matplotlib\image.py", line 132, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 50, in draw_wrapper
return draw(artist, renderer)
File "C:\Python310\lib\site-packages\matplotlib\axes\_base.py", line 3082, in draw
mimage._draw_list_compositing_images(
File "C:\Python310\lib\site-packages\matplotlib\image.py", line 132, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Python310\lib\site-packages\matplotlib\artist.py", line 50, in draw_wrapper
return draw(artist, renderer)
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1158, in draw
ticks_to_draw = self._update_ticks()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1045, in _update_ticks
major_locs = self.get_majorticklocs()
File "C:\Python310\lib\site-packages\matplotlib\axis.py", line 1277, in get_majorticklocs
return self.major.locator()
File "C:\Python310\lib\site-packages\matplotlib\ticker.py", line 2114, in __call__
return self.tick_values(vmin, vmax)
File "C:\Python310\lib\site-packages\matplotlib\ticker.py", line 2120, in tick_values
vmin, vmax = mtransforms.nonsingular(
File "C:\Python310\lib\site-packages\matplotlib\transforms.py", line 2880, in nonsingular
if maxabsvalue < (1e6 / tiny) * np.finfo(float).tiny:
File "C:\Python310\lib\site-packages\numpy\core\getlimits.py", line 387, in __new__
dtype = numeric.dtype(type(dtype))
TypeError: 'NoneType' object is not callable
我想绘制此图以将作业执行与堆积条形图进行比较,以可视化结果中的任何问题。
我假设您想制作以下内容:
下面是生成上述情节的完全可重现的 Python 脚本。
import matplotlib.pyplot as plt
import pandas as pd
result_types = ["PASSED", "FAILED", "FIXED", "Failed", "REGRESSION", "SKIPPED"]
# this seems to be your data format exactly
results = pd.DataFrame(
{
"job_id": [294] * 6 + [295] * 6 + [296] * 6,
"": [115, 1, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0],
},
).set_index(["job_id", pd.Index(result_types * 3)])
results = results.reset_index(-1).pivot(columns="level_1").droplevel(0, axis=1)
results.columns = results.columns.rename("counts")
results[result_types].plot(kind="bar", stacked="True")
plt.show()