> 백엔드 개발 > 파이썬 튜토리얼 > Pandas DataFrame에서 두 열을 빼고 평균을 계산할 때 '적용'과 '변환'은 어떻게 다릅니까?

Pandas DataFrame에서 두 열을 빼고 평균을 계산할 때 '적용'과 '변환'은 어떻게 다릅니까?

Barbara Streisand
풀어 주다: 2024-11-26 20:28:11
원래의
685명이 탐색했습니다.

How do `apply` and `transform` differ when subtracting two columns and calculating the mean in a Pandas DataFrame?

적용 대 변환을 사용하여 두 열을 빼고 평균 구하기

다음 데이터 프레임을 고려하세요.

df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">               'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
               'C': np.random.randn(8), 'D': np.random.randn(8)})

 A      B         C         D
로그인 후 복사

0 foo one 0.162003 0.087469
1 bar one -1.156319 -1.526272
2 foo 0.833892 -1.666304
3바 3 -2.026673 -0.322057
4 푸 2 0.411452 -0.954371
5 바 2 0.765878 -0.095968
6 푸 1 -0.654890 0.678091
7 foo three -1.789842 -1.130922

apply vs. 변환

다음 명령은 각각에 람다 함수를 적용합니다. 에 있는 그룹 dataframe:

df.groupby('A').apply(lambda x: (x['C'] - x['D']))
로그인 후 복사

이는 원본 데이터프레임과 동일한 모양의 데이터프레임을 반환하며, 각 셀에는 해당 그룹에 적용된 람다 함수의 결과가 포함됩니다.

다음 명령은 다음을 변환합니다. 데이터 프레임의 각 그룹:

df.groupby('A').transform(lambda x: (x['C'] - x['D']).mean())
로그인 후 복사

이것은 원래 데이터 프레임과 동일한 모양의 계열을 반환하며, 각 셀에는 차이의 평균이 포함됩니다. 해당 그룹의 C 열과 D 열 사이에 있습니다.

다른 명령이 작동하는 이유

적용 방법과 변환 방법은 서로 다른 입력 개체에 작동하기 때문에 동작이 다릅니다.

  • apply는 전체 그룹을 DataFrame으로 람다에 암시적으로 전달합니다. 함수.
  • transform은 그룹의 각 열을 개별적으로 시리즈로 람다 함수에 전달합니다.

이러한 입력 차이는 Apply를 사용하여 전체 그룹에 대한 계산을 수행할 수 있음을 의미합니다. , 변환은 개별 열에 대한 계산을 수행하는 데에만 사용할 수 있습니다.

다음을 사용하여 단일 값 반환 변환

Transform에 전달된 람다 함수는 각 그룹에 대해 단일 값을 반환해야 한다는 점에 유의하는 것이 중요합니다. 람다 함수가 DataFrame, Series 또는 기타 스칼라 값이 아닌 값을 반환하면 오류가 발생합니다.

이것이 다음 명령이 실패하는 이유입니다.

df.groupby('A').transform(lambda x: (x['C'] - x['D']))
로그인 후 복사

람다 함수는 단일이 아닌 DataFrame을 반환합니다. value.

결론

적용과 변환은 데이터 프레임에서 그룹별 작업을 수행하는 데 사용할 수 있는 두 가지 강력한 방법입니다. 두 가지 방법을 효과적으로 사용하려면 차이점을 이해하는 것이 중요합니다.

위 내용은 Pandas DataFrame에서 두 열을 빼고 평균을 계산할 때 '적용'과 '변환'은 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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