ホームページ >バックエンド開発 >Python チュートリアル >パンダの「inplace=True」は有害ですか?

パンダの「inplace=True」は有害ですか?

DDD
DDDオリジナル
2024-11-25 09:37:16239ブラウズ

Is `inplace=True` in pandas Harmful?

pandas では、inplace = True は有害であると考えられますか?

gt;

要するに、はい、inplace = True は考慮されます。パンダにとっては有害。この GitHub の問題は、近い将来 API 全体でインプレース引数を非推奨にすることを明示的に提案しています。その理由は次のとおりです。

  • とにかくコピーが作成されることが多い: その名前に反して、inplace = True は多くの場合、コピーの作成を妨げません。パフォーマンス上の利点は(ほとんど)まったくありません。メソッドのほとんどのインプレース バージョンとアウトオブプレース バージョンでは、データに関係なくデータのコピーが作成され、インプレース バージョンではコピーが自動的に割り当てられます。
  • メソッド チェーンの妨げ: Inplace = True もメソッドの連鎖を妨げます。
result = df.some_function1().reset_index().some_function2()

の動作を比較してください:

temp = df.some_function1()
temp.reset_index(inplace=True)
result = temp.some_function2()
  • 意図しない落とし穴: inplace = True を呼び出すと、SettingWithCopyWarning がトリガーされる可能性があります。 、予期せぬ事態を引き起こす可能性があります動作:
df = pd.DataFrame({'a': [3, 2, 1], 'b': ['x', 'y', 'z']})

df2 = df[df['a'] > 1]
df2['b'].replace({'x': 'abc'}, inplace=True)
# SettingWithCopyWarning: 
# A value is trying to be set on a copy of a slice from a DataFrame

さらに、パンダの操作がデフォルトで inplace = False になるのには理由があることに注意してください。これにより、連鎖/関数型構文 (例: df.dropna().rename().sum()) が可能になり、高価な SettingWithCopy チェックが回避され、舞台裏で一貫した動作が提供されます。

したがって、一般的には次のことが推奨されます。特に必要がない限り、inplace = True の使用は避けてください。

以上がパンダの「inplace=True」は有害ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。