inplace
パラメータ:
df.dropna(axis='index', how='all', inplace=True)
内Pandas
および一般的な手段で:
1.パンダは元のデータのコピーを作成します
2 ....それに対していくつかの計算を行います
3 ....結果を元のデータに割り当てます。
4 ....コピーを削除します。
以下の私の回答の残りの部分で読むことができるように、このパラメータ、つまりを使用する正当な理由がまだありますが、次のように、inplace operations
より多くの問題が発生するため、可能であれば回避する必要があります。
1.コードのデバッグが難しくなります(実際には、SettingwithCopyWarningは、この考えられる問題について警告することを意味します)
2.メソッドチェーンとの競合
それで、私たちがまだそれを使うべきである場合さえありますか?
絶対そうです。パンダや巨大なデータセットを処理するためのツールを使用すると、一部のビッグデータがメモリ全体を消費する可能性があるという状況に簡単に直面する可能性があります。この望ましくない影響を回避するために、メソッドチェーンのようないくつかのテクニックを使用できます。
(
wine.rename(columns={"color_intensity": "ci"})
.assign(color_filter=lambda x: np.where((x.hue > 1) & (x.ci > 7), 1, 0))
.query("alcohol > 14 and color_filter == 1")
.sort_values("alcohol", ascending=False)
.reset_index(drop=True)
.loc[:, ["alcohol", "ci", "hue"]]
)
これにより、コードがよりコンパクトになり(ただし、解釈とデバッグも困難になります)、チェーンされたメソッドが他のメソッドの戻り値と連携するため、メモリの消費量が少なくなり、入力データのコピーが1つだけになります。この操作の後、元のデータメモリの消費量が2倍になることがはっきりとわかります。
または、inplace
パラメータを使用することもできます(解釈とデバッグも難しいですが)メモリ消費量は元のデータの2倍になりますが、この操作後のメモリ消費量は元のデータの1倍のままです。大きなメリット。
最終結論:
inplace
巨大なデータを処理しない限り、パラメーターの使用は避け、パラメーターを引き続き使用する場合に発生する可能性のある問題に注意してください。
inplace=True
returnsNone
inplace=False
は、操作が実行されたオブジェクトのコピーを返します。ドキュメントはこれについてかなり明確です、特定の部分と混同している何かがありますか?特別にIf True, do operation inplace and return None.