연결된 할당을 잘못 사용하면 어떻게 Pandas에서 예기치 않은 결과가 발생할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-10-24 06:15:30
원래의
542명이 탐색했습니다.

How Can Incorrect Use of Chained Assignments Lead to Unexpected Results in Pandas?

Pandas의 연결된 할당

Pandas에서 데이터 프레임으로 작업할 때 연결된 할당은 예상치 못한 동작이나 거짓 긍정으로 이어질 수 있습니다. CopyWarning으로 설정. 이 경고의 목적은 연결된 할당과 관련된 잠재적인 함정을 사용자에게 알리는 것입니다.

연결된 할당 작동 방식

Pandas에서 대부분의 메서드 호출은 개체의 복사본을 반환합니다. 이는 df['column'] = df['column'].fillna(...)와 같은 연결된 할당을 수행할 때 원본 데이터프레임 자체가 아닌 원본 데이터프레임의 복사본을 수정하게 될 수 있음을 의미합니다.

.ix(), .iloc() 및 .loc() 연결 효과

ix(), iloc() 및 loc 선택 ()는 연결된 할당 동작에 영향을 미칠 수 있습니다.

  • ix()는 더 이상 사용되지 않으며 사용하면 안 됩니다.
  • iloc()는 정수 인덱스를 사용하여 데이터를 검색합니다. 이 메소드는 요소에만 직접 액세스할 수 있으며 연결 할당을 지원하지 않습니다.
  • loc()는 레이블을 사용하여 데이터를 검색합니다. loc()를 사용하여 연결된 할당은 원래 데이터 프레임을 수정할 수도 있고 수정하지 않을 수도 있는 새 객체를 생성합니다.

최적의 코딩 방법

잠재적인 문제를 방지하려면 연결된 할당의 경우 작업 결과를 새 변수에 명시적으로 할당하는 것이 좋습니다. 예를 들어 다음 대신에 다음을 사용합니다.

<code class="python">df['amount'] = df['amount'].fillna(...)</code>
로그인 후 복사

사용:

<code class="python">df['amount_updated'] = df['amount'].fillna(...)</code>
로그인 후 복사

오탐지

일부 연결된 할당은 실행하는 경우에도 경고를 트리거할 수 있습니다. 원본 데이터 프레임을 수정하지 마십시오. 이러한 경우 다음을 사용하여 경고를 끌 수 있습니다.

<code class="python">pd.set_option('chained_assignment', None)</code>
로그인 후 복사

다음 코드를 고려하세요.

<code class="python">data['amount'] = data.apply(lambda row: function1(row, date, qty), axis=1) 
data['amount'] = data['amount'].astype(float)</code>
로그인 후 복사

이 코드 data['amount']가 두 번 할당되기 때문에 SettingWithCopyWarning이 발생할 수 있습니다. 이 문제를 해결하려면 첫 번째 작업의 결과를 새 변수에 할당하세요.

<code class="python">temp_amount = data.apply(lambda row: function1(row, date, qty), axis=1) 
data['amount'] = temp_amount.astype(float)</code>
로그인 후 복사

위 내용은 연결된 할당을 잘못 사용하면 어떻게 Pandas에서 예기치 않은 결과가 발생할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿