누락된 데이터를 제거하는 법 | NaN 값을 포함하는 행 제거하기
Table of Contents:
- 개요
- 팬더스 데이터프레임에서 NaN 값을 포함하는 행 제거하기
- 데이터프레임을 생성하고 출력하기
- 모든 NaN 값을 포함하는 행 제거하기
- 특정 열에서 NaN 값을 포함하는 행 제거하기
- 열의 값 중 NaN이 아닌 값만 남기기
- 모든 값이 NaN인 행 제거하기
- 특정 개수의 NaN이 아닌 값이 있는 행만 남기기
- 판다스의 dropna() 함수 대신 notna() 함수 사용하기
- 판다스의 dropna() 함수 대신 notnull() 함수 사용하기
📦 팬더스 데이터프레임에서 NaN 값을 포함하는 행 제거하기
판다스(Pandas)는 파이썬 프로그래밍 언어에서 데이터 조작과 분석을 위한 유용한 라이브러리입니다. 팬더스를 사용하면 데이터프레임에서 NaN 값을 포함하는 행을 제거할 수 있습니다. 이번 글에서는 NaN 값을 제거하는 다양한 방법을 알아보겠습니다.
1. 개요
데이터프레임은 행과 열로 구성된 테이블 형태의 데이터 구조입니다. 데이터프레임에는 NaN(Not a Number) 값이 포함될 수 있습니다. NaN 값은 결측치를 나타내거나 데이터가 없음을 의미합니다. 때로는 NaN 값을 포함하는 행을 제거하여 데이터를 정리해야 하는 경우가 있습니다.
2. 팬더스 데이터프레임을 생성하고 출력하기
먼저, 예시로 사용할 데이터프레임을 생성해 보겠습니다. 아래의 코드를 실행하면 데이터프레임 'Data'가 생성되고, 이를 출력할 수 있습니다.
import pandas as pd
data = pd.DataFrame({'X1': [1, 2, 3, np.nan, 5],
'X2': [6, 7, np.nan, np.nan, 10],
'X3': [11, 12, 13, 14, 15]})
print(data)
위의 코드를 실행하면, 다음과 같은 데이터프레임이 생성됩니다.
X1 |
X2 |
X3 |
1.0 |
6.0 |
11 |
2.0 |
7.0 |
12 |
3.0 |
NaN |
13 |
NaN |
NaN |
14 |
5.0 |
10.0 |
15 |
3. 모든 NaN 값을 포함하는 행 제거하기
데이터프레임에서 NaN 값을 포함하는 모든 행을 제거하려면 dropna()
함수를 사용하면 됩니다. 다음의 코드를 실행하여 NaN 값을 포함하는 행을 제거한 새로운 데이터프레임 'data1'을 생성해 보겠습니다.
data1 = data.dropna()
print(data1)
위의 코드를 실행하면, NaN 값을 포함하는 행이 모두 제거된 결과가 출력됩니다.
X1 |
X2 |
X3 |
1.0 |
6.0 |
11 |
2.0 |
7.0 |
12 |
4. 특정 열에서 NaN 값을 포함하는 행 제거하기
특정 열에서 NaN 값을 포함하는 행만 제거하려면 dropna()
함수의 subset
매개변수를 사용하면 됩니다. 다음의 코드를 실행하여 'X2' 열에서 NaN 값을 포함하는 행만 제거한 새로운 데이터프레임 'data2a'을 생성해 보겠습니다.
data2a = data.dropna(subset=['X2'])
print(data2a)
위의 코드를 실행하면, 'X2' 열에서 NaN 값을 포함하는 행이 제거된 결과가 출력됩니다.
X1 |
X2 |
X3 |
1.0 |
6.0 |
11 |
2.0 |
7.0 |
12 |
5.0 |
10.0 |
15 |
5. 열의 값 중 NaN이 아닌 값만 남기기
NaN이 아닌 값만 남기려면 notna()
함수를 사용하면 됩니다. 다음의 코드를 실행하여 'X2' 열의 NaN이 아닌 값만 남긴 새로운 데이터프레임 'data2b'을 생성해 보겠습니다.
data2b = data[data['X2'].notna()]
print(data2b)
위의 코드를 실행하면, 'X2' 열의 NaN이 아닌 값만 남은 결과가 출력됩니다.
X1 |
X2 |
X3 |
1.0 |
6.0 |
11 |
2.0 |
7.0 |
12 |
5.0 |
10.0 |
15 |
6. 모든 값이 NaN인 행 제거하기
모든 값을 NaN으로 가지는 행만 제거하려면 dropna()
함수의 how
매개변수를 'all'로 설정하면 됩니다. 다음의 코드를 실행하여 모든 값을 NaN으로 가지는 행만 제거한 새로운 데이터프레임 'data3'을 생성해 보겠습니다.
data3 = data.dropna(how='all')
print(data3)
위의 코드를 실행하면, 모든 값을 NaN으로 가지는 행이 제거된 결과가 출력됩니다.
X1 |
X2 |
X3 |
1.0 |
6.0 |
11 |
2.0 |
7.0 |
12 |
3.0 |
NaN |
13 |
NaN |
NaN |
14 |
5.0 |
10.0 |
15 |
7. 특정 개수의 NaN이 아닌 값이 있는 행만 남기기
특정 개수의 NaN이 아닌 값이 있는 행만 남기려면 dropna()
함수의 thresh
매개변수를 설정하면 됩니다. 다음의 코드를 실행하여 최소 두 개의 NaN이 아닌 값이 있는 행만 남긴 새로운 데이터프레임 'data4'을 생성해 보겠습니다.
data4 = data.dropna(thresh=2)
print(data4)
위의 코드를 실행하면, 최소 두 개의 NaN이 아닌 값이 있는 행만 남은 결과가 출력됩니다.
X1 |
X2 |
X3 |
1.0 |
6.0 |
11 |
2.0 |
7.0 |
12 |
3.0 |
NaN |
13 |
5.0 |
10.0 |
15 |
8. 판다스의 dropna() 함수 대신 notna() 함수 사용하기
dropna()
함수 대신 notna()
함수를 사용하여 NaN 값을 포함하는 행을 제거할 수도 있습니다. 아래의 코드를 실행하여 notna()
함수를 사용해 'X2' 열에서 NaN 값을 포함하는 행만 제거한 새로운 데이터프레임을 생성해 보겠습니다.
data2c = data[data['X2'].notna()]
print(data2c)
위의 코드를 실행하면, notna()
함수를 사용하여 'X2' 열의 NaN 값을 포함하는 행이 제거된 결과가 출력됩니다.
X1 |
X2 |
X3 |
1.0 |
6.0 |
11 |
2.0 |
7.0 |
12 |
5.0 |
10.0 |
15 |
9. 판다스의 dropna() 함수 대신 notnull() 함수 사용하기
dropna()
함수 대신 notnull()
함수를 사용하여 NaN 값을 포함하는 행을 제거할 수도 있습니다. 아래의 코드를 실행하여 notnull()
함수를 사용해 모든 값이 NaN이 아닌 행만 남긴 새로운 데이터프레임을 생성해 보겠습니다.
data5 = data[data.notnull().all(axis=1)]
print(data5)
위의 코드를 실행하면, notnull()
함수를 사용하여 모든 값이 NaN이 아닌 행만 남은 결과가 출력됩니다.
X1 |
X2 |
X3 |
1.0 |
6.0 |
11 |
2.0 |
7.0 |
12 |
3.0 |
NaN |
13 |
NaN |
NaN |
14 |
5.0 |
10.0 |
15 |
10. FAQ (자주 묻는 질문)
Q1. 데이터프레임에서 NaN 값을 포함하는 행을 제거하려면 어떻게 해야 할까요?
- A1.
dropna()
함수를 사용하면 NaN 값을 포함하는 행을 제거할 수 있습니다. dropna()
함수에 subset
매개변수를 사용하여 특정 열에서 NaN 값을 제거할 수도 있습니다.
Q2. 특정 개수의 NaN이 아닌 값이 있는 행만 남기려면 어떻게 해야 할까요?
- A2.
dropna()
함수의 thresh
매개변수에 최소로 유지하려는 NaN이 아닌 값의 개수를 지정하면 됩니다.
Q3. dropna()
함수 대신 notna()
함수나 notnull()
함수를 사용할 수도 있는 건가요?
- A3. 네,
dropna()
함수 대신 notna()
함수나 notnull()
함수를 사용하여 NaN 값을 포함하는 행을 제거할 수 있습니다. 이 두 가지 함수는 동일한 결과를 제공합니다.
본 글은 판다스 데이터프레임에서 NaN 값을 포함하는 행을 제거하기 위한 다양한 방법을 알려드렸습니다. 더 자세한 내용을 알고 싶다면 저의 홈페이지 statisticsglobe.com에서 해당 주제에 대한 자습서를 확인해 보세요. 다른 궁금한 사항이 있다면 아래 댓글란에 남겨주세요. 감사합니다!
자원: