Pandas의 SetWithCopyWarning 이해
소개
Pandas 0.13.0rc1로 업그레이드하면 새로운 경고가 나타날 수 있습니다. CopyWarning으로 설정. 이 경고는 원본 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에 변경 사항이 적용되도록 할 수 있습니다.
경고 비활성화
연결된 할당이 의도된 것이며 어떤 오류도 발생하지 않는다고 확신하는 경우 문제가 있는 경우 다음 코드를 사용하여 SettingWithCopyWarning을 비활성화할 수 있습니다.
import pandas as pd pd.options.mode.chained_assignment = None # default='warn'
그러나 일반적으로 경고를 비활성화하는 것보다 경고를 유발하는 근본적인 문제를 해결하는 것이 좋습니다.
결론
SettingWithCopyWarning은 데이터 조작 코드에서 잠재적인 오류를 식별하는 데 도움이 되는 귀중한 피드백을 제공합니다. 이 경고의 원인과 결과를 이해하면 코드가 의도한 대로 작동하고 데이터 무결성 문제를 방지할 수 있습니다.
위 내용은 Pandas 설정WithCopyWarning을 어떻게 피할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!