반응형
02-07. 차이[이산] (diff)
DataFrame.diff(periods=1, axis=0)
개요
diff는 한 객체 내에서 열과 열 / 행과 행의 차이를 출력하는 메서드 입니다.
사용법
기본 사용법
※ 자세한 내용을 아래 예시를 참고 바랍니다.
df.diff(periods=1, axis=0)
axis : 비교할 축을 지정합니다. axis=0 인 경우 행끼리 비교하고 axis=1인 경우 열 끼리 비교합니다.
periods : 비교할 간격을 지정합니다. 기본은 +1로 바로 이전 값과 비교합니다.
반응형
예시
먼저 기본적인 사용법 예시를 위해 8x3짜리 객체를 생성하겠습니다.
a = [1,2,3,4,5,6,7,8]
b = [1,2,4,8,16,32,64,128]
c = [8,7,6,5,4,3,2,1]
data = {"col1":a,"col2":b,"col3":c}
df = pd.DataFrame(data)
print(df)
>>
col1 col2 col3
0 1 1 8
1 2 2 7
2 3 4 6
3 4 8 5
4 5 16 4
5 6 32 3
6 7 64 2
7 8 128 1
기본적인 사용법
axis에 따라서 행끼리 비교할지, 열 끼리 비교할지 정할 수 있습니다.
axis=0인 경우 행 - 바로전 행 의 값을 출력합니다. 비교할 값이 없다면 NaN을 출력합니다.
print(df.diff(axis=0))
>>
col1 col2 col3
0 NaN NaN NaN # 뺄 바로 전 행이 없으므로 NaN
1 1.0 1.0 -1.0 # 1행 - 0행
2 1.0 2.0 -1.0 # 2행 - 1행
3 1.0 4.0 -1.0 # ...
4 1.0 8.0 -1.0
5 1.0 16.0 -1.0
6 1.0 32.0 -1.0
7 1.0 64.0 -1.0 # 7행 - 6행
axis=1인 경우 열 - 바로전 열의 값을 출력합니다. 비교할 값이 없다면 NaN을 출력합니다.
print(df.diff(axis=1))
>>
col1 col2 col3 # col1은 뺄 이전 열이 없으므로 NaN출력
0 NaN 0 7 # col2 의 값은 기존 data의 col2 - col1
1 NaN 0 5 # col3 의 값은 기존 data의 col3 - col2
2 NaN 1 2
3 NaN 4 -3
4 NaN 11 -12
5 NaN 26 -29
6 NaN 57 -62
7 NaN 120 -127
periods의 사용
periods의 경우 기본값은 +1로 +1인 경우 바로 이전 값과의 차를 출력합니다.
+3인 경우 3칸 이전 값과 비교하고 -2인 경우 2칸 후의 값과 비교하게 됩니다.
print(df.diff(periods=3))
>>
col1 col2 col3
0 NaN NaN NaN #3칸 이전 값이 없으므로 NaN
1 NaN NaN NaN # ' '
2 NaN NaN NaN # ' '
3 3.0 7.0 -3.0 # 열3 - 열0의 값 출력
4 3.0 14.0 -3.0
5 3.0 28.0 -3.0
6 3.0 56.0 -3.0
7 3.0 112.0 -3.0 # 열7 - 열4의 값 출력
print(df.diff(periods=-2))
>>
col1 col2 col3
0 -2.0 -3.0 2.0 #열0 - 열2의 값 (마이너스이므로 뒤의값으로 계산)
1 -2.0 -6.0 2.0
2 -2.0 -12.0 2.0
3 -2.0 -24.0 2.0
4 -2.0 -48.0 2.0
5 -2.0 -96.0 2.0 # 열5 - 열7의 값
6 NaN NaN NaN # 2칸 뒤의 값이 없으므로 NaN
7 NaN NaN NaN # ' '
반응형
'파이썬완전정복-Pandas DataFrame > 02. 객체내 연산' 카테고리의 다른 글
Pandas DataFrame 02-09. 누적 계산 (expanding) (0) | 2022.01.11 |
---|---|
Pandas DataFrame 02-08. 차이[백분률] (pct_change) (0) | 2022.01.09 |
Pandas DataFrame 02-06. 순위 (rank) (0) | 2022.01.09 |
Pandas DataFrame 02-05. 전치 (transpose, T) (0) | 2022.01.09 |
Pandas DataFrame 02-04. 절대값 (abs) (0) | 2022.01.09 |