반응형

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 # ' '
반응형

+ 최근 글