熊猫错误"属性错误:' numpy.ndarray'对象没有属性' set_title'"

时间:2017-09-12 16:01:35

标签: pandas histogram

我有一个数据框,我想从中使用pandas将名为similarity的列绘制成直方图。这是我在ipython中使用的代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#%matplotlib inline throws an error but why?
%matplotlib auto

Df = pd.read_csv('file1.csv')
file1_hist = Df.hist(column= 'similarity', bins =50, color= 'red')
#setting labels for title and axes throws an error, why?
file1_hist.set_title('File 1 Histogram')
file1_hist.set_xlabel('similarity(%)')
file1_hist.set_ylabel('Frequency')

首先,我无法输入'%matplotlib inline'。错误显示UnknownBackend: No event loop integration for u'inline'. Supported event loops are: qt, qt4, qt5, gtk, gtk2, gtk3, tk, wx, pyglet, glut, osx因此,我输入了%matplotlib auto'但我不确定这是不对的。

此外,当我尝试添加title / x / y轴名称时,出现错误消息:AttributeError: 'numpy.ndarray' object has no attribute 'set_title'

有人可以帮我解决发生的事情吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

DataFrame.hist()会返回一个轴数组,因为如果您有多个列,并且如果不使用column参数DataFrame.hist过滤它们,则会绘制多个子图 - 每列一个。每个子图都有自己的轴:

In [266]: df = pd.DataFrame(np.random.randint(5, size=(5, 3)), columns=list('abc'))

In [267]: df
Out[267]:
   a  b  c
0  4  1  0
1  4  0  0
2  4  4  1
3  1  0  4
4  2  0  1

In [268]: axes = df.hist(column='a', bins =50, color= 'red')

In [269]: axes
Out[269]: array([[<matplotlib.axes._subplots.AxesSubplot object at 0x0000000012167908>]], dtype=object)

In [270]: axes.shape
Out[270]: (1, 1)

In [271]: type(axes)
Out[271]: numpy.ndarray

In [272]: type(axes[0][0])
Out[272]: matplotlib.axes._subplots.AxesSubplot

所以试试这个代替你的代码:

file1_hist[0][0].set_title('File 1 Histogram')
file1_hist[0][0].set_xlabel('similarity(%)')
file1_hist[0][0].set_ylabel('Frequency')