이 프로그램에서는 두 개의 Pandas 시리즈를 비교하고, 서로 다른 지점을 출력하는 방법을 알아봅니다. 여기서 말하는 차이점이란 두 시리즈에서 요소 값이 일치하지 않는 인덱스 위치를 의미합니다.
알고리즘
1단계: 두 개의 Pandas 시리즈 s1과 s2를 정의합니다. 2단계: Pandas 시리즈의 compare() 함수를 사용해 두 시리즈를 비교합니다. 3단계: 두 시리즈의 차이점을 출력합니다.
예제 코드
import pandas as pd
s1 = pd.Series([10,20,30,40,50,60])
s2 = pd.Series([10,30,30,40,55,60])
print("S1:\n", s1)
print("\nS2:\n", s2)
difference = s1.compare(s2)
print("\nDifference between the series: \n", difference)
실행 결과
S1:
0 10
1 20
2 30
3 40
4 50
5 60
dtype: int64
S2:
0 10
1 30
2 30
3 40
4 55
5 60
dtype: int64
Difference between the series:
self other
1 20.0 30.0
4 50.0 55.0
결과 해석
위 출력 결과에서 차이점(diff) 데이터프레임은 두 개의 열로 구성되어 있습니다. 왼쪽의 self는 첫 번째 시리즈인 s1의 값을, 오른쪽의 other는 두 번째 시리즈인 s2의 값을 나타냅니다. 즉, 인덱스 1에서는 s1의 값이 20이고 s2의 값은 30으로 서로 다르며, 인덱스 4에서는 s1의 값이 50, s2의 값이 55로 일치하지 않습니다. 값이 같은 인덱스(0, 2, 3, 5)는 결과에서 자동으로 제외됩니다.
compare() 함수의 주요 옵션
compare() 메서드는 pandas 1.1.0 버전부터 제공되며, 몇 가지 유용한 매개변수를 지원합니다.
- align_axis: 기본값은 1로, self와 other가 서로 다른 열에 나란히 표시됩니다. 0으로 설정하면 결과가 행 방향으로 쌓여 출력됩니다.
- keep_shape: True로 설정하면 원래 시리즈의 모든 행을 유지하며, 값이 동일한 요소는 NaN으로 채워집니다.
- keep_equal: True로 설정하면 값이 동일한 요소도 실제 값을 그대로 보여줍니다.
- result_names: 결과 열의 이름을 직접 지정할 수 있습니다. (pandas 1.5.0 이상)