1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

時系列のcsvデータを一瞬で合計や平均を求める方法

Posted at

TL;DR

  • 時系列csvを扱うためには、pandasを使えば良い

やりたいこと

input.csv
# 日付(分まで),USDレート,JPYレート,EURレート
# 10分毎に1日144行のデータが存在
# 2020/2/24 18:00 ~ 2020/6/11 23:10
yyyy/mm/dd HH:MM,NN.N(data),NN.N,NN.N
yyyy/mm/dd HH:MM,NN.N(data),NN.N,NN.N
yyyy/mm/dd HH:MM,NN.N(data),NN.N,NN.N

車輪を再発明しようとする

まずは、コードを書いて求める(求めようとする)

  1. ファイルを開く
  2. 1列目を日時とみなしてdate型に変換する
  3. 同じ月,日の境目を超えるまで、値を蓄積する
  4. 蓄積したデータをデータを蓄積した個数で割って平均を計算する
  5. ファイルの出力

面倒そうな要素

  • 初日と最終日は144個ではない
  • 1ヶ月は30日や31日が混ざる
  • 文字から日付を数値に型変換が必要

発明された車輪を見つける

  • python csv 時系列 で探したら車輪が見つかった
csvcalc.py
import pandas as pd
df = pd.read_csv("input.csv",index_col=0,parse_dates=True)
df.resample('D').mean().to_csv("output.csv")
  • Dは日単位。月単位にする場合はM
  • meanは平均の計算。合計を計算する場合はsum
  • to_csvはファイル出力
out.csv
2020/2/25,13.99777778,4.343472222,13.19909722
2020/2/26,13.55291667,3.572986111,7.519791667
2020/2/27,12.31902778,4.954513889,9.513611111
・・・

車輪がグラフ出力までしてくれる

  • df.plot()でできるらしい
    • macでやったらうまくいかない。残念

結論

  • 車輪の再発明をしない(勉強目的を除く)
  • 車輪を見つける
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?