pandas 图时间序列['numpy.ndarray'对象没有属性'find'] [英] pandas plot time series ['numpy.ndarray' object has no attribute 'find']

查看:80
本文介绍了 pandas 图时间序列['numpy.ndarray'对象没有属性'find']的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码尝试绘制时间序列.注意,我删除第二列,因为它不相关.然后我删除第一行和最后一行.

I have the following code attempting to plot a timeseries. Note, I drop the second column because it's not relevant. And I drop the first and last rows.

import pandas as pd

activity = pd.read_csv('activity.csv', index_col=2)
activity = activity.ix[1:-1] #drop first and last rows due to invalid data
series = activity['activity']
series.plot()

我收到以下错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-10-36df40c11065> in <module>()
----> 1 series.plot()

.../pandas/tools/plotting.pyc in plot_series(series, label, kind, use_index,
                                             rot, xticks, yticks, xlim, ylim,
                                             ax, style, grid, logy,
                                             secondary_y, **kwds)
   1326                      secondary_y=secondary_y, **kwds)
   1327 
-> 1328     plot_obj.generate()
   1329     plot_obj.draw()
   1330 

.../pandas/tools/plotting.pyc in generate(self)
    573         self._compute_plot_data()
    574         self._setup_subplots()
--> 575         self._make_plot()
    576         self._post_plot_logic()
    577         self._adorn_subplots()

.../pandas/tools/plotting.pyc in _make_plot(self)
    916                     args = (ax, x, y, style)
    917 
--> 918                 newline = plotf(*args, **kwds)[0]
    919                 lines.append(newline)
    920                 leg_label = label

.../matplotlib/axes.pyc in plot(self, *args, **kwargs)
   3991         lines = []
   3992 
-> 3993         for line in self._get_lines(*args, **kwargs):
   3994             self.add_line(line)
   3995             lines.append(line)

.../matplotlib>/axes.pyc in _grab_next_args(self, *args, **kwargs)
    328                 return
    329             if len(remaining) <= 3:
--> 330                 for seg in self._plot_args(remaining, kwargs):
    331                     yield seg
    332                 return

.../matplotlib/axes.pyc in _plot_args(self, tup, kwargs)
    287         ret = []
    288         if len(tup) > 1 and is_string_like(tup[-1]):
--> 289             linestyle, marker, color = _process_plot_format(tup[-1])
    290             tup = tup[:-1]
    291         elif len(tup) == 3:

.../matplotlib/axes.pyc in _process_plot_format(fmt)
     94     # handle the multi char special cases and strip them from the
     95     # string
---> 96     if fmt.find('--')>=0:
     97         linestyle = '--'
     98         fmt = fmt.replace('--', '')

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

如果我尝试使用较小的数据集,例如:

If I try it with a small dataset such as:

target, weekday, timestamp
0, Sat, 08 Dec 2012 16:26:26:625000
0, Sat, 08 Dec 2012 16:26:27:625000
0, Sat, 08 Dec 2012 16:26:28:625000
0, Sat, 08 Dec 2012 16:26:29:625000
1, Sat, 08 Dec 2012 16:26:30:625000
2, Sat, 08 Dec 2012 16:26:31:625000
0, Sat, 08 Dec 2012 16:26:32:625000
0, Sat, 08 Dec 2012 16:26:33:625000
1, Sat, 08 Dec 2012 16:26:34:625000
2, Sat, 08 Dec 2012 16:26:35:625000

它可以工作,但不适用于我的完整数据集. https://dl.dropbox.com/u/60861504/activity.csv 另外,我尝试使用数据集中的前10个项目进行测试,并得到了相同的错误,但是如果我手动分配一个值series[10] = 5,则会显示该图.我很困惑.

it works, but not on my full dataset. https://dl.dropbox.com/u/60861504/activity.csv Also I tried it with the first 10 items from my dataset and got the same error, but if I assign one value manually series[10] = 5 the plot shows up. I'm stumped.

推荐答案

根据我的经验,这是由于数据框中的非数字列而发生的.

In my experience this happens because of non numeric columns in the dataframe.

pd.read_csv尝试推断列的数据类型-我怀疑您损坏的列可能会混淆此过程,并且您最终在数据框中出现非数字类型的列

pd.read_csv tries to infer datatype of the columns - I suspect your corrupted columns might be confusing this process and you end up with columns of non numeric types in your data frame

这篇关于 pandas 图时间序列['numpy.ndarray'对象没有属性'find']的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆