TL;DR
- 時系列csvを扱うためには、pandasを使えば良い
やりたいこと
- https://qiita.com/kazutxt/items/a23412625fa3e1f35443
- こちらで蓄積しているデータ(CSVの時系列データ)から日別,月別の平均を求めたい
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列目を日時とみなしてdate型に変換する
- 同じ月,日の境目を超えるまで、値を蓄積する
- 蓄積したデータをデータを蓄積した個数で割って平均を計算する
- ファイルの出力
面倒そうな要素
- 初日と最終日は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でやったらうまくいかない。残念
結論
- 車輪の再発明をしない(勉強目的を除く)
- 車輪を見つける