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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

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

pandas

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

Q&A

0回答

1289閲覧

Python: 2つのCSVファイルの時刻を比較し、時刻が近いデータまでの平均値を計算する

退会済みユーザー

退会済みユーザー

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

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

pandas

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

0グッド

0クリップ

投稿2020/03/04 08:23

編集2020/03/04 09:54

前提・実現したいこと

お世話になっております。Pythonの初心者です。
Pythonでのデータフレームの取扱い、CSVファイルにおける時刻データの取り扱いで困っており、質問させていただきます。

次の2つのCSVファイルが手元にあります。それぞれ以下のような形式です。

・data1.csv
装置1で得られるデータで、約6~7秒毎に一つのデータが記録されています。
(一行目が日時、二行目がデータです)

data1.csv

1time, result 209:01:10 Tue 11/Jun/2019, 2.756E-13 309:01:17 Tue 11/Jun/2019, 3.191E-13 409:01:24 Tue 11/Jun/2019, -5.787E-13 509:01:30 Tue 11/Jun/2019, 9.3388E-14 609:01:37 Tue 11/Jun/2019, -1.732E-13 709:01:44 Tue 11/Jun/2019, 3.7258E-13 809:01:51 Tue 11/Jun/2019, 6.8894E-14 909:01:58 Tue 11/Jun/2019, -1.459E-13 1009:02:04 Tue 11/Jun/2019, 1.7784E-13 1109:02:11 Tue 11/Jun/2019, -1.593E-13 1209:02:18 Tue 11/Jun/2019, 2.3648E-14 1309:02:25 Tue 11/Jun/2019, -6.262E-14

・data2.csv
装置2で得られるデータであり、約82〜83秒毎に一つのデータが記録されています。
(一行目が日時、二行目がデータです)

data2.csv

1time, result 22019/6/11 8:59:09, 2.32E-13 32019/6/11 9:00:31, 2.71E-13 42019/6/11 9:01:54, 2.22E-13 52019/6/11 9:03:16, 2.24E-13 62019/6/11 9:04:39, 2.22E-13 72019/6/11 9:06:01, 2.32E-13

ここで、実現したいことが少しややこしいので以下に分割して記します。

  1. data1.csv と data2.csvの時刻を比較する。
  2. data2.csv の時刻に最も近い data1.csv の時刻を見つける。

ここではn行目が最も近かったとします。
3. data1.csvの2列目に入っているデータの一つ目からn個目までの平均値を計算し、それを別のcsvファイルに保存する。これを全データに渡って繰り返す。

具体的な例は以下の通りです。

  1. data1.csvとdata2.csvの時刻を見比べると、最初の最も近い時刻は

data1.csv: 09:01:51 (上から7番目)
data2.csv: 09:01:54 (上から3番目)
です。

  1. data1.csvの2行目のデータについて、上から1番目から7番目までのデータの平均値を計算し、別のcsvファイルに保存する。

  2. その次にdata2.csvと最も時刻が近いのは、

data1.csv: 09:03:13 (上から19番目)
data2.csv: 09:03:16 (上から4番目)
なので、data1.csvのデータについて、上から8番目から19番目までのデータの平均値を計算し、 csvファイルに追記していくということを実現したいのです。以降も同じです。

試したこと

以前に本サイトで質問されていた以下の内容に基づいてコードを書いてみたのですが、data2.csvの時刻が一致したところまでのdata1.csvに入力されているデータの平均値の計算を繰り返すというステップで詰まってしまっています。

「Python:2つのデータフレームを比較し,時間が近いものを抜き出す」
https://teratail.com/questions/63702

どうかお力を貸していただければ幸いです。

追記事項

追加で説明申し上げます。「最も近い時刻」の定義ですが、過去でも未来でも、差分が一番小さいものという意味で申し上げました。また、偶然、過去と未来で時間差が同じになった場合は、過去のもの採用したいと考えております。どうぞよろしくお願い申し上げます。

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

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

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

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

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

t_obara

2020/03/04 09:37

最も近い時刻の定義ですが、未来でも過去でも差分が一番小さいものということでしょうか?その定義を言葉で明確にご提示された方が、回答が得られやすくなるかと思います。
退会済みユーザー

退会済みユーザー

2020/03/04 10:20

コメントありがとうございます。「最も近い時刻」の定義ですが、過去でも未来でも、差分が一番小さいものという意味で申し上げました。また、偶然、過去と未来で時間差が同じになった場合は、過去のもの採用したいと考えております。説明が足りず失礼致しました。
magichan

2020/03/04 10:36

行いたいことの 3 には「data1.csvの2列目に入っているデータの一つ目からn個目までの平均値を計算し」とありますが、具体的な例の3には「data1.csvのデータについて、上から8番目から19番目までのデータの平均値を計算し」とあります。どちらが正しいのでしょう?
magichan

2020/03/04 10:38

また、新しく作成する 「別のCSV ファイル」とはどのような構成とするのでしょうか
退会済みユーザー

退会済みユーザー

2020/03/04 11:59

magichan様、コメントありがとうございます。説明が分かりにくく申し訳ございません。 data1.csvとdata2.csvの時刻差が7行目で最も小さくなった場合、1~7番目のデータの平均値を計算する。そして、次に19行目で時刻差が最も小さくなった場合、次は8~19番目のデータの平均値を計算する、ということを繰り返したいということです。
退会済みユーザー

退会済みユーザー

2020/03/04 12:01

また、新しく作成するcsvファイルですが、一列目にdata2.csvの時刻データ、二列目に平均値の計算結果が入力されているような状態を目指しております。説明が足りず失礼致しました。
magichan

2020/03/05 01:04

やはりよくわかりません。 data1: 7 と data2:3 が一番近い → data2:3の時間とdata1:1~7の平均を記録 data1:19 と data2:4が2番目に近い → data2:4の時間とdata1:8~19の平均を記録 はわかったのですが、仮に次に近いのが data1: 3の時間とdata2:2 だった場合 data2:2 の時間とど部分の平均を求めるのでしょう?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問