Python pandas numpy matplotlib溢出错误:日期值超出范围
我有代码爬过目录中的每个文件,并绘制它遇到的每个csv文件。每个CSV都有表单的标题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
`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