LoginSignup
0
1

More than 3 years have passed since last update.

大容量のtsvデータを分割する。

Posted at

とある事情より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をつけて、、、

分割に成功。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1