我用这个代码部分;
df = pd.read_csv('Vertikale_Netzlast_2013.csv', header=6, sep=';', parse_dates=[[0, 1]], index_col=0, na_values=['n.v.'])
df.columns = ["time", "Load"]
df.Load = df.Load.interpolate()
plt.figure(figsize=(14, 5))
df.Load.plot()
plt.title('Vertical Grid Load Germany 2013')
plt.ylabel('Power [$MW$]')
plt.savefig('VerticalGridLoadGermany2013.png', bbox_inches='tight', dpi=150, transparent=True)
hann = np.hanning(len(df.Load.values))
Y = np.fft.fft(hann * df.Load.values)
N = ceil(len(Y) / 2 + 1)
print(N)
fa = 1.0 / (15.0 * 60.0) # every 15 minutes
print('fa=%.4fHz (Frequency)' % fa)
X = np.linspace(0, fa / 2, N, endpoint=True)
plt.plot(X, 2.0 * np.abs(Y[:N]) / N)
plt.xlabel('Frequency ($Hz$)')
plt.ylabel('vertical powergrid load ($MW$)')
但我没有运行,python给出了这个错误
/home/ozlemb/PycharmProjects/work/venv/lib/python3.6/site-packages/numpy/core/numeric.py:531:ComplexWarning:将复数值转换为实际丢弃虚部返回数组(a,dtype,copy = False,order = order)dt = 0.00629s(采样时间)fa = 159.00Hz(频率)/home/ozlemb/PycharmProjects/work/venv/lib/python3.6/site-packages/dateutil/parser/_parser.py :1204:UnknownTimezoneWarning:tzname B已识别但未被理解 . 传递 tzinfos
参数以正确返回时区感知日期时间 . 在将来的版本中,这将引发异常 . category = UnknownTimezoneWarning)17523 fa = 0.0011Hz(频率)Tkinter回调中的异常回溯(最近一次调用最后一次):文件“/usr/lib/python3.6/tkinter/ init .py”,第1702行, *call__return self.func(args) File "/usr/lib/python3.6/tkinter/__init .py ", line 746, in callit func(*args) File " /home/ozlemb/PycharmProjects/work/venv/lib/python3.6/site-packages/matplotlib/backends/_backend_tk.py ", line 346, in idle_draw self.draw() File " /home/ozlemb/PycharmProjects/work/venv/lib/python3.6/site-packages/ matplotlib / backends / backend_tkagg.py ", line 9, in draw super(FigureCanvasTkAgg, self).draw() File " /home/ozlemb/PycharmProjects/work/venv/lib/python3.6/site-packages/matplotlib/backends/backend_agg.py ", line 402, in draw self.figure.draw(self.renderer) File " / home / ozlemb / PycharmProjects / work / venv / lib / python3.6 / site-packages / matplotlib / artist.py ", line 50, in draw_wrapper return draw(artist, renderer, *args, **kwargs) File " /home/ozlemb/PycharmProjects/work/venv/lib/python3.6/site-packages/matplotlib/figure.py ", line 1652, in draw renderer, self, artists, self.suppressComposite) File " / home / ozlemb / PycharmProjects / work / venv / lib / python3.6 / site-packages / matplotlib / image.py ", line 138, in _draw_list_compositing_images a.draw(renderer) File " /home/ozlemb/PycharmProjects/work/venv/lib/python3.6/site-packages/matplotlib/artist.py ", line 50, in draw_wrapper return draw(artist, renderer, *args, **kwargs) File " / home / ozlemb / PycharmProjects /工作/ VENV / lib中/ python3.6 /站点packag es / matplotlib / axes / _base.py ", line 2604, in draw mimage._draw_list_compositing_images(renderer, self, artists) File " /home/ozlemb/PycharmProjects/work/venv/lib/python3.6/site-packages/matplotlib/image.py ", line 138, in _draw_list_compositing_images a.draw(renderer) File " / home / ozlemb / PycharmProjects / work / venv / lib / python3.6 / site-packages / matplotlib / artist.py ", line 50, in draw_wrapper return draw(artist, renderer, *args, **kwargs) File " /home/ozlemb/PycharmProjects/work/venv/lib/python3.6/site-packages/matplotlib/axis.py ", line 1185, in draw ticks_to_draw = self._update_ticks(renderer) File " / home / ozlemb / PycharmProjects / work / venv / lib / python3.6 / site-packages / matplotlib / axis.py ", line 1023, in _update_ticks tick_tups = list(self.iter_ticks()) # iter_ticks calls the locator File " /home/ozlemb/PycharmProjects/work/venv/lib/python3.6/site-packages/matplotlib/axis.py ", line 967, in iter_ticks majorLocs = self.major.locator() File " / home / ozlemb / PycharmProjects / work / venv / lib / python3.6 / site-packages / matplotlib / dates.py“,第1229行, call self.refresh()文件"/home/ozlemb/PycharmProjects/work/venv/lib/python3.6/site-packages/matplotlib/dates.py",第1249行,刷新dmin,dmax = self.viewlim_to_dt()文件"/home/ozlemb/PycharmProjects/work/venv/lib/python3.6/site-packages/matplotlib/dates.py",第1000行,在viewlim_to_dt.format(vmin)中)ValueError:视图限制最小值-36761.69947916667小于1并且是无效的Matplotlib日期值 . 如果将非日期时间值传递给具有日期时间单位的轴,则通常会发生这种情况
进程以退出代码0结束
这会导致python(3)版本?我是新手,我想处理来自fft传感器的信号数据 .
谢谢
2 回答
如果您使用的是Python3
N = len(Y)/2+1
,则可以计算为非整数值 . 之后,您将尝试使用Y[:N]
切片列表,但N
可能等于2.5
.请参阅以下代码:
计算
N
的方式将使其等于4.5
,因为len(nums) / 2
是3.5
. 我会改为from math import ceil
然后这将使
N
等于4
.这当然取决于您要切片的具体内容 . 这里的要点是你必须确保N是一个整数而不是一个浮点值 .
这条线会出错吗?
如果是这样,必须是因为N必须是整数 . 在你的情况下,N可能是浮动的
让我们检查一下umpy的参考;
num:int,可选
要生成的样本数 .
默认值为50.必须为非负数 .
[https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.linspace.html]