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

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

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

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

Q&A

解決済

1回答

8588閲覧

Pythonで一定時間のデータを集計したい

ok_

総合スコア8

Python

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

0グッド

0クリップ

投稿2018/07/12 12:17

前提・実現したいこと

あるシステムが出力する以下のようなログがあります。
Pythonで、このログデータを読み込んだ上で指定した時間(1秒、5秒、10秒など)単位で
data1やdata2の最大値、最小値、合計などを求めて別のファイルに出力したいのですが、
どうやったら指定した時間ごとにデータをまとめられるのかが分かりません。
教えていただきたいです。

====ログ(log.csv)====
time,data1,data2
2018-07-01 01:30:45.128665,45,100
2018-07-01 01:30:45.220065,10,156
2018-07-01 01:30:46.482135,38,190
2018-07-01 01:30:46.715481,79,802
2018-07-01 01:30:47.002135,38,210
2018-07-01 01:30:47.505481,79,406


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

python 3.x

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

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

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

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

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

YouheiSakurai

2018/07/12 12:24

Pandas使ったら多分マジックみたいに出来ますよ。もしも地道にやりたいならループを回しながら集計する事になりますね。どっちかやってみましょう!
guest

回答1

0

ベストアンサー

pandasだとこんな感じで書けます。

python

1import io 2import pandas as pd 3 4f = io.StringIO(""" 5time,data1,data2 62018-07-01 01:30:45.128665,45,100 72018-07-01 01:30:45.220065,10,156 82018-07-01 01:30:46.482135,38,190 92018-07-01 01:30:46.715481,79,802 102018-07-01 01:30:47.002135,38,210 112018-07-01 01:30:47.505481,79,406 12""") 13 14 15df = pd.read_csv(f, index_col="time") 16df.index = pd.to_datetime(df.index) 17 18res = df.resample("1S") 19print("min") 20print(res.min()) 21print("max") 22print(res.max()) 23print("sum") 24print(res.sum()) 25print("mean") 26print(res.mean()) 27""" => 28min 29 data1 data2 30time 312018-07-01 01:30:45 10 100 322018-07-01 01:30:46 38 190 332018-07-01 01:30:47 38 210 34max 35 data1 data2 36time 372018-07-01 01:30:45 45 156 382018-07-01 01:30:46 79 802 392018-07-01 01:30:47 79 406 40sum 41 data1 data2 42time 432018-07-01 01:30:45 55 256 442018-07-01 01:30:46 117 992 452018-07-01 01:30:47 117 616 46mean 47 data1 data2 48time 492018-07-01 01:30:45 27.5 128.0 502018-07-01 01:30:46 58.5 496.0 512018-07-01 01:30:47 58.5 308.0 52""" 53

参考:
pandas.DataFrame.resample — pandas 0.21.1 documentation

投稿2018/07/12 12:30

編集2018/07/12 12:31
hayataka2049

総合スコア30933

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

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

ok_

2018/07/12 12:42

知りたかったこと、そのものズバリです! pandasって便利なのですね。もっと勉強しようと思います。 非常に分かりやすい回答をありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問