ホームページ > バックエンド開発 > Python チュートリアル > パンダのSettingWithCopyWarningを理解して解決する方法?

パンダのSettingWithCopyWarningを理解して解決する方法?

DDD
リリース: 2024-12-26 04:37:10
オリジナル
716 人が閲覧しました

How to Understand and Resolve Pandas' SettingWithCopyWarning?

Pandas の SettingWithCopyWarning について

背景:

Pandas バージョン 0.13 以降では、潜在的な混乱を強調するためのSettingWithCopyWarning 「連鎖」割り当てが原因で発生します。この警告は、DataFrame のコピーが変更されて予期しない結果が生じるシナリオに対処することを目的としています。

警告の意味は何ですか?

この警告は、値が変更されていることを示しています。 DataFrame のスライスのコピーに設定されています。具体的には、次の行を次の行に置き換えることを提案します:

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

quote_df.loc[row_index, 'TVol'] = value
ログイン後にコピー

警告を修正する方法:

提供される解決策代わりに loc インデックスを使用するよう警告されています。ただし、これはすべてのユースケースに適しているわけではありません。元の DataFrame の更新を気にしない場合は、次のように警告を安全に無効にすることができます。

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

その他の説明:

SettingWithCopyWarning は、次のような連鎖割り当てにフラグを立てます。必ずしも期待どおりに機能するとは限りません。この問題は、最初の選択によって DataFrame のコピーが返され、その後の割り当てがそのコピーに対して行われる場合に発生します。このパターンは、変更が元の DataFrame に反映されないため、混乱を招く可能性があります。

あなたの場合、次のコードが警告を引き起こしています:

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

since quote_df['TVol' ] はコピーであるため、割り当てによって元の DataFrame が変更されることはありません。代わりに、

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

追加リソース:

  • [Pandas ユーザー ガイド: データのインデックス付けと選択](https://pandas.pydata) の使用を検討してください。 .org/pandas-docs/stable/user_guide/indexing.html)
  • [Python データサイエンス ハンドブック: データのインデックス作成と選択](https://jakevdp.github.io/PythonDataScienceHandbook/02.01-indexing-and-selecting-data.html)
  • [実際の Python: Pandas での SetWithCopyWarning: ビューとビューコピー](h​​ttps://realpython.com/settingwithcopywarning-in-pandas/)
  • [Dataquest:SettingwithCopyWarning:Pandas でこの警告を修正する方法](https://www.dataquest.io/blog/ settingswithcopywarning-pandas/)
  • [データ サイエンスに向けて: SettingWithCopyWarning の説明]パンダ](https://towardsdatascience.com/explaining-the-settingwithcopywarning-in-pandas-520ea63f963a)

以上がパンダのSettingWithCopyWarningを理解して解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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