我想为 df panda 数据框中的每个属性生成一个箱线图。
当我尝试下面的代码时,
features = df.columns
#print(features)
temp_df = pd.DataFrame(df3, columns=[features[1]])
temp_df.boxplot()
第一个特征的箱线图已成功生成,但从第二个特征开始,它给了我以下错误。
usr/local/lib/python3.7/dist-packages/pandas/plotting/_core.py in boxplot_frame(self, column, by, ax, fontsize, rot, grid, figsize, layout, return_type, backend, **kwargs)
503 layout=layout,
504 return_type=return_type,
--> 505 **kwargs,
506 )
507
/usr/local/lib/python3.7/dist-packages/pandas/plotting/_matplotlib/boxplot.py in boxplot_frame(self, column, by, ax, fontsize, rot, grid, figsize, layout, return_type, **kwds)
389 layout=layout,
390 return_type=return_type,
--> 391 **kwds,
392 )
393 plt.draw_if_interactive()
/usr/local/lib/python3.7/dist-packages/pandas/plotting/_matplotlib/boxplot.py in boxplot(data, column, by, ax, fontsize, rot, grid, figsize, layout, return_type, **kwds)
357 data = data[columns]
358
--> 359 result = plot_group(columns, data.values.T, ax)
360 ax.grid(grid)
361
/usr/local/lib/python3.7/dist-packages/pandas/plotting/_matplotlib/boxplot.py in plot_group(keys, values, ax)
302 ticks = ax.get_xticks()
303 if len(ticks) != len(keys):
--> 304 i, remainder = divmod(len(ticks), len(keys))
305 assert remainder == 0, remainder
306 keys *= i
ZeroDivisionError: integer division or modulo by zero
非常感谢能对此提供帮助!!
答案 0 :(得分:0)
boxplot
与大多数 Pandas 绘图函数一样,需要数字数据。此外,数据必须在 DataFrame 中指定为数字类型。
您的 df3[features[1]]
是否设置为对象类型?我刚刚遇到了这个问题,意识到数据被标记为对象并强制使用数据类型解决了这个问题。
试试 temp_df = pd.DataFrame(df3, columns=[features[1]], dtype='float')
,或者任何对你有意义的数字类型。