私はテキストファイルを別名形式で持っています。私はまた、各行から関連する列を抽出するパーサを持っています。一度に1行ずつファイルを読み込み、データフレームに追加したいと思います。ファイルを解析してデータフレームを作成する方法
問題は、データフレームに行を追加するのが遅いことです。
これを行う正しい方法は何ですか?
私はテキストファイルを別名形式で持っています。私はまた、各行から関連する列を抽出するパーサを持っています。一度に1行ずつファイルを読み込み、データフレームに追加したいと思います。ファイルを解析してデータフレームを作成する方法
問題は、データフレームに行を追加するのが遅いことです。
これを行う正しい方法は何ですか?
ファイルが大きい場合、コードはディスクからファイルを読み込む時間によってバインドされますが、データフレームに行を追加する時間ではありません。たとえば、SSD(読み取りスループット〜400MB/s)では、4GBファイルはディスクからロードするのに10秒かかります。 HDD(〜40MB/s)では、これは100秒までになる可能性があります。この場合、読み込みを高速化する方法の1つは、ファイルをpandasでサポートされているフォーマットに変換して圧縮し、ランタイムデcompression
オプションread_table()を使用して、データフレームの作成中に即座に圧縮解除することです。
それ以外の場合、これは本当に問題ではありません追加すること一つ一つがOKではないと、ファイルがメモリにバッファリングするためには大きすぎる場合、あなたは、これらのオプションを持っていますPandasでサポートされているものと一致するフォーマット。例えばCSVファイルはかなり標準的なオプションのように見えるかもしれません。
The other ways to construct a dataframe:タプルから
DataFrame.from_recordsコンストラクタ、またシリーズのdicts、配列、またはdicts
から 配列
DataFrame.from_dictを記録DataFrame.from_itemsからのシーケンス(キー、値)のペア
あなたがデータフレームに追加すると低速であると言うことになり何
?ファイルが大きい場合は、エントリを1つずつ追加しても、そのコードをディスクから読み込む時間に制限される可能性が高いと思いますか? –
@eleanora、テキストファイルのサンプルをまったく同じ形式で投稿することをお勧めします。通常、単一の行をデータフレームに追加するのは非常に遅いです。 – MaxU