Pandas 데이터프레임에서 무한 값 삭제하기
다음은 pandas
, numpy
라이브러리를 사용하여 Pandas 데이터프레임에서 무한 값을 삭제하는 방법 몇 가지를 소개합니다.
isinf() 함수 사용:
import pandas as pd
import numpy as np
# 데이터프레임 생성
data = np.array([[-np.inf, 1, 2], [3, 4, np.inf], [5, 6, 7]])
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
# 무한 값 확인
print(df[df.isinf()])
# 무한 값을 포함하는 행 제거
df_filtered = df.drop(df[df.isinf().any(axis=1)].index)
# 결과 확인
print(df_filtered)
np.where() 함수 사용:
import pandas as pd
import numpy as np
# 데이터프레임 생성
data = np.array([[-np.inf, 1, 2], [3, 4, np.inf], [5, 6, 7]])
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
# 무한 값을 특정 값으로 변경
df_filtered = df.where(~df.isinf(), np.nan)
# 결과 확인
print(df_filtered)
dropna() 함수 사용:
import pandas as pd
import numpy as np
# 데이터프레임 생성
data = np.array([[-np.inf, 1, 2], [3, 4, np.inf], [5, 6, 7]])
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
# 무한 값을 포함하는 행 제거
df_filtered = df.dropna(how='any')
# 결과 확인
print(df_filtered)
주의 사항:
- 무한 값을 제거하기 전에 데이터의 특성을 이해하고 제거 후 결과에 미치는 영향을 고려해야 합니다.
- 특정 열만 무한 값을 제거하고 싶은 경우
axis=1
옵션을 사용할 수 있습니다. - 제거된 무한 값을 다른 값으로 대체하고 싶다면
fillna()
함수를 사용할 수 있습니다.
Pandas 데이터프레임에서 무한 값 삭제 예제 코드
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.rand(10, 3)
data[np.random.randint(0, 10, size=5)] = np.inf
# 데이터프레임 생성
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
# 무한 값 확인
print(df[df.isinf()])
# 무한 값 제거
df_filtered = df.drop(df[df.isinf().any(axis=1)].index)
# 결과 확인
print(df_filtered)
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.rand(10, 3)
data[np.random.randint(0, 10, size=5)] = np.inf
# 데이터프레임 생성
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
# 무한 값을 NaN으로 변경
df_filtered = df.where(~df.isinf(), np.nan)
# 결과 확인
print(df_filtered)
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.rand(10, 3)
data[np.random.randint(0, 10, size=5)] = np.inf
# 데이터프레임 생성
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
# 무한 값 제거
df_filtered = df.dropna(how='any')
# 결과 확인
print(df_filtered)
설명:
- 위 코드에서는 먼저
np.random.rand()
함수를 사용하여 난수 데이터를 생성합니다. - 그런 다음 일부 데이터를 무한 값(np.inf)으로 변경합니다.
- 데이터프레임을 생성하고
isinf()
,np.where()
,dropna()
함수를 사용하여 무한 값을 처리합니다. - 각 함수는 다르게 작동하지만, 모두 무한 값을 제거하거나 NaN 값으로 변경합니다.
- 마지막으로 결과 데이터프레임을 출력합니다.
주의:
- 이 코드는 예시이며, 실제 상황에 맞게 데이터 및 코드를 수정해야 합니다.
Pandas 데이터프레임에서 무한 값 삭제: 대체 방법
axis 옵션 사용:
앞서 소개한 방법들은 데이터프레임 전체에서 무한 값을 삭제하는 경우에 적합했습니다. 하지만 특정 열만 무한 값을 삭제하고 싶은 경우 axis
옵션을 사용할 수 있습니다.
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.rand(10, 3)
data[np.random.randint(0, 10, size=5)] = np.inf
# 데이터프레임 생성
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
# 특정 열에서 무한 값 제거 (열 'B' 제외)
df_filtered = df.dropna(axis=1, how='any', subset=['A', 'C'])
# 결과 확인
print(df_filtered)
inplace 옵션 사용:
inplace
옵션을 사용하면 기존 데이터프레임을 수정하여 결과를 저장할 수 있습니다.
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.rand(10, 3)
data[np.random.randint(0, 10, size=5)] = np.inf
# 데이터프레임 생성
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
# 기존 데이터프레임 수정 (inplace=True)
df.dropna(how='any', subset=['A', 'C'], inplace=True)
# 결과 확인
print(df)
lambda 함수 사용:
lambda
함수를 사용하여 더욱 복잡한 조건으로 무한 값을 삭제할 수 있습니다.
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.rand(10, 3)
data[np.random.randint(0, 10, size=5)] = np.inf
# 데이터프레임 생성
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
# 특정 조건에 따라 무한 값 제거 (A > 0.5인 경우만 유지)
def g(x):
return x['A'] > 0.5
df_filtered = df.dropna(how='any', subset=['A', 'C'], filter=g)
# 결과 확인
print(df_filtered)
Iterable 사용:
무한 값이 포함된 행의 인덱스를 Iterable
로 직접 전달하여 삭제할 수도 있습니다.
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.rand(10, 3)
data[np.random.randint(0, 10, size=5)] = np.inf
# 데이터프레임 생성
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
# 무한 값이 포함된 행 인덱스 추출
rows_to_drop = df[df.isinf().any(axis=1)].index
# 특정 행 제거
df_filtered = df.drop(rows_to_drop)
# 결과 확인
print(df_filtered)
결론
Pandas 데이터프레임에서 무한 값을 삭제하는 방법은 여러 가지가 있습니다. 상황에 맞는 방법을 선택하여 데이터를 정제하고 분석에 활용하세요.
isinf()
함수: 무한 값 여부를 확인하여 제거np.where()
함수: 무한 값을 특정 값으로 변경dropna()
함수: 무한 값을 포함하는 행 제거axis
옵션: 특정 열만 무한 값 제거inplace
옵션: 기존 데이터프레임 수정lambda
함수: 복잡한 조건으로 무한 값 제거Iterable
: 무한 값이 포함된 행 인덱스 직접 전달
python pandas numpy