これは大規模なJSONファイルを読み込むことではなく、大量のJSONファイルを最も効率的に読み込むことです。Pythonで膨大な数のjsonファイルを読み込んでいますか?
質問
私はMillion song datasetからlast.fmデータセットで働いています。 データは、キーがtrack_id、artist、title、timestamp、similars、およびtagsの場合にJSONでエンコードされたテキストファイルのセットとして利用できます。 hereを示すように、現在、私はこのようにいくつかのオプションを経て、次の方法でパンダにそれらを読んでいる
が最速である:
import os
import pandas as pd
try:
import ujson as json
except ImportError:
try:
import simplejson as json
except ImportError:
import json
# Path to the dataset
path = "../lastfm_train/"
# Getting list of all json files in dataset
all_files = [os.path.join(root,file) for root, dirs, files in os.walk(path) for file in files if file.endswith('.json')]
data_list=[json.load(open(file)) for file in all_files]
df = pd.DataFrame(data_list, columns=['similars', 'track_id'])
df.set_index('track_id', inplace=True)
現在の方法は、サブセットを読み込み(完全なデータセットの1% 1秒未満で)。しかし、完全な列車セットを読むのは遅すぎるので、読むのにはずっと時間がかかります(私は数時間も待っています)、question hereのようなさらなる仕事のためのボトルネックになっています。
私はまた、発電機の理解の代わりに、リストの内包を使うthis question here
UPDATE 1 から明らかに見ることができますJSONファイルを解析するにはスピードのためにujson
を使用しています。
data_list=(json.load(open(file)) for file in all_files)
RAMが不足しているようですが、SWAPを使い始めると、最も簡単な解決策はRAMを増やすことです。 –
@FranciscoCouzoおそらく最も簡単ですが、間違いなく最も安い! :D – dizzyf
私はすでに16Gigsを持っていますが、私はこのような通常のデータセットを読むのに十分だと思います。非常に多くのjsonファイルを読む良い方法はありますか? – TJain