🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

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

Q&A

2回答

675閲覧

観測時間が不揃いなデータの1秒ごとの平均を求めたい

yoshithere

総合スコア4

Python 3.x

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

0グッド

0クリップ

投稿2019/12/12 05:38

前提・実現したいこと

実験で得られた動物の血圧を1秒ごとの平均として表したいです。
pandasで実験データを読み込みましたが、自分なりに色々しらべてみましたが、groupbyでは日付などが必要だったり、実験データが一定時間にサンプリングされているわけではないので、特定の行数で平均を出すことができません。
1秒ごとの平均を出したいので、移動平均は求めているものとは違うので苦心しております。
右側の2列にある、観測時間と実測値のデータを使用して一秒ごとの平均を求めたいです。

最近、pythonを利用してデータの解析を行いはじめたのですが、周りに頼れるひとがおりませんので、ここに質問させていただきました。
なにかいい方法をご教授いただけないでしょうか。
よろしくお願い申し上げます。

該当のソースコード

python

1import pandas as pd 2import numpy as np 3df=pd.read_csv("BP1.txt", delim_whitespace= True) 4print(df) 5 6 Time 1 HB Time.1 2 Systol 70 0.17540 -0.24163 0.17540 87.512103 81 0.42893 -0.24171 0.42893 86.901093 92 0.67056 -0.23962 0.67056 87.694917 103 0.91227 -0.24001 0.91227 88.611195 114 1.15189 -0.23990 1.15189 89.142342 12... ... ... ... ... 131459 322.54225 0.19422 322.54225 97.196960 141460 322.73647 0.20228 322.73647 97.830200 151461 322.93875 0.19289 322.93875 97.031825 161462 323.13164 0.19662 323.13164 96.513930 171463 323.32826 0.19185 323.32826 95.185343 18

補足情報(FW/ツールのバージョンなど)

Anaconda 3をダウンロードし、python3.7を使用してjupyternote book 6.01上で作業をしています。

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

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

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

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

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

guest

回答2

0

pythonのコードは、不慣れなため書けませんが、
不揃いの観測データから、1秒,2秒・・・時点の値を求め、
観測データの代わりとして、そのデータをつかってなにがしかの集計をする
ということでよいのでしょうか。

例えば、1秒時点のデータを求めるため、
0<= <2 の観測データ数をカウントし、
それぞれのデータを使って、例えば最小2乗法などで
フィッティングを行い、1秒時点のデータを求める
とかどうでしょう。

サンプリング間隔が、推定に問題ないかどうか。
また、誤差がどれくらい許されるのかなど、確認すべきことは
多いと思いますが、参考までに。

投稿2019/12/23 23:14

mori_C

総合スコア34

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

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

yoshithere

2019/12/24 04:58

そのような感じです。 アドバイス、ありがとうございました。 参考にさせていただきます。
guest

0

いまいち何をしたいのか見えてませんが、
1秒毎のデータを集計して平均出すのではいけないんでしょうか。

投稿2019/12/12 05:51

y_waiwai

総合スコア88038

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

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

yoshithere

2019/12/13 06:10

説明がへたくそですいません。 そういうことがしたいです。 df["t1"] = pd.to_timedelta(df.t1, unit="s") df.set_index("t1", append=True) print(df) print(df.HB. resample("1S").mean()) というのを試したのですが、 Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'RangeIndex‘ というエラーが出てしまいました。 これを解決するためにはどのような方法を取ればよいでしょうか。 ご存知でしたら教えていただけると幸いです。 もし、これと別の方法で1秒毎のデータを集計する方法がありましたら、そちらでも結構です。 よろしくお願いします。
y_waiwai

2019/12/23 23:17

エラーが出るとか問題がでるというならそれを質問に書きましょう。 詳細隠して質問投げてもあなたの望む回答は得られませんぜ
yoshithere

2019/12/24 04:57

わかりました。 改めて質問し直したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問