空の Pandas DataFrame を作成し、それを埋める
DataFrame に値を繰り返し埋める
指定された DataFrame ドキュメントを使用して、 DataFrame に時系列計算のような値を入力します。目標は、列 A、B、およびタイムスタンプ行 (すべて 0 またはすべて NaN) で DataFrame を初期化することです。次に、初期値を追加し、このデータを調べて前の行から新しい行を計算します。たとえば、 row[A][t] = row[A][t-1] 1 などです。
イテレータ、scipy の zeros 関数、datetime を使用する現在のコードは機能する可能性がありますが、改善の可能性があります。
DataFrame を拡張してみてはいかがでしょうか行方向?
DataFrame を行方向に拡張することは、通常、次の理由により推奨されません:
-
計算コスト: リストに追加し、 DataFrame を一度に作成すると、空の DataFrame を作成して何度も追加するよりも計算量が少なくなります。
-
メモリ使用量: リストは、DataFrame よりも使用するメモリが少なく、軽量なデータ構造であるため、追加と削除の効率が高くなります。
-
データ型推論: DataFrame に追加すると、オブジェクト列が作成される可能性があり、パンダのパフォーマンスを妨げる可能性があります。一方、リストでは、dtype を自動的に推論できます。
-
インデックス管理: リストから DataFrame を作成すると、データの RangeIndex が自動的に作成され、自分でインデックスを管理するのは面倒です。
推奨されるアプローチ: データをlist
DataFrame を行ごとに拡大する代わりに、データをリストに蓄積してから、pd.DataFrame(data) を使用して DataFrame を初期化する方が良いでしょう。このアプローチには次の利点があります。
-
効率: 計算効率が高く、必要なメモリが少なくなります。
-
柔軟性: リストはlist-of-list 形式と list-of-dict 形式の両方に変換され、これらは によって受け入れられます。 pd.DataFrame.
-
利便性: インデックス管理とデータ型推論を自動的に処理します。
検討すべき代替案
データを蓄積する際リストが推奨されるアプローチですが、避けるべき最悪の方法が 2 つあります。
-
ループ内での追加または連結: これはメモリの再割り当てを繰り返し行うため、非効率的でエラーが発生しやすくなり、オブジェクト列が発生する可能性があります。
-
空のオブジェクトの作成NaN の DataFrame: このアプローチではオブジェクト列も作成され、手動インデックスが必要になりますManagement.
結論
DataFrame に効果的に値を入力するには、データをリストに蓄積し、pd.DataFrame(data) を使用して DataFrame を初期化するのが最善です。この方法は効率的で柔軟かつ便利であるため、pandas DataFrame を操作する場合に推奨されるアプローチです。
以上がPandas DataFrame を繰り返し効率的に埋めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。