パンダがデータフレーム構造を提供するようになったので、numpy で構造化/レコード配列が必要ですか? この構造化された配列型のフレームワークを必要とする既存のコードにいくつかの変更を加える必要がありますが、この時点から代わりに pandas を使用することを検討しています。pandas が提供していない構造化/レコード配列の機能が必要であることが判明することはありますか?
3 に答える
pandas の DataFrame は高レベルのツールですが、構造化配列は非常に低レベルのツールであり、データのバイナリ BLOB をテーブルのような構造として解釈できます。pandas で行うのが難しいことの 1 つは、構造化配列と同じセマンティクスを持つネストされたデータ型ですが、これは階層インデックスで模倣できます (構造化配列は、階層インデックスで実行できるほとんどのことを実行できません)。
構造化配列は、メモリ マップを介してロードされた大量の表形式データ セットの操作にも適しています ( np.memmap
)。ただし、これは pandas で最終的に対処される制限です。
現在、さまざまな Numpy 配列から Pandas DataFrames に移行中です。これは、主にNumpyの上に構築されている場合、Pandas以来、比較的痛みがありませんでした。つまり.mean()
、.sum()
などはすべて期待どおりに機能するということです。その上、階層インデックスを追加し、.ix[]
(インデックス) 属性と.xs()
(クロスセクション) メソッドを使用してデータの任意の断片を引き出す機能により、コードの読みやすさとパフォーマンスが大幅に向上しました (主に数を減らすことによって)私のデータベースへのラウンドトリップの)。
まだ十分に調査していないことの 1 つは、Pandas と Scipy および Matplotlib のより高度な機能との互換性です。ただし、問題が発生した場合は、それらのライブラリが機能する配列のように動作する単一の列を引き出すか、その場で配列に変換することさえ簡単です。たとえば、DataFrame のプロット メソッドは matplotlib に依存し、変換を処理します。
また、あなたが私のようで、Scipy の主な用途が統計モジュールである場合、pystatsmodels は急速に成熟し、パンダに大きく依存しています。
それは私の2セントの価値です
時間をかけて を掘り下げることはありませんでしたがpandas
、numpy では構造化配列を頻繁に使用しています。以下にいくつかの考慮事項を示します。
構造化配列は
recarrays
、属性によってフィールドにアクセスする可能性を失うことを気にしないのであれば、オーバーヘッドが少なくて便利です。しかし、のフィールド名としてmin
またはを使用しようとしたことがありますか?max
recarray
NumPy は よりもはるかに長い期間にわたって開発され
pandas
、より多くのクルーが参加しており、多くのサードパーティ パッケージが依存するほど普及しています。構造化配列は、データフレームよりも移植性が高いと期待できますpandas
。pandas
データフレームは簡単に選択できますか?PyTables
たとえば、 で前後に送信できますか?
コードを非ユーザーと共有する必要がまったくないと 100% 確信している場合を除き、pandas
構造化された配列をいくつか残しておくことをお勧めします。