回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图通过将数据帧切片传递给我的函数来对加速度计数据进行带通滤波,但是基于切片数据的方式,我得到了不同的结果</p>
<p>我尝试使用列名和索引使用<code>iloc</code>,但是结果不同,所以我不知道哪个结果是正确的结果</p>
<p>我的带通滤波器功能:</p>
<pre><code>def butter_bandpass(lowcut, highcut, fs, order=6):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
b, a = butter(order, [low, high], btype='band')
return b, a
def butter_bandpass_filter(data, lowcut, highcut, fs):
b, a = butter_bandpass(lowcut, highcut, fs, order=6)
y = lfilter(b, a, data)
return y
</code></pre>
<p>在这两种方式下,我通常将数据传递给函数:
第一种方法:对列名使用<code>tremor_0[['X']] as [[]]</code>切片</p>
<pre><code>y=pd.DataFrame(data=butter_bandpass_filter(tremor_0[['X']],0.3,12,100),columns=['X'])
</code></pre>
<p>第二种方式:
对列名使用<code>tremor_0['X'] as []</code>切片</p>
<pre><code>y=pd.DataFrame(data=butter_bandpass_filter(tremor_0['X'],0.3,12,100),columns=['X'])
</code></pre>
<p>第一种方式的结果:</p>
<pre><code> X
0 -0.001962
1 -0.001962
2 -0.001948
3 -0.001903
4 -0.001874
</code></pre>
<p>第二种方法的结果:</p>
<pre><code> X
0 -0.001962
1 -0.019822
2 -0.095867
3 -0.298136
4 -0.675933
</code></pre>
<p>请注意,从第二行开始,值是不同的,那么哪种方式是正确的方式,为什么?你知道吗</p>
<p><a href="https://i.stack.imgur.com/tmZip.png" rel="nofollow noreferrer">screenshot of my work </a></p>