ホームページ > バックエンド開発 > Python チュートリアル > パンダのSettingWithCopyWarningを効果的に処理するにはどうすればよいですか?

パンダのSettingWithCopyWarningを効果的に処理するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-25 15:02:12
オリジナル
183 人が閲覧しました

How Can I Effectively Handle Pandas' SettingWithCopyWarning?

Pandas での SettingWithCopyWarning の処理

Pandas を 0.11 から 0.13.0rc1 にアップグレードする際、ユーザーは多数の SettingWithCopyWarning メッセージに遭遇する可能性があります。そのような例の 1 つは次のとおりです。

E:\FinReporter\FM_EXT.py:449: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
quote_df['TVol']   = quote_df['TVol']/TVOL_SCALE
ログイン後にコピー

警告について理解する

SettingWithCopyWarning フラグは、次のような「連鎖」割り当てを混乱させる可能性があります。

df[df['A'] > 2]['B'] = new_val  # new_val not set in df
ログイン後にコピー

これは常に機能するとは限りません。特に最初の選択がコピーを返す場合には期待されます。この問題を解決するには、次の手順を使用します。

df.loc[df['A'] > 2, 'B'] = new_val
ログイン後にコピー

提供されたコード内の警告に対処する

提供されたコード スニペット内:

quote_df['TVol']   = quote_df['TVol']/TVOL_SCALE
ログイン後にコピー

を実行すると、連鎖代入は以下と同等です:

quote_df = quote_df[quote_df['A'] > 2]
quote_df['TVol'] = new_val
ログイン後にコピー

このパターンは否定的な例と区別できず、

警告の無効化

書き込みが元のフレームに影響を与えないと確信できる場合は、次のコマンドで警告を無効にします。

import pandas as pd
pd.options.mode.chained_assignment = None  # default='warn'
ログイン後にコピー

追加情報

さらに理解するには、次のリソースを参照してください:

  • Pandas ユーザーガイド: データのインデックス付けと選択
  • Python データ サイエンス ハンドブック: データのインデックス付けと選択
  • 実際の Python: Pandas での SetWithCopyWarning
  • Dataquest: SettingwithCopyWarning: Pandas でこの警告を修正する方法
  • データサイエンスに向けて:SettingWithCopyWarning の説明パンダ

以上がパンダのSettingWithCopyWarningを効果的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート