>  기사  >  백엔드 개발  >  Pandas는 언제 뷰와 복사본을 생성합니까?

Pandas는 언제 뷰와 복사본을 생성합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-04 05:02:01727검색

When Does Pandas Create a View vs a Copy?

뷰 생성과 복사 생성에 대한 Pandas 규칙

Pandas는 DataFrame에 대한 슬라이스 작업의 결과가 뷰인지 아니면 뷰인지 결정할 때 특정 규칙을 사용합니다. 복사. 이러한 규칙을 이해하면 데이터 조작을 최적화하고 예상치 못한 동작을 방지할 수 있습니다.

항상 복사본을 생성하는 작업으로 시작:

  1. 수정하도록 특별히 설계된 작업을 제외한 모든 작업 DataFrame을 제자리에 복사하고 복사본을 만듭니다.
  2. 특정 작업만 inplace=True 매개변수를 지원하므로 원본 DataFrame에서 직접 수정이 발생할 수 있습니다.

다음으로 작업을 고려해 보겠습니다. 뷰가 발생할 수 있습니다.

  1. .loc, .iloc, .iat 및 .at와 같은 값을 설정하는 인덱서는 복사본을 생성하지 않고 원본 DataFrame을 수정하면서 내부에서 작동합니다.
  2. 기본 메모리 레이아웃이 이 최적화를 방해하지 않는 한 단일 dtype 개체에서 데이터를 검색하는 인덱서는 일반적으로 뷰를 생성합니다.
  3. 반대로, 다중 dtype 개체에서 데이터를 검색하는 인덱서는 항상 복사본을 생성합니다.

예제와 관련하여:

  • df.query('2 < index <= 5')는 숫자가 포함되어 있으므로 복사본을 반환합니다. 표현식 평가.
  • df.iloc[3] = 70 및 df.ix[1, 'B':'E'] = 222 단일 dtype 객체에 액세스하고 그 자리에서 값을 설정하기 때문에 df를 변경합니다.
  • df[df.C <= df.B]는 단일 dtype 객체(결과 부울 마스크)에서 내부 설정자(df[...])를 사용하기 때문에 df를 수정합니다.
  • 그러나 df[df.C <= df.B].ix[:,'B':'E']는 df를 수정하지 않습니다. 왜냐하면 연결된 인덱싱 작업이 포함되어 있기 때문입니다. Pandas가 차단합니다.

쿼리를 기반으로 특정 값을 수정하려면 올바른 loc 구문을 사용하세요.

df.loc[df.C <= df.B, 'B':'E']

이러한 규칙을 준수하면 Pandas가 뷰나 복사본을 생성할 때 Python 스크립트 내에서 효율적인 데이터 조작이 보장됩니다.

위 내용은 Pandas는 언제 뷰와 복사본을 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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