오랜만이에요~ 요즘 회사일이 바빠서 오랜만에 포스팅하네요. 이번 포스팅에서는 Pandas 데이터프레임에서 특정 칼럼의 값을 다른 값으로 채워 넣는 방법을 알아보려고 합니다. 이 부분은 Null 또는 결측값을 다른 값으로 대체할 때, 칼럼 데이터를 수정할 때 많이 사용합니다.
여기서는 아래의 내용을 다루고자합니다.
1. 결측값을 다른 값으로 채워 넣기
1) 결측값을 하나의 값으로 대체하기
먼저 데이터프레임에서 결측치를 대체하는 방법에 대해서는 여기에 자세히 포스팅해두었으니 참고하세요~
여기서는 특정 칼럼의 결측치를 다른 값으로 채워 넣는 방법을 알아보려고 합니다. 먼저 이번 포스팅에서 사용할 데이터를 만들어 줍니다.
import pandas as pd
import numpy as np
data = {
'A' : [1,2,np.nan, np.nan, 7, 7],
'B' : ['a','b','c','d','e','f']
}
df = pd.DataFrame(data)
보시는 바와 같이 A칼럼에 두 개의 결측치가 포함되어 있습니다. 이를 숫자 '3'으로 수정해보겠습니다. Pandas에서는 칼럼 하나를 Series라는 객체로 처리하며 Series 객체에는 fillna 메서드가 있어서 이를 이용하면 결측값을 대체할 수 있습니다.
df['A'] = df['A'].fillna(3)
코드를 수행하면 결측값이 3으로 대체된 것을 알 수 있습니다.
2) 결측값을 다른 칼럼의 값으로 대체하기
fillna 메서드는 결측값을 특정값으로 수정할 할뿐만 아니라 다른 칼럼에 있는 값으로 대체할 수 있습니다. 방법은 간단합니다. fillna에 대체해줄 칼럼데이터를 넣어주면되지요. 아래 코드는 A 칼럼의 결측값을 B 칼럼의 같은 행에 있는 값으로 대체합니다.
df['A'] = df['A'].fillna(df['B'])
3) 응용하기
여기에서는 위에서 배운 것을 응용해보겠습니다. 아래의 데이터가 있다고 가정해볼게요.
data = {
'STRING' : ['h','r','r', np.nan, np.nan, np.nan],
'NUMBER' : [np.nan, np.nan, np.nan,1, 2, 3]
}
df = pd.DataFrame(data)
데이터를 보시면 두 개의 칼럼이 있고 어느 한쪽의 값이 있다면 다른 쪽에는 결측값으로 이루어진 것을 알 수 있습니다. 꽁냥이는 이 2개의 칼럼의 결측값을 없애고 하나로 합친 VALUE라는 칼럼을 만들어보려고 합니다. 여러 가지 방법이 있겠지만 fillna를 이용하면 아래와 같이 쉽게 해결할 수 있습니다.
df['VALUE'] = df['STRING'].fillna(df['NUMBER'])
2. 특정 값을 다른 값으로 채워 넣기
데이터 전처리를 하다 보면 결측값뿐만 아니라 특정 값을 다른 값으로 대체해야 할 경우가 있습니다. 다른 방법이 많이 있겠지만 여기에서는 Numpy에서 제공하는 where함수를 이용하여 해결해보겠습니다.
1) 특정 값을 하나의 값으로 대체하기
먼저 예제용 데이터를 만들어 줍니다.
data = {
'A' : [1,2,3, 4, 7, 7],
'B' : ['a','b','a','d','e','f']
}
df = pd.DataFrame(data)
꽁냥이는 B칼럼에서 'a'를 'aa'로 바꾸고 싶어요. 이를 위해 np.where 함수를 사용합니다. 사용방법은 다음과 같습니다.
np.where(조건식, 바꿀 문자열(또는 칼럼), 대상 칼럼)
이를 토대로 B칼럼을 바꾸는 코드는 아래와 같이 쓸 수 있습니다.
df['B'] = np.where(df['B'] == 'a', 'aa', df['B'])
코드를 실행하면 'a'가 'aa'로 바뀐 것을 알 수 있습니다.
2) 특정 값을 다른 칼럼의 값으로 대체하기
이번에는 B 칼럼의 'a'를 A 칼럼의 값으로 대체해보겠습니다. 방법은 위에서 보았던 것과 비슷합니다. 바꿔줄 문자열 대신 바꿔줄 칼럼 데이터를 2번째 인자로 넣어주면 됩니다.
df['B'] = np.where(df['B'] == 'a', df['A'], df['B'])
코드를 실행하면 B 칼럼의 값이 잘 바뀐 것을 알 수 있습니다.
이번 포스팅에서는 한 칼럼에서 특정 값을 다른 값으로 바꾸는 방법에 대해서 알아보았습니다. 데이터 전처리에 많이 활용되는 부분이니 알아두시면 매우 유용할 거라 생각합니다. 다음 포스팅에서도 유익한 내용으로 찾아뵐 것을 알려드리며 마치겠습니다. 지금까지 꽁냥이의 글 읽어주셔서 감사합니다.
참고자료
'데이터 분석 > 데이터 전처리' 카테고리의 다른 글
[Numpy] 3. 배열 연산(Operation) (857) | 2021.09.21 |
---|---|
[Numpy] 1. Numpy 배열 생성하기 (814) | 2021.09.20 |
[Pandas] 20. Pandas Combine을 이용하여 데이터 업데이트/덮어쓰기 (834) | 2021.06.16 |
[Pandas Tip] 1. Pandas Tip (1135) | 2021.05.27 |
[Pandas] 19. concat vs append 성능 차이 알아보기 (1476) | 2021.05.20 |
댓글