>백엔드 개발 >파이썬 튜토리얼 >Pandas의 설정WithCopyWarning을 이해하고 처리하는 방법은 무엇입니까?

Pandas의 설정WithCopyWarning을 이해하고 처리하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-26 19:26:14134검색

How to Understand and Handle Pandas' SettingWithCopyWarning?

SettingWithCopyWarning: Pandas의 설명 및 처리

Pandas 0.13.0rc1에 도입된 SettingWithCopyWarning은 DataFrames의 슬라이스 또는 복사본에 값을 설정할 때 발생할 수 있는 문제에 대해 사용자에게 경고합니다. 이 경고는 혼란과 예상치 못한 동작을 방지하는 것을 목표로 합니다.

경고 이해하기

경고는 DataFrame의 슬라이스 또는 복사본에 값이 설정되는 "체인 할당"으로 인해 발생합니다. as:

df[df['A'] > 2]['B'] = new_val  # new_val not set in df

이 예에서 첫 번째 선택(df[df['A'] > 2])은 복사본을 반환합니다. 이 복사본에 'B'를 설정하려고 하면 원본 DataFrame 'df'가 업데이트되지 않습니다. 'df'를 올바르게 업데이트하려면 loc 접근자를 사용하세요:

df.loc[df['A'] > 2, 'B'] = new_val

경고 처리

1. 경고 무시

변경 사항을 원본 DataFrame에 다시 반영할 필요가 없다고 확신하는 경우 경고를 비활성화할 수 있습니다.

import pandas as pd
pd.options.mode.chained_assignment = None  # default='warn'

2. loc 및 iloc 사용

슬라이스나 복사본에 대한 할당의 경우 원본 DataFrame을 직접 수정할 수 있는 loc 또는 iloc 접근자를 사용하세요.

df.loc[df['A'] > 2, 'B'] = new_val
df.iloc[2:5, 4] = [1, 8, 8]

3. 복사본 만들기

DataFrame에 대한 새 참조가 필요한 경우 수정하기 전에 DataFrame.copy()를 사용하여 복사본을 만듭니다.

new_df = df.copy()
new_df['C'] = df['A'] + df['B']

4. DataFrame 재생성

특정 경우에는 원본 quote_df를 수정하는 대신 원하는 변경 사항을 적용하여 새 DataFrame을 재생성할 수 있습니다.

quote_df = pd.read_csv(StringIO(str_of_all), sep=',', names=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg'))
quote_df.rename(columns={'A':'STK', 'B':'TOpen', ...}, inplace=True)
quote_df['TVol'] = quote_df['TVol'] / TVOL_SCALE
quote_df['TAmt'] = quote_df['TAmt'] / TAMT_SCALE
quote_df['TDate'] = quote_df.TDate.map(lambda x: x[0:4]+x[5:7]+x[8:10])

위 내용은 Pandas의 설정WithCopyWarning을 이해하고 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.