質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

3772閲覧

AttributeError: 'Series' object has no attribute 'flags'のエラー

grintea

総合スコア15

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/12/04 09:31

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/12/04 11:14

エラーメッセージは上記で全てですか?詳細なエラーメッセージがあれば追記してください。
grintea

2020/12/04 11:26 編集

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' 以上がエラーメッセージの全てです。 よろしくお願いします
guest

回答1

0

ベストアンサー

yf = fft(conv_data)/(data_len/2)yf = fft(conv_data.values)/(data_len/2)にすれば良いかと思います。

投稿2020/12/04 11:56

meg_

総合スコア10760

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

grintea

2020/12/04 12:12

ありがとうございます! 本当に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問