#とある事情より25GBもの容量のデータを処理しなくてはならず、それを処理しようと色々やってみたお話。
まずは素直に、、、これをやってみた。
import pandas as pd
data=pd.read_csv( 'ファイル名.tsv', delimiter='\t' )
無限に終わらん、、、、待ってるのつらい、、、
次にやってみたこと
DASKというのを使うと早くなるとの噂をきき使ってみる。
import dask.dataframe as ddf
import dask.multiprocessing
df_dask = ddf.read_csv( 'ファイル名.tsv',parse_dates=True)
df_dask = df_dask.compute()
display(df_dask.tail())
print(df_dask.info())
変わらなくね????遅くね???
次にチャンクで区切ってみる。
reader = pd.read_csv('ファイル名.tsv', skiprows=[0, 1], chunksize=10000000)
df = pd.concat((r for r in reader), ignore_index=True)
pd.concatにめっちゃ時間がかかり、耐えられなくなる。
####そうだまずはデータの行数を調べようと思って、ターミナルで下を入れてみたところ、
wc -l ファイル名.tsv
1億行を超えてることがわかった。
###最終的に選んだ手法
データ分割しちゃおっと!
split -l 1000000 ファイル名.tsv [お好みの名前]
こうした後に、たくさんできたファイルの名前の後ろに.tsv
をつけて、、、
分割に成功。