Pandas シリーズの値を辞書に置き換える場合のパフォーマンスに関する考慮事項
Pandas シリーズの値を辞書に置き換えることは、コミュニティ。推奨されるメソッドは s.replace(d) または s.map(d) ですが、パフォーマンスはデータセットの特性によって大きく異なる可能性があります。
ベンチマーク
パフォーマンスの違いを説明するために、0 から 0 までのランダムな整数を含む DataFrame df を考えてみましょう。 999.
import pandas as pd, numpy as np df = pd.DataFrame({'A': np.random.randint(0, 1000, 1000000)})
一般的なケース
値を後続にマッピングする辞書 d を作成するとします (例: d = {i: i 1 for i in range) (1000)})、次のことを観察します:
# Full-range dictionary %timeit df['A'].replace(d) # 1.98s %timeit df['A'].map(d) # 84.3ms # Partial-range dictionary d = {i: i+1 for i in range(10)} %timeit df['A'].replace(d) # 20.1ms %timeit df['A'].map(d).fillna(df['A']).astype(int) # 111ms
最適な方法選択
ベンチマークに基づくと、s.map が両方のシナリオで優れていることは明らかです:
理由s.replace は遅いですか?
s.replace は s.map よりも広範囲の操作を実行します。これには、辞書をリストに変換し、それを反復処理し、置換を実行する前にネストされた辞書をチェックすることが含まれます。
対照的に、s.map は、指定された引数が辞書または Series であるかどうかを単にチェックし、そうでない場合は変換します。必要。インデックスに基づいて値を効率的にマッピングします。
代替オプション
パフォーマンスが重要な特定の場合:
結論
Pandas シリーズの値をディクショナリは、DataFrame のサイズ、ディクショナリ内の一意の値の数、マッピングの完全性などの要因によって異なります。これらの要素を慎重に考慮することで、開発者は特定の状況に最も効率的な方法を選択できます。
以上がシリーズ内の辞書ベースの値置換ではどの Pandas メソッドが優れていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。