csv読み込み備忘録

概要

・Numpy, Pandasを使ってcsvを読み込むときの俺様備忘録

ロード対象csvフォーマット

下記pythonコードにも書いてありますが、手元にあったFXデータを使用。
フォーマットは

hogehoge, YYYYMMDD, HH:MM:SS, bid price, ask price

という形。
hogehogeには”USDJPY”といった為替レートの通貨名文字列が格納されてます。
stringとfloatが混在していて少し扱いが面倒。

コード

いつもググってる気がするのでまとめておく
最終的に、リストのリスト形式にしたいと考えているので、各々のロード関数を使った後に変換しています。
pandasで読み込んだ後に、ndarrayに変換するのが最速という結果。
どうやらcsvを読む処理がボトルネックになっているようで、ndarrayへの変換はそこまで時間がかからない様子。

pandasのread_csvはfloatの小数点の処理にクセがあるので、float_precisionを指定する必要あり
なお、float_preicisionはpandas 0.15.1から対応しています。

numpyのloadtxtはリストのリスト形式で返してくるものの、dtypeを指定しなければならないので面倒

genfromtxtはタプルのリストで返してくるので、一旦np.array()でリストのリストに変換している。
dtypeを各列ごとに指定すると処理速度が向上するものの面倒
しかも指定したところでpandasには及ばない

いやはやしかしnumpyのロードはもう少し早くならないものか。

出力結果

配列の中身は出力していません。
pandasが優秀ですね。

参考

What’s New — pandas 0.15.1 documentation
http://pandas.pydata.org/pandas-docs/version/0.15.1/whatsnew.html

Reading Text Tables with Python | Pen and Pants
http://penandpants.com/2012/03/09/reading-text-tables-with-python/

Fastest Python library to read a CSV file – Software Recommendations Stack Exchange
http://softwarerecs.stackexchange.com/questions/7463/fastest-python-library-to-read-a-csv-file