본문 바로가기
Python/Pandas

pandas dataframe PerformanceWarning 오류 해결하기

by PySun 2023. 11. 2.
반응형

"PerformanceWarning"은 Pandas 데이터프레임을 사용할 때 발생할 수 있는 성능 관련 경고입니다. 이 경고는 작업이 느릴 수 있는 구조적인 문제나 최적화 가능한 상황을 가리키며, 코드의 실행 속도나 메모리 사용을 최적화하기 위해 주의해야 합니다. 다음은 "PerformanceWarning"이 발생할 수 있는 상황과 해결 방법을 설명하겠습니다.

 

상황 1: 큰 데이터프레임을 출력하거나 표시할 때 경고 발생

import pandas as pd

# 큰 데이터프레임을 출력하거나 표시할 때 PerformanceWarning 발생 가능
data = {'A': range(1000000), 'B': range(1000000)}
df = pd.DataFrame(data)
print(df)

이 경우, 큰 데이터프레임을 출력하거나 표시할 때 성능 경고가 발생할 수 있습니다.

해결 방법 1: 일부 데이터만 표시

큰 데이터프레임을 모두 출력하는 대신, 필요한 일부 데이터만 표시하거나 필터링하여 성능을 향상시킬 수 있습니다.

print(df.head())  # 처음 몇 행만 표시

 

상황 2: 데이터프레임에 대규모 연산을 수행할 때 경고 발생

import pandas as pd

# 대규모 연산을 수행할 때 PerformanceWarning 발생 가능
data = {'A': range(1000000), 'B': range(1000000)}
df = pd.DataFrame(data)

# 대규모 연산 (예: 합계 계산)
total = df['A'].sum()

이 경우, 대규모 데이터프레임에 대한 연산을 수행할 때 성능 경고가 발생할 수 있습니다.

해결 방법 2: 최적화된 연산 사용

Pandas에서 성능을 최적화하기 위해 벡터화된 연산을 사용하면 대규모 데이터에 대한 연산을 효율적으로 수행할 수 있습니다.

total = df['A'].sum()  # 벡터화된 연산 사용

 

상황 3: 대용량 파일을 읽거나 쓸 때 경고 발생

import pandas as pd

# 대용량 파일을 읽거나 쓸 때 PerformanceWarning 발생 가능
df = pd.read_csv('large_file.csv')
df.to_csv('large_output.csv')

이 경우, 대용량 파일을 읽거나 쓸 때 성능 경고가 발생할 수 있습니다.

해결 방법 3: Chunk 나누기 또는 메모리 관리 대용량 파일을 처리할 때는 Chunk로 나누어 처리하거나 메모리 사용을 최적화하는 방법을 고려하세요.

# 대용량 파일을 Chunk로 나누어 읽기
chunk_size = 10000
chunks = pd.read_csv('large_file.csv', chunksize=chunk_size)
for chunk in chunks:
    # Chunk에 대한 처리 수행
    ...

# 메모리 관리를 위해 필요한 열만 선택하여 읽기
selected_columns = ['A', 'B']
df = pd.read_csv('large_file.csv', usecols=selected_columns)

 

"PerformanceWarning"을 해결하려면 데이터 처리 과정에서 최적화된 방법을 사용하고, 대용량 데이터에 대한 작업을 조심스럽게 수행하세요. 이렇게 하면 코드의 실행 속도와 메모리 사용을 최적화할 수 있습니다.

반응형