Pythonでグラフをプロットするには、matplotlibライブラリのpylabのplotが標準的に用いられる。
>>> import matplotlib.pylab as plt >>> import numpy as np >>> plt.plot(np.random.rand(100))
csvファイルで保存されたデータをプロットするには、pandasライブラリのdataframeのplotを使うとより簡単にできる。
>>> import pandas as pd >>> import matplotlib.pylab as plt >>> df=pd.read_csv('target_train.csv') >>> df date 01202_total 04100_total 13102_total 14382_total \ 0 2014-06-01 9478 25450 17546 25345 1 2014-06-02 7670 13704 11262 13743 2 2014-06-03 6490 12963 10263 11643 3 2014-06-04 6394 13736 11140 12249 4 2014-06-05 7532 14293 11314 14167 5 2014-06-06 8926 21808 15045 16145 6 2014-06-07 10505 37080 22156 24072 7 2014-06-08 9190 27868 16799 22463 8 2014-06-09 8942 14602 10439 15175 9 2014-06-10 9093 12221 8385 10856 ... >>> df.plot(x='date',y='01202_total') >>> plt.show()
ちなみに、このデータは、ある都市の1年間の宿泊者数の推移であり、下記のサイトからダウンロードすることができる。
https://datasciencelab.jp/compe/13?tab=compedetail
ただし、dataframeのplotだと表示する行数を指定することなど細かい設定をすることができない。細かい設定をしてプロットしたい場合は、やはりpylabのplotを使う方が良い。例えば、0~30行の範囲を指定して、さらに、x軸の値を日付などの文字列に変更などは、以下のようにできる。
>>> import pandas as pd >>> import matplotlib.pylab as plt >>> df=pd.read_csv('target_train.csv') >>> h1, =plt.plot(df['01202_total'][0:30],label='01202_total') >>> h2, =plt.plot(df['14382_total'][0:30],label='14382_total') >>> plt.xticks(range(30),df['date'][0:30],rotation=90,size='small') >>> plt.legend(handles=[h1,h2]) >>> plt.show()
これを関数化して、指定したcsvファイルの指定した列の数値列を指定した行間プロットできるようにしたpythonスクリプトが下記からダウンロードできる。
https://drive.google.com/file/d/0B3uB4w2FEJbIVXRLUl8waVdfRHc/view?usp=sharing