Memors Error は、Pandas ライブラリのさまざまな関数を使用するときによくあるエラーです。いろいろなところで助けてもらいたいです。問題を説明した後、私の質問を以下に定式化します。
私のOSはUbuntu 18で、ワークスペースはAnacondaのフレームワーク内のjupyterノートブックで、RAMボリュームは8Gbです。
私が解決するタスク。
このように、ユーザーによるサイト訪問に関するデータを含む 100,000 を超える辞書があります。
{'meduza.io': 2, 'google.com': 4, 'oracle.com': 2, 'mail.google.com': 1, 'yandex.ru': 1, 'user_id': 3}
このデータから DataFrame を形成する必要があります。最初に、append 関数を使用して、辞書を 1 行ずつ DataFrame に追加しました。
for i in tqdm_notebook(data):
real_data = real_data.append([i], ignore_index=True)
しかし、おもちゃのデータセットは、この関数が完了するまでに長い時間がかかることを示しました。次に、このような辞書を含む配列を渡して、DataFrame を直接作成しようとしました。
real_data = pd.DataFrame(data=data, dtype='int')
少量のデータの変換は十分に高速ですが、完全なデータセットを関数に渡すとメモリ エラーが発生します。RAMの消費量を追跡します。関数は実行を開始せず、メモリを浪費しません。スワップファイルを展開しようとしました。しかし、これは機能しませんでした。関数はそれにアクセスしません。
私は、特定の問題を解決するために、データを部分に分割し、それらを結合できることを理解しています。しかし、この問題を解決する最も効果的な方法を知っているかどうかはわかりません。
パンダの操作に必要なメモリ量の計算がどのように機能するかを理解したいです。このトピックに関する質問の数から判断すると、読み取り、マージなどでメモリ エラーが発生します。この問題を解決するためにスワップ ファイルを含めることは可能ですか?
DataFrame に辞書を追加して、問題の解決策をより効率的に実装するにはどうすればよいですか? 「追加」が効率的に機能していません。完全なデータセットから DataFrame を作成する方が効率的ですが、エラーが発生します。これらの処理の実装がよくわかりませんが、自分のタスクのようにデータを変換する最も効率的な方法は何かを理解したいと考えています。