본문 바로가기
판다스/판다스 에러 강의

[pandas] AttributeError 강의 (3) - 함수에서 발생한 경우

by 김판다t 2024. 2. 21.

 

대부분의 AttributeError는 에러 메세지만 읽을 줄 알면 해결이 됩니다.

 

 

판다스에서 발생하는 AttributeError는 크게 세 가지 종류가 있습니다.

 

1. 모듈(module)에서 발생한 경우

2. 객체(object)에서 발생하는 경우

3. 함수(function)에서 발생하는 경우     ← 이번 포스팅

 

세 종류의 에러는 에러 메세지로 구분할 수 있습니다.

 


 

이번 포스팅은 객체 중 함수에서 AttributeError가 발생한 경우입니다. 

 

예시

 

에러가 발생하는 코드의 예시를 볼게요

# 실습 예제 코드
import pandas as pd
data = {'제품': ['A', 'B', 'B', 'A', 'C', 'A'], 
        '판매량': [10, 20, 30, 40, 50, 60]}
df = pd.DataFrame(data)

 

df:

 

위 df에서 아래와 같은 코드를 사용하면 에러가 발생합니다.

df['판매량'].cumsum.add(10)
AttributeError: 'function' object has no attribute 'add'

 

해석 : 'function' 객체에는 'add' 라는 속성이 없기 때문에 발생하는 오류입니다.

 

에러 메세지에서 알려준 속성(attribute)  'add' 코드에서 찾으세요.

 

 

코드에서 찾았습니다. cumsum.add이라고 되어 있습니다.

결국 에러 메세지는 cumsum에 add라는 attribute가 존재하지 않는다는 이야기입니다.

cumsum이 함수(function) 객체이기에 'function' object has no attribute 'add' 라고 알려준 것이지요.

 

일반적으로 체인 메서드(chain method)를 사용시 괄호를 빠뜨렸을 때 발생하는 에러입니다.

위 예시에서 cumsum 함수에 괄호를 빠뜨렸기에, 적용 결과가 함수(메서드)가 되고

시리즈에 add 메서드를 써야 하는데,  함수에 다시 add 메서드를 썼으니 에러가 발생하는 것입니다.

 

cumsum 함수에 괄호를 챙겨 주면 에러가 해결됩니다.

df['판매량'].cumsum().add(10)
0     20
1     40
2     70
3    110
4    160
5    220
Name: 판매량, dtype: int64

 

 

요약하면 객체 중 함수에 Attribute 에러가 발생하면, 소괄호를 빠뜨린 경우가 대부분입니다.

 

 

다른 AttributeError 강의도 참고하세요.

1. 모듈(module)에서 발생한 경우

2. 객체(object)에서 발생하는 경우

3. 함수(function)에서 발생하는 경우     ← 이번 포스팅

 


교보문고 구매 페이지, 알라딘 구매 페이지yes24 구매 페이지

 

 



유튜브에서 판다스 강의 중입니다.

https://www.youtube.com/@KimPandas