前提・実現したいこと
pandas初心者です。
AttributeError: 'Series' object has no attribute 'flags'のエラーについて自力で解決できませんでした。原因を解決法を教えていただけると幸いです。
発生している問題・エラーメッセージ
FFT_data["channel%s" % (l + 1)] = channel_data["channel%s" % (l + 1)].apply(convolution, args = (index_len, dt, "blackman")) yf = fft(conv_data)/(data_len/2) AttributeError: 'Series' object has no attribute 'flags'
該当のソースコード
import pandas as pd import numpy as np from scipy import signal import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.fftpack import fft, fftfreq df = pd.read_table("../data/20201008_6.TXT", delim_whitespace = True, header = None) ds = 500 #サンプリング周波数 dt = 1/ds #サンプリング間隔 columns_len = len(df.columns) #列数 index_len = len(df.index) #行数 num_channel = int(columns_len/2) ################################################################################################################################# ################################################################################################################################# #窓関数作成畳み込みとFFT # x : 畳み込み、FFTを行うデータ # data_len : データの長さ # dt : サンプリング間隔 # mado : 窓関数の種類(ハニング窓、ハミング窓、ブラックマン窓) def convolution(x, data_len, dt, mado): if mado == "hann": w = signal.hann(data_len) if mado == "hamming": w = signal.hamming(data_len) if mado == "blackman": w = signal.blackman(data_len) conv_data = w * x yf = fft(conv_data)/(data_len/2) yf[0] = yf[0]/2 freq = fftfreq(data_len, dt) yf = np.abs(yf)[1:data_len//2] print(yf) freq = freq[1:data_len//2] return pd.Series(yf, index=freq) # 全データFFT解析 FFT_data = {} for l in range(num_channel): FFT_data["channel%s" % (l + 1)] = channel_data["channel%s" % (l + 1)].apply(convolution, args = (index_len, dt, "blackman")) print(FFT_data) ################################################################################################################################# #################################################################################################################################
試したこと
- yf = fft(conv_data)/(data_len/2)をmapで記述してみたが、tuple index out of rangeというエラーが出現する。そのエラーについても解決できなかった。
- 畳み込みを行う関数とFFTを行う関数で分けてみたが、FFTを行う関数の方でエラーが出た。
補足情報(FW/ツールのバージョンなど)
- python 3.8.5
- scipy 1.5.2
- pandas 1.1.3
- numpy 1.19.2
エラーメッセージは上記で全てですか?詳細なエラーメッセージがあれば追記してください。
Traceback (most recent call last):
File "C:\Users\local\Desktop\program\filtering_pandas.py", line 96, in <module>
FFT_data["channel%s" % (l + 1)] = channel_data["channel%s" % (l + 1)].apply(convolution, args = (index_len, dt, "blackman"))
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py", line 7548, in apply
return op.get_result()
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\apply.py", line 180, in get_result
return self.apply_standard()
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\apply.py", line 271, in apply_standard
results, res_index = self.apply_series_generator()
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\apply.py", line 300, in apply_series_generator
results[i] = self.f(v)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\apply.py", line 109, in f
return func(x, *args, **kwds)
File "C:\Users\local\Desktop\program\filtering_pandas.py", line 84, in convolution
yf = fft(conv_data)/(data_len/2)
File "C:\ProgramData\Anaconda3\lib\site-packages\scipy\fftpack\basic.py", line 87, in fft
return _pocketfft.fft(x, n, axis, None, overwrite_x)
File "C:\ProgramData\Anaconda3\lib\site-packages\scipy\fft\_pocketfft\basic.py", line 17, in c2c
tmp = _asfarray(x)
File "C:\ProgramData\Anaconda3\lib\site-packages\scipy\fft\_pocketfft\helper.py", line 97, in _asfarray
copy = not x.flags['ALIGNED']
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py", line 5139, in __getattr__
return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'flags'
以上がエラーメッセージの全てです。
よろしくお願いします
回答1件
あなたの回答
tips
プレビュー