辞書を使用した Pandas シリーズの値置換のパフォーマンスの向上
辞書を使用した Pandas シリーズの値の置換は一般的なタスクです。 s.replace(d) を使用して値を置換することをお勧めしますが、単純なリスト内包表記を使用するよりも大幅に遅くなる可能性があります。
パフォーマンス低下の原因
パフォーマンスの低下s.replace(d) の機能は、エッジケースやまれな状況の処理に由来しています。これには以下が含まれます:
代替方法
パフォーマンスを向上させるには、次の方法の使用を検討してください:
ベンチマーク
ベンチマークは、s.replace(d)、s のパフォーマンスの違いを示しています。 .map(d)、およびリストの内包表記:
##### Full Map ##### d = {i: i+1 for i in range(1000)} %timeit df['A'].replace(d) # Slow (1.98s) %timeit df['A'].map(d) # Fast (84.3ms) ##### Partial Map ##### d = {i: i+1 for i in range(10)} %timeit df['A'].replace(d) # Intermediate (20.1ms) %timeit df['A'].map(d).fillna(df['A']).astype(int) # Faster (111ms)
これにより、完全または部分的なマッピングでは、s.map(d) が s.replace(d) よりも一貫して高速であることがわかります。
結論
辞書の網羅度に応じて、s.map(d) または s.map(d).fillna(s['A']).astype(int) Pandas シリーズで効率的に値を置換するには、s.replace(d) よりも優先する必要があります。
以上がPandas シリーズでディクショナリを使用して値を置換すると遅いのはなぜですか?また、パフォーマンスを向上させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。