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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1350閲覧

Pythonで実験データを積分したい

nsk

総合スコア6

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/09/08 09:58

編集2022/09/08 13:27

Python3で、データロガーで取得したデータを積分したいです。
時々刻々と積分するために、関数を作成し、
CSVから読み取ったデータ(DataFrame)を積分させようと
以下のソースを記述しました。

該当のソースコード

コード

import glob import pandas as pd import re import numpy as np def atoi(text): return int(text) if text.isdigit() else text def natural_keys(text): return [ atoi(c) for c in re.split(r'(\d+)', text) ] #フォルダ指定 fol = "./DL" #フォルダ内の特定ファイル一覧の取得 files = sorted(glob.glob("*Hz*"), key = natural_keys) #ファイル数を変換 file_number = len(files) #計測器からのデータを成形 #CSVファイルの中身を読みだして、リスト形式にまとめる #行数が合わなければ、skiprowsを調整 csv_list = [] for file in files: csv_list.append(pd.read_table(file, header=None, sep="," , skiprows=10)) #CSVファイルの結合 #測定CH数に応じて、ilocの列数を変更する merge = pd.concat(csv_list) merge_csv = merge.iloc[:,1:7] #余分な列を削除 BlockSize = 1001000 HResolution = 1e-7 time = np.arange(0, BlockSize*HResolution, HResolution) df_time = pd.DataFrame(time) c=4 #切り出す列数指定 ※測定したCHを指定 df_n =pd.Series.to_frame( merge_csv[c]) #c列目 df_n_1 = df_n.iloc[0:BlockSize, :] #積分関数 def B_integral(HResolution, df_n_1): xt = 0. x = [] for i in df_n_1: xt += i * HResolution x.append(xt) return x if __name__ == '__main__': x = B_integral(df_n_1, HResolution) ### エラー runcell(0, 'C:/Users/untitled0.py') Traceback (most recent call last): File "C:\Users\untitled0.py", line 62, in <module> x = B_integral(df_n_1, HResolution) File "C:\Users\untitled0.py", line 55, in B_integral for i in df_n_1: TypeError: 'float' object is not iterable インターネットで検索しつつ対策しようとしましたが、 手詰まりとなり、ご教授いただければと思います。 ### 補足情報(FW/ツールのバージョンなど) Python3 CSVファイルの中身は、以下のようになっており、(ここには書ききれませんので省略しています)データサイズが1001000です。 Model,Xviewer,,,,, BlockNumber,1,,,,, TraceName,CH1,CH2,CH3,CH5,CH6,CH7 BlockSize,1001000,1001000,1001000,1001000,1001000,1001000 Date,2022/9/6,2022/9/6,2022/9/6,2022/9/6,2022/9/6,2022/9/6 Time,06:09.3,06:09.3,06:09.3,06:09.3,06:09.3,06:09.3 VUnit,A,A,A,V,V,V HResolution,1.00E-08,1.00E-08,1.00E-08,1.00E-08,1.00E-08,1.00E-08 HOffset,0.00E+00,0.00E+00,0.00E+00,0.00E+00,0.00E+00,0.00E+00 HUnit,s,s,s,s,s,s ,0.2008333,4.483333,-3.735833,-8.841666,-8.74,-8.99 ,0.2008333,4.483333,-3.735833,-8.841666,-8.740833,-8.990833 ,0.2008333,4.483333,-3.736667,-8.8425,-8.740833,-8.990833 ,0.2016667,4.483333,-3.736667,-8.8425,-8.740833,-8.990833 ,0.2016667,4.483333,-3.736667,-8.8425,-8.740833,-8.990833 ,0.2016667,4.483333,-3.736667,-8.8425,-8.740833,-8.990833 ,0.2025,4.4825,-3.7375,-8.8425,-8.740833,-8.990833 ,0.2025,4.4825,-3.7375,-8.8425,-8.741667,-8.991667 ,0.2025,4.4825,-3.7375,-8.843333,-8.741667,-8.991667 ,0.2033333,4.4825,-3.7375,-8.843333,-8.741667,-8.991667 ,0.2033333,4.4825,-3.738333,-8.843333,-8.741667,-8.991667 ,0.2033333,4.4825,-3.738333,-8.843333,-8.741667,-8.991667 ,0.2041667,4.4825,-3.738333,-8.843333,-8.741667,-8.991667 ,0.2041667,4.4825,-3.738333,-8.843333,-8.7425,-8.9925 ,0.2041667,4.4825,-3.738333,-8.844167,-8.7425,-8.9925 ,0.205,4.4825,-3.739167,-8.844167,-8.7425,-8.9925 ,0.205,4.481667,-3.739167,-8.844167,-8.7425,-8.9925 ,0.205,4.481667,-3.739167,-8.844167,-8.7425,-8.9925 ,0.2058333,4.481667,-3.739167,-8.844167,-8.743333,-8.9925 ,0.2058333,4.481667,-3.74,-8.844167,-8.743333,-8.993333 ,0.2058333,4.481667,-3.74,-8.845,-8.743333,-8.993333 ,0.2066667,4.481667,-3.74,-8.845,-8.743333,-8.993333 ,0.2066667,4.481667,-3.74,-8.845,-8.743333,-8.993333 ,0.2066667,4.481667,-3.740833,-8.845,-8.743333,-8.993333 ,0.2075,4.481667,-3.740833,-8.845,-8.744166,-8.993333 ,0.2075,4.480834,-3.740833,-8.845,-8.744166,-8.994166 ,0.2075,4.480834,-3.740833,-8.845834,-8.744166,-8.994166 ,0.2083333,4.480834,-3.740833,-8.845834,-8.744166,-8.994166 ,0.2083333,4.480834,-3.741667,-8.845834,-8.744166,-8.994166

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

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

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

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

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

meg_

2022/09/08 10:13

コードはインデントが判るように「コードの挿入」で記入してください。
jbpb0

2022/09/08 11:09

pythonのコードの一番最初の行のすぐ上に ```python だけの行を追加してください また、pythonのコードの一番最後の行のすぐ下に ``` だけの行を追加してください または、 https://teratail.storage.googleapis.com/uploads/contributed_images/56957fe805d9d7befa7dba6a98676d2b.gif を見て、そのようにしてみてください 現状、コードがとても読み辛いです 質問にコードを載せる際に上記をやってくれたら、他人がコードを読みやすくなり、コードの実行による現象確認もやりやすくなるので、回答されやすくなります
meg_

2022/09/08 12:39

> CSVファイルの中身は、以下のようになっており、 カンマ区切りにはなっていませんが、実際のデータはCSVなのでしょうか? カンマ区切りのデータそのままを掲載いただくと回答者が使いやすいかと思います。
meg_

2022/09/08 12:40

> TypeError: 'float' object is not iterableと表記されます。 どの行でそのエラーが発生しているのでしょうか?
guest

回答1

0

ベストアンサー

引数の順番を間違えているのだと思います。

diff

1- x = B_integral(df_n_1, HResolution) 2+ x = B_integral(HResolution, df_n_1)

投稿2022/09/08 15:02

meg_

総合スコア10580

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

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

nsk

2022/09/12 15:33

引数の順番を変えることで、実行できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問