ちょっとマニアックかもしれませんが、時系列のデータを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の前に半角スペースを入れた
結構あるあるだと思いますので!お気をつけあれ~。