スポンサーリンク

daskでcsvファイの読み込みを高速化(datetime64型でindexの列を設定)

daskでcsvファイの読み込みを高速化してみました。
使ってみると、もっと早くdaskを使っていればと後悔。

まずはdaskをimportして、

import dask.dataframe as dd

read_csv().compute()で読み込みます。
このとき、pandasで指定できたindex_colは指定できないことに注意が必要です。

data = dd.read_csv('csv.txt',
				usecols=[0,1],
				names=('date', 'val')
				).compute()

なので、date列をdatetime64型に変換して上書きします。

data['date'] = pd.to_datetime(data['date'], format='%Y%m%d%H%M%S')

そして、date列をindexに設定します。
data = data.set_index('date')

スポンサーリンク

サンプルコード

例えば、下記のin.txtがあったとします。

$ cat csv.txt 
20160601010101,3
20160601010103,4
20160602010153,8

下記がサンプルコードになります。
$ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import pandas as pd
import dask.dataframe as dd
import datetime
import time
start = time.time()

data = dd.read_csv('csv.txt',
				usecols=[0,1],
				names=('date', 'val')
				).compute()

data['date'] = pd.to_datetime(data['date'], format='%Y%m%d%H%M%S')
data = data.set_index('date')

print(data)

下記が実行結果になります。

$ ./sample.py 
                     val
date                    
2016-06-01 01:01:01    3
2016-06-01 01:01:03    4
2016-06-02 01:01:53    8

スポンサーリンク