Pandas の SettingWithCopyWarning について
はじめに
Pandas 0.13.0rc1 にアップグレードすると、新しい警告が表示される可能性があります。コピー警告付きの設定。この警告は、元の DataFrame 自体ではなく DataFrame スライスのコピーを変更するときに発生する可能性のある問題について警告します。
警告の原因
警告がトリガーされます以前にコピーとして作成された DataFrame のスライスに値が割り当てられた場合。たとえば、次のコードを考えてみましょう。
quote_df = pd.read_csv(StringIO(str_of_all), sep=',', names=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg')) quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
このコードでは、quote_df 変数は最初に元の DataFrame のコピーとして作成されます。 quote_df の 'TVol' 列に新しい値を割り当てると、変更が元の DataFrame に反映されないため、SettingWithCopyWarning がトリガーされます。
警告を無視した結果
警告を無視すると、予期しない動作やデータの不整合が発生する可能性があります。
推奨アプローチ
警告を回避し、適切なデータ操作を保証するには、.loc アクセサーを使用して、元の DataFrame 内の値を直接変更する必要があります。次のコードは、.loc アクセサーを使用して上記の例を書き換えます。
quote_df.loc[:, 'TVol'] = quote_df['TVol']/TVOL_SCALE
.loc を使用すると、変更がコピーではなく元の DataFrame に確実に適用されます。
警告を無効にする
連鎖割り当てが意図されたものであり、何ら問題を引き起こさないと確信している場合問題がある場合は、次のコードを使用して SetWithCopyWarning を無効にすることができます:
import pandas as pd pd.options.mode.chained_assignment = None # default='warn'
ただし、一般的には、警告を無効にするのではなく、警告の原因となっている根本的な問題に対処することをお勧めします。
結論
SettingWithCopyWarning は、データ操作コード内の潜在的なエラーを特定するのに役立つ貴重なフィードバックを提供します。この警告の原因と結果を理解することで、コードが意図したとおりに動作し、データ整合性の問題を回避できるようになります。
以上がPandas の SetWithCopyWarning を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。