f = pd.read_hdf('Sensor_Data.h5','f')
pieces = [f[x: x + 360] for x in xrange(504649)]
df = pd.concat(pieces)
午前中です。私は50万以上の行のファイルを持っています。私はこれから360行のスライスを取り出し、毎回1行ずつ下に移動したい。 (だから私はたくさんのデータで終わります。)パンダデータフレーム:メモリ不足 - ここでは何が良い方法ですか?
期待どおり、私は上記のコードを試して、メモリエラーが発生しました。私はこれを行うより良い方法があると仮定していますか?
EDIT:コンテキストを追加するには、これは.h5ファイルです。この方法でpandasデータフレームを使用してスライスしています。私はカフェネットを使用して深いニューラルネットワークにフィードするデータの配列を作成しようとしていますが、現時点でのフォーマットは不明です...
コードは少量のデータに対して機能します。大きなもののためだけではありません。私は何をしようとしているのより明確にするには、次の
pieces = [df[x: x + 4] for x in xrange(7)]
f = pd.concat(pieces)
f
Diplaysに似た新しいテーブル:Pd等の輸入パンダは
df = pd.DataFrame(np.random.randn(10,6)); df
今すぐ [ランダムな数字の6×10のテーブルを表示]前の1つですが、拡張されました。今は行0,1,2,3,1,2,3,4,2,3,4,5,3,4,5,6 ...
"pieces"はデータフレームではありませんオブジェクトそのものですが、なんらかの理由で「リスト」になります。これらの別々のデータセット(0,1,2,3)、(1,2,3,4)などをすべてデータフレームオブジェクト自体に変換する簡単な方法はありますか? (代わりに、1つのデータフレームにそれらを一緒に連結するのは
私は、これは理にかなって願っています
大量のデータを扱う私の好む方法は、['numpy.memmap'](http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.memmap.html)を使用しています。 。一つの欠点は、データを 'memmap'が理解できるバイナリ形式に変換しなければならないことですが、それ以降は巨大なデータセットで簡単に作業できます。 スライスのすべての冗長データを本当に保存する必要がありますか?これらのスライスの究極の使用は何ですか?多分、イテレータを作成するほうがよいでしょう。 –
さて、あなたは基本的にあなたのデータを取り、360で乗算していますよね?しかし、この最終的なデータフレームは膨大な冗長データで満たされていますが、それは無意味です。私は後で計算する目的でこれをやっていると思いますか?しかし、メモリを浪費するよりも、計算を行うより良い方法があるでしょう。例えば移動/拡張機能、先進的な(ファンシー)索引付けなどがあります。私はあなたがする必要があると思うのは、メモリのフットプリントを拡張する方法ではなく、計算を行う方法を考えることです。 – JohnE
はい、後の計算のためです。私は質問を少しはっきりさせるために編集します...新しい文脈で私は何をすべきでしょうか? –