'numpy.ndarray'对象在尝试生成boxplot时没有属性'find'?

杜德

我正在尝试生成箱形图。这是我的代码,数据如下:

def loadData(fileName):
 data = pd.read_csv(fileName, quotechar='"')
    cols = data.columns.tolist()

    cols = cols[1:] + [ cols[0] ]
    data = data[cols]
    return data.values

cols={}
cols['close/last']=0
cols['volumne']=1
cols['open']=2
cols['high']=3
cols['low']=4
cols['date']=5

fileName = 'microsoft.csv'

def boxplot():
    data1 = loadData(fileName)
    ithattr1 = cols['high']
    ithattr2 = cols['close/last']
    dataset1 = data1[:,ithattr1]
    dataset2 = data1[:,ithattr2]

    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.boxplot([dataset1,dataset2])
    plt.show()


boxplot()

数据是浮点型的,由print命令验证,其输出为<type 'float'>在运行代码时,出现以下错误(下面的完整stacktrace)

AttributeError: 'numpy.ndarray' object has no attribute 'find'

我的数据(例如dataset1)如下所示

[52.21 52.2 52.44 52.65 52.33 51.58 51.38 51.68 51.97 53.4163 54.07 53.1
 52.85 53.28 53.485 54.4001 55.39 54.8 56.19 56.78 56.85 55.95 55.96 55.88
 55.48 55.35 56.0 56.79 56.245 55.9 55.21 55.1 55.655 55.87 56.1 55.97
.........................................
 27.54 27.66 28.02 28.05 27.97 28.19 28.13]

data.shape=的输出(756,)

数据文件格式:

2016/01/29,97.3400,64332440.0000,94.7900,97.3400,94.3500
2016/01/28,94.0900,55622370.0000,93.7900,94.5200,92.3900
2016/01/27,93.4200,133059000.0000,96.0400,96.6289,93.3400
2016/01/26,99.9900,71937310.0000,99.9300,100.8800,98.0700
2016/01/25,99.4400,51529980.0000,101.5200,101.5300,99.2100

堆栈跟踪

Traceback (most recent call last):
  File "plot_curves.py", line 100, in <module>
    boxplot()
  File "plot_curves.py", line 96, in boxplot
    ax.boxplot([dataset1,dataset2])
  File "/home/rohit/anaconda/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 3118, in boxplot
    manage_xticks=manage_xticks)
  File "/home/rohit/anaconda/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 3480, in bxp
    flier_x, flier_y, **final_flierprops
  File "/home/rohit/anaconda/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 3361, in doplot
    return self.plot(*args, **kwargs)
  File "/home/rohit/anaconda/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 1373, in plot
    for line in self._get_lines(*args, **kwargs):
  File "/home/rohit/anaconda/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 304, in _grab_next_args
    for seg in self._plot_args(remaining, kwargs):
  File "/home/rohit/anaconda/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 263, in _plot_args
    linestyle, marker, color = _process_plot_format(tup[-1])
  File "/home/rohit/anaconda/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 85, in _process_plot_format
    if fmt.find('--') >= 0:
AttributeError: 'numpy.ndarray' object has no attribute 'find'

是否有人有任何想法,如何解决?

理查德·斯内普

您问题的直接原因是dataset1dataset2ndarray类型dtype == object

尽管您的值是按float类型读取的,但是当您访问values返回数组的列(在行dataset1 = data1[:,ithattr1])时,dtype会更改为object(因为您实际上是逐行提取数据,然后提取列,numpy并且浮点数和行中的字符串,因此必须强制使用最特定的通用数据类型- object

您可以通过几种方法解决此问题。一种是简单地使数组成为列表,这时Python强制将看起来像浮点数的东西变成浮点数,即更改

ax.boxplot([dataset1,dataset2])

ax.boxplot([list(dataset1),list(dataset2)])

另一种是添加明确设置类型的行:

dataset1 = dataset1.astype(np.float)
dataset2 = dataset2.astype(np.float)

当您按索引访问列中包含不同数据类型的pandas数据帧或numpy数组时,这是一个陷阱。调试起来非常困难(花了我一段时间才能解决这个问题,我之前见过-请参阅编辑历史记录)


但是,通过数字索引处理数据的方式也意味着最终必须重新排序列等以方便使用loadData功能。更好的方法是让熊猫对类型等进行所有繁重的工作。

作为一个例子-我将您的代码放入(我认为)更传统的pandas / python编写中。它有点短,不需要黑客将数据更改为我上面提供给您的列表。下面是代码,其后是输出图(使用您问题中的输入数据片段)

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

def loadData(filename,cols):
    data = pd.read_csv(filename, quotechar='"',names=cols,header=None)
    return data

def boxplot(filename,cols):
    data1 = loadData(filename,cols)

    fig = plt.figure()
    ax = fig.add_subplot(111)

    ax.boxplot([data1['high'],data1['close/last']])
    plt.show()

cols=['date','close/last','volume','open','high','low']
filename = 'microsoft.csv'

boxplot(filename,cols)

输出

提供数据的箱线图

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AttributeError:“ numpy.ndarray”对象没有属性“ clock”

来自分类Dev

'numpy.ndarray'对象没有属性'remove'

来自分类Dev

AttributeError:“ numpy.ndarray”对象没有属性“ columns”

来自分类Dev

numpy.ndarray对象没有属性“ read”(和“ seek”)

来自分类Dev

AttributeError:'numpy.ndarray'对象没有属性'save'

来自分类Dev

AttributeError:“ numpy.ndarray”对象没有属性“ lower”

来自分类Dev

AttributeError:“ numpy.ndarray”对象没有属性“ transform”

来自分类Dev

AttributeError:“ numpy.ndarray”对象没有属性“ self”

来自分类Dev

numpy.ndarray'对象没有属性'append

来自分类Dev

'numpy.ndarray'对象没有属性'set_xlabel'

来自分类Dev

AttributeError:'numpy.ndarray'对象没有属性'score'错误

来自分类Dev

AttributeError:“ numpy.ndarray”对象没有属性“ toarray”

来自分类Dev

'numpy.ndarray'对象没有属性'read'

来自分类Dev

AttributeError:“ numpy.ndarray”对象没有属性“ plot”

来自分类Dev

Python Opencv 'numpy.ndarray' 对象没有属性 'iteritems'

来自分类Dev

'numpy.ndarray' 对象的错误没有属性 'append'

来自分类Dev

在绘制子图时如何修复'numpy.ndarray'对象没有属性'get_figure'

来自分类Dev

python错误:“'numpy.ndarray'对象在训练doc2vec时没有属性'words'”

来自分类Dev

AttributeError:'numpy.ndarray'对象没有属性'append':图像处理示例

来自分类Dev

Python:matplotlib'numpy.ndarray'对象没有属性'has_data'

来自分类Dev

Python:Pandas Dataframe AttributeError:“ numpy.ndarray”对象没有属性“ fillna”

来自分类Dev

AttributeError:“ numpy.ndarray”对象没有适合物流模型数据的属性“ lower”

来自分类Dev

来自plt.subplots()的轴是“ numpy.ndarray”对象,没有属性“ plot”

来自分类Dev

多变量回归错误“ AttributeError:'numpy.ndarray'对象没有属性'columns'”

来自分类Dev

AttributeError:'numpy.ndarray'对象没有属性'get_shape'吗?

来自分类Dev

保存到csv-numpy.ndarray'对象没有属性'append'

来自分类Dev

如何修复 Pandas 导入 AttributeError “类型对象 'numpy.ndarray' 没有属性 '__array_function__'”

来自分类Dev

NumPy 中的错误:“numpy.ndarray”对象不可调用

来自分类Dev

'numpy.ndarray' 对象如何不是 'numpy.ndarray' 对象?

Related 相关文章

  1. 1

    AttributeError:“ numpy.ndarray”对象没有属性“ clock”

  2. 2

    'numpy.ndarray'对象没有属性'remove'

  3. 3

    AttributeError:“ numpy.ndarray”对象没有属性“ columns”

  4. 4

    numpy.ndarray对象没有属性“ read”(和“ seek”)

  5. 5

    AttributeError:'numpy.ndarray'对象没有属性'save'

  6. 6

    AttributeError:“ numpy.ndarray”对象没有属性“ lower”

  7. 7

    AttributeError:“ numpy.ndarray”对象没有属性“ transform”

  8. 8

    AttributeError:“ numpy.ndarray”对象没有属性“ self”

  9. 9

    numpy.ndarray'对象没有属性'append

  10. 10

    'numpy.ndarray'对象没有属性'set_xlabel'

  11. 11

    AttributeError:'numpy.ndarray'对象没有属性'score'错误

  12. 12

    AttributeError:“ numpy.ndarray”对象没有属性“ toarray”

  13. 13

    'numpy.ndarray'对象没有属性'read'

  14. 14

    AttributeError:“ numpy.ndarray”对象没有属性“ plot”

  15. 15

    Python Opencv 'numpy.ndarray' 对象没有属性 'iteritems'

  16. 16

    'numpy.ndarray' 对象的错误没有属性 'append'

  17. 17

    在绘制子图时如何修复'numpy.ndarray'对象没有属性'get_figure'

  18. 18

    python错误:“'numpy.ndarray'对象在训练doc2vec时没有属性'words'”

  19. 19

    AttributeError:'numpy.ndarray'对象没有属性'append':图像处理示例

  20. 20

    Python:matplotlib'numpy.ndarray'对象没有属性'has_data'

  21. 21

    Python:Pandas Dataframe AttributeError:“ numpy.ndarray”对象没有属性“ fillna”

  22. 22

    AttributeError:“ numpy.ndarray”对象没有适合物流模型数据的属性“ lower”

  23. 23

    来自plt.subplots()的轴是“ numpy.ndarray”对象,没有属性“ plot”

  24. 24

    多变量回归错误“ AttributeError:'numpy.ndarray'对象没有属性'columns'”

  25. 25

    AttributeError:'numpy.ndarray'对象没有属性'get_shape'吗?

  26. 26

    保存到csv-numpy.ndarray'对象没有属性'append'

  27. 27

    如何修复 Pandas 导入 AttributeError “类型对象 'numpy.ndarray' 没有属性 '__array_function__'”

  28. 28

    NumPy 中的错误:“numpy.ndarray”对象不可调用

  29. 29

    'numpy.ndarray' 对象如何不是 'numpy.ndarray' 对象?

热门标签

归档