Python pandas numpy matplotlib溢出错误:日期值超出范围

Python pandas numpy matplotlib溢出错误:日期值超出范围,python,numpy,matplotlib,Python,Numpy,Matplotlib,我有代码爬过目录中的每个文件,并绘制它遇到的每个csv文件。每个CSV都有表单的标题 `Timestamp, P1rms (A), P2rms (A), P3rms (A), P4rms (A), P5rms (A), Vrms (V), P1 theta, P2 theta, P3 theta, P4 theta, P5 theta`. Mon Sep 30 00:00:00 2013, 128, 128, 180, 177, 192, 43, 7, 7, 8, 8, 48 Mon Sep

我有代码爬过目录中的每个文件,并绘制它遇到的每个csv文件。每个CSV都有表单的标题

`Timestamp, P1rms (A), P2rms (A), P3rms (A), P4rms (A), P5rms (A), Vrms (V), P1 theta, P2 theta, P3 theta, P4 theta, P5 theta`. 

Mon Sep 30 00:00:00 2013, 128, 128, 180, 177, 192, 43, 7, 7, 8, 8, 48
Mon Sep 30 00:00:01 2013, 127, 127, 182, 178, 193, 43, 8, 8, 8, 8, 49
# ect....
我正在开发fft可视化选项,在对数据集进行fft时遇到溢出错误。这就是我的问题:

当我运行代码时:

#!/usr/bin/env python
from pandas import *
import matplotlib.pyplot as plt
import os
import sys
import platform
import numpy.fft as np

# name of plots folder
plotfold='plots'

# System specific info
if platform.system()=='Darwin':comsep="/"
else: comsep="\\"

# How many columns should I plot?
numcol=6

if len(sys.argv)<2:
   print 'usage: ./canaryCrawler.py [-c] or [-f] rootdir'
   quit()

if len(sys.argv)>2:
   ylim=1500
   root = sys.argv[2]
else:
   ylim=1200
   root = sys.argv[1]

for subdir, dirs, files in os.walk(root):

    # plot each file
    for file in files:

        if str(file)[-4:]=='.csv':

            print 'plotting '+str(file)+'...'
            # load csv as data frame
            df=pandas.io.parsers.read_csv(subdir+comsep+file)
            for i in range(0,len(df.Timestamp)):
                df.Timestamp[i] = datetime.strptime(df.Timestamp[i], '%a %b %d %H:%M:%S %Y')

            # We only want the first 6 collumns
            df = df.ix[:,0:numcol]

            if len(sys.argv)>=2:
                if sys.argv[1]=='-c' or sys.argv[1]=='-f':
                    plotfold='plots_Specialty'
                    df2 = df
                    df=pandas.DataFrame(df2.Timestamp)
                    df['Residence']=df2['P1rms (A)']+df2['P2rms (A)']
                    df['Specialty']=df2['P3rms (A)']+df2['P4rms (A)']
                    if sys.argv[1]=='-f':
                       df2['Residence']=np.fft(df['Residence'])
                       df2['Specialty']=np.fft(df['Specialty'])
                       df=df2
                       print 'Fourier Transformation Complete'
                       plotfold='plots_Specialty_fft'

            # set up plot
            plt.figure()
            df.plot(df.Timestamp,alpha=0.6,linewidth=2.3) # add transparency to see overlapping colors
            plt.tight_layout(pad=1.08)
            plt.legend(loc='best') # add legend in non-intrusive location
            plt.legend(loc=5,prop={'size':14}) # 
            plt.ylabel('Current')
            plt.xlabel('Time')
            plt.gcf().autofmt_xdate()
            plt.gcf().set_size_inches(12.7,9.2)
            plt.gca().set_ylim([0,ylim])

            stamp = df.Timestamp[0]
            day = datetime.strftime(stamp,'%a')
            DOM=datetime.strftime(stamp,'%d')
            month =  datetime.strftime(stamp,'%b')
            year =  datetime.strftime(stamp,'%Y')

            plt.title(subdir+'   '+day+' '+month+' '+DOM+' '+year)

            # keep plot

            # check for existing plots folder, 
            # create one if it doesn't exist
            if plotfold not in os.listdir(subdir):
                print '** adding plots directory to ',subdir
                os.mkdir(subdir+comsep+plotfold)

            # save in plots directory
            spsubs = str(subdir).split(comsep)
            filnam=''
            for piece in range(len(spsubs)-4,len(spsubs)-1):
                filnam+='_'+spsubs[piece]
            filnam+='_'+str(file)[:-4]
            saveto=subdir+comsep+plotfold+comsep+filnam
            print '**** saving plot to ',saveto
            plt.savefig(saveto)
plt.close()
#/usr/bin/env python
从熊猫进口*
将matplotlib.pyplot作为plt导入
导入操作系统
导入系统
导入平台
将numpy.fft导入为np
#绘图文件夹的名称
plotfold='plots'
#系统特定信息
如果platform.system()
其他:comsep=“\\”
#我应该绘制多少列?
numcol=6
如果len(sys.argv)2:
ylim=1500
root=sys.argv[2]
其他:
ylim=1200
root=sys.argv[1]
对于os.walk(根目录)中的子目录、目录和文件:
#打印每个文件
对于文件中的文件:
如果str(文件)[-4:][='.csv':
打印“绘图”+str(文件)+“…”
#将csv加载为数据帧
df=pandas.io.parsers.read_csv(subdir+comsep+文件)
对于范围(0,len(df.Timestamp))中的i:
df.Timestamp[i]=datetime.strtime(df.Timestamp[i],“%a%b%d%H:%M:%S%Y”)
#我们只想要前6个
df=df.ix[:,0:numcol]
如果len(sys.argv)>=2:
如果sys.argv[1]='-c'或sys.argv[1]='-f':
plotfold='plots\u Speciality'
df2=df
df=1.DataFrame(df2.Timestamp)
df['Residence']=df2['P1rms(A)]+df2['P2rms(A)]
df['Speciality']=df2['P3rms(A)]+df2['P4rms(A)]
如果sys.argv[1]='-f':
df2['Residence']=np.fft(df['Residence'])
df2['speciality']=np.fft(df['speciality'])
df=df2
打印“傅里叶变换完成”
plotfold='plots\u speciality\u fft'
#设点
plt.图()
df.plot(df.Timestamp,alpha=0.6,线宽=2.3)#增加透明度以查看重叠的颜色
plt.紧密布局(pad=1.08)
plt.legend(loc='best')#在非侵入性位置添加图例
plt.legend(loc=5,prop={'size':14})#
plt.ylabel('当前')
plt.xlabel(“时间”)
plt.gcf().autofmtxDate()
plt.gcf().设置尺寸英寸(12.7,9.2)
plt.gca().set_ylim([0,ylim])
stamp=df.时间戳[0]
day=datetime.strftime(戳记“%a”)
DOM=datetime.strftime(标记为“%d”)
月=日期时间.strftime(戳记为“%b”)
年份=日期时间.strftime(标记为“%Y”)
产品名称(细分市场+日+月+日+年)
#保持阴谋
#检查现有的plots文件夹,
#如果不存在,创建一个
如果plotfold不在os.listdir(子目录)中:
打印“**将绘图目录添加到”子目录
os.mkdir(细分曲面+comsep+plotfold)
#保存在plots目录中
spsubs=str(subdir).split(comsep)
菲尔南=“”
对于范围内的工件(len(spsubs)-4,len(spsubs)-1):
filnam+='''''+spsubs[件]
filnam+=''.'+str(文件)[:-4]
保存到=细分曲面+comsep+绘图折叠+comsep+filnam
打印“****将打印保存到”,保存到
plt.savefig(saveto)
plt.close()
我得到这个错误:

kilojoules$ ./canaryCrawler.py -f 35ca7/
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas-0.14.0-py2.7-macosx-10.9-x86_64.egg/pandas/io/excel.py:626: UserWarning: Installed openpyxl is not supported at this time. Use >=1.6.1 and <2.0.0.
  .format(openpyxl_compat.start_ver, openpyxl_compat.stop_ver))
plotting 2014Aug04.csv...
Fourier Transformation Complete
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy-1.8.1-py2.7-macosx-10.9-x86_64.egg/numpy/core/numeric.py:460: ComplexWarning: Casting complex values to real discards the imaginary part
  return array(a, dtype, copy=False, order=order)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/tight_layout.py:225: UserWarning: tight_layout : falling back to Agg renderer
  warnings.warn("tight_layout : falling back to Agg renderer")
**** saving plot to  35ca7/2014/Aug/plots_Specialty_fft/_Aug_35ca7_2014_2014Aug04
plotting 2014Aug05.csv...
Fourier Transformation Complete
**** saving plot to  35ca7/2014/Aug/plots_Specialty_fft/_Aug_35ca7_2014_2014Aug05
plotting 2014Aug07.csv...
Fourier Transformation Complete
**** saving plot to  35ca7/2014/Aug/plots_Specialty_fft/_Aug_35ca7_2014_2014Aug07
Traceback (most recent call last):
  File "./canaryCrawler.py", line 97, in <module>
    plt.savefig(saveto)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/pyplot.py", line 561, in savefig
    return fig.savefig(*args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/figure.py", line 1421, in savefig
    self.canvas.print_figure(*args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backend_bases.py", line 2220, in print_figure
    **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 505, in print_png
    FigureCanvasAgg.draw(self)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 451, in draw
    self.figure.draw(self.renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/figure.py", line 1034, in draw
    func(*args)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axes.py", line 2086, in draw
    a.draw(renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/lines.py", line 562, in draw
    drawFunc(renderer, gc, tpath, affine.frozen())
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/lines.py", line 938, in _draw_lines
    self._lineFunc(renderer, gc, path, trans)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/lines.py", line 978, in _draw_solid
    renderer.draw_path(gc, path, trans)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 145, in draw_path
    self._renderer.draw_path(gc, path, transform, rgbFace)
OverflowError: Allocated too many blocks
kilojoules$./canaryclawler.py-f 35ca7/

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/pandas-0.14.0-py2.7-macosx-10.9-x8664.egg/pandas/io/excel.py:626:UserWarning:目前不支持安装的openpyxl。使用>=1.6.1和不确定,但尝试pdf、svg后端

#!/usr/bin/env python
from pandas import *
import matplotlib.pyplot as plt # Insert just before import matplotlib as mpl
mpl.use('pdf')                  # Insert just before import matplotlib as mpl
import matplotlib as mpl

# ['pdf', 'pgf', 'Qt4Agg', 'GTK', 'GTKAgg', 'ps', 'agg', 
# 'cairo', 'MacOSX', 'GTKCairo', 'WXAgg', 'template', 'TkAgg', 
# 'GTK3Cairo', 'GTK3Agg', 'svg', 'WebAgg', 'CocoaAgg', 'emf', 'gdk', 'WX']

# (...)
plt.savefig('svg.pdf') # Consider file extension (!)

它起作用了!注意,我将
mpl.use('pdf')
放在
import matplotlib as mpl