Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python .py代码中缺少全局conv对象?_Python_Plot_Pandas - Fatal编程技术网

Python .py代码中缺少全局conv对象?

Python .py代码中缺少全局conv对象?,python,plot,pandas,Python,Plot,Pandas,我试着用熊猫做例子。我从Yahoo加载一个数据帧,将其导出到一个文件,将其读入一个数据帧,然后创建我想要绘制的系列。当我使用绘图代码时,它会抛出一个错误。错误为NameError:未定义全局名称“conv”。代码和完整错误如下所示 import datetime import pandas as pd import pandas.io.data from pandas import Series, DataFrame import matplotlib.pyplot as plt import

我试着用熊猫做例子。我从Yahoo加载一个数据帧,将其导出到一个文件,将其读入一个数据帧,然后创建我想要绘制的系列。当我使用绘图代码时,它会抛出一个错误。错误为NameError:未定义全局名称“conv”。代码和完整错误如下所示

import datetime
import pandas as pd
import pandas.io.data
from pandas import Series, DataFrame

import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rc('figure', figsize=(8, 7))


aapl = pd.io.data.get_data_yahoo('AAPL', 
                                 start=datetime.datetime(2006, 10, 1), 
                                 end=datetime.datetime(2014, 4, 10))

aapl.to_csv('data/aapl_ohlc.csv')

df = pd.read_csv('data/aapl_ohlc.csv', index_col='Date', parse_dates=True)

close_px = df['Adj Close']
mavg = pd.rolling_mean(close_px, 40)

close_px.plot(label='AAPL')
mavg.plot(label='mavg')
plt.legend()
它抛出以下错误

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-58-34eecf8ee548> in <module>()
      1 from pylab import *
----> 2 close_px.plot(label='AAPL')
      3 mavg.plot(label='mavg')
      4 plt.legend()

C:\Python33\lib\site-packages\pandas\tools\plotting.py in plot_series(series, label, kind, use_index, rot, xticks, yticks, xlim, ylim, ax, style, grid, legend, logx, logy, secondary_y, **kwds)
   1827                      secondary_y=secondary_y, **kwds)
   1828 
-> 1829     plot_obj.generate()
   1830     plot_obj.draw()
   1831 

C:\Python33\lib\site-packages\pandas\tools\plotting.py in generate(self)
    903         self._compute_plot_data()
    904         self._setup_subplots()
--> 905         self._make_plot()
    906         self._post_plot_logic()
    907         self._adorn_subplots()

C:\Python33\lib\site-packages\pandas\tools\plotting.py in _make_plot(self)
   1354 
   1355                 if self._is_datetype():
-> 1356                     left, right = _get_xlim(lines)
   1357                     ax.set_xlim(left, right)
   1358 

C:\Python33\lib\site-packages\pandas\tools\plotting.py in _get_xlim(lines)
   2507     for l in lines:
   2508         x = l.get_xdata()
-> 2509         left = min(_maybe_convert_date(x[0]), left)
   2510         right = max(_maybe_convert_date(x[-1]), right)
   2511     return left, right

C:\Python33\lib\site-packages\pandas\tools\plotting.py in _maybe_convert_date(x)
   2514 def _maybe_convert_date(x):
   2515     if not com.is_integer(x):
-> 2516         conv_func = conv._dt_to_float_ordinal
   2517         if isinstance(x, datetime.time):
   2518             conv_func = conv._to_ordinalf

NameError: global name 'conv' is not defined
输出

['AutoLocator', 'DatetimeConverter', 'Formatter', 'FreqGroup', 'HOURS_PER_DAY', 'Index', 'Locator', 'MINUTES_PER_DAY', 'MUSECONDS_PER_DAY', 'MilliSecondLocator', 'PandasAutoDateFormatter', 'PandasAutoDateLocator', 'Period', 'PeriodConverter', 'PeriodIndex', 'SECONDS_PER_DAY', 'TimeConverter', 'TimeFormatter', 'TimeSeries_DateFormatter', 'TimeSeries_DateLocator', '__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', '_annual_finder', '_daily_finder', '_dt_to_float_ordinal', '_from_ordinal', '_get_default_annual_spacing', '_monthly_finder', '_quarterly_finder', '_to_ordinalf', 'com', 'compat', 'date_range', 'dates', 'datetime', 'frequencies', 'get_datevalue', 'get_finder', 'has_level_label', 'lib', 'lrange', 'nonsingular', 'np', 'period_break', 'pydt', 'register', 'relativedelta', 'time2num', 'timedelta', 'tools', 'units'] 

启动一个新的IPython笔记本会话可以清除它。我真的不确定我对自己做了什么,但我从中学到了教训

值得注意的是,我必须补充一点

from imp import reload

对于文件lib\site packages\pandas\tools\plotting.py

,如果查看
plotting.py
中的代码,可以看到
conv
是导入后为
pandas.tseries.converter
指定的名称。输入
import pandas.tseries.converter
时会发生什么?我看起来对python很陌生。我仍然会遇到相同的错误。不,我的意思是,如果在控制台输入
import pandas.tseries.converter
,然后输入
print(dir(pandas.tseries.converter))
?暂时将代码放在一边。由于输出太长,无法发表评论,所以添加到问题的底部。
from imp import reload