pyplot 時系列のデータをCSVから読み込んで表示するサンプルコード

ちょっとマニアックかもしれませんが、時系列のデータをcsvから読み込んでグラフにします。
pyplotはmatplotlibというライブラリの中にある、Pythonのグラフを書く機能です。

グラフ大好き。pyplot好き。₍ᐢ⑅•ᴗ•⑅ᐢ₎♡

グラフにするcsvは、例えば次のようなデータのcsvです。x軸もy軸も時間なので、ちょっと変わってるかもしれませんね!

10:10:52  4:21:05
10:10:52 4:08:56
10:10:52 4:08:56
10:10:54 4:52:52
10:10:54 5:19:17
10:10:54 5:19:17
10:10:55 3:58:04
10:10:55 4:09:11
10:10:55 3:58:04
10:10:56 4:12:34
10:10:57 3:58:51
10:10:57 4:12:34
10:10:57 3:16:06
10:10:58 3:41:25
10:10:58 3:16:06
10:10:59 4:34:48
10:10:59 4:58:54
10:10:59 4:34:48
10:11:00 5:08:33

上記をtest_csv.csvという名前で保存したとして、次のようにコードを書きます。

 

import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime as dt

df = pd.read_csv('G:/test/test_csv.csv', names=['num1', 'num2'])

xlist = [dt.strptime(d, '%H:%M:%S') for d in df['num1']]
ylist = [dt.strptime(d, '%H:%M:%S') for d in df['num2']]


plt.plot(xlist, ylist, marker="o")
plt.show()

次のような図が表示されます。

ヒャッハー 楽しい~⊂(^-^)⊃

さてさて、時系列データの悩みと言えば、数が多いことですよね。(ですよね?!)

Pythonでは、間引き処理も簡単にできます。

リストのスライスを使えばいいんですね~。先程のcsvではない、多めのデータを処理するとして、次のように書きます。

import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime as dt

df = pd.read_csv('G:/test/many_datas.csv', names=['num1', 'num2'])

xlist = df['num1'][::100] #間引き処理
ylist = df['num2'][::100] #間引き処理

xlist = [dt.strptime(d, '%H:%M:%S') for d in xlist]
ylist = [dt.strptime(d, '%H:%M:%S') for d in ylist]


plt.plot(xlist, ylist, marker="o")
plt.show()

 

若干余談ですが、データを時分秒形式に直す際に

time data ' 4:21:05' does not match format '%H:%M:%S'

というエラーに悩まされました。(>_<)
下記とか見てみてもわからず…。

https://stackoverflow.com/questions/51029343/time-data-2018-06-19-112113-311-does-not-match-format

で、よく見ると’ 4:21:05’の4の前に半角スペース入ってるじゃんwwww

下記のようにすれば解決しました(^_^)

ylist = [dt.strptime(d, ' %H:%M:%S') for d in ylist]    #%Hの前に半角スペースを入れた

結構あるあるだと思いますので!お気をつけあれ~。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です