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

[pandas] 판다스의 KeyError 강의 (2)

by 김판다t 2024. 2. 23.

 

판다스의 KeyError는 99%의 경우 데이터 프레임에 해당 열이 없기 때문에 발생합니다.
그리고 이 글을 읽는 여러분도 99%에 해당할 것입니다.
그래서 이 시리즈를 다 읽으시면 대부분은 본인의 에러를 해결하실 수 있을 겁니다.

 

 

 

판다스의 KeyError 시리즈

 

판다스의 KeyError (1) : KeyError 기본편

판다스의 KeyError (2) : 판다스의 코드를 chain method로 사용할 때의 KeyError 이번 포스팅  


 

1편에서 마법의 주문 print(df.columns) 코드로 대부분의 KeyError를 해결하셨을 테지만,

 

chain method를 사용했을 때는 위 방식으로 확인은 어렵습니다.

 

2편에서는 chain method로 코드를 사용할 때 확인하는 방법을 알려 드리겠습니다.

 

 

예제:

 

import pandas as pd
data1 = {'이름': ['김판다', '김판다', '강승주', '강승주', '조민영'], 
         '종목': ['판다전자', '파이닉스', '판다전자', '스택', '사이킥런'],
         '보유량': [10, 20, 30, 40, 50]}
data2 = {'종목': ['판다전자', '파이닉스', '넘파이', '사이킷런', '스택'], 
         ' 주가': [50000, 30000, 1000000, 60000, 30000]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

 

 

 

 

 

 

df1과 df2를 vlookup 방식으로 병합한 뒤, 주가 열로 정렬도 하고, 보유량 열의 이름을 보유을 바꾸겠습니다.

 

세 가지 작업을 수행하는데 아래와 같이 chain method로 수행하겠습니다

 

 

df1.merge(df2, how='left').sort_values('주가').rename({'보유량': '보유'}, axis=1)

 

 

 

KeyError: '주가'

 

 

 

 

 

이번에도 KeyError가 발생합니다.

 

에러가 발생된 위치를 확인합니다.

 

 

 

 

 

 

이번에도 마법의 주문이 있습니다.

 

에러가 발생한 위치의 이전 코드만 분리해서 columns를 print 해보세요!

 

 

에러 발생 이전 코드만 분리해 columns 속성을 적용하고 print한다.

 

 

예시의 코드에서는

 

df1.merge(df2, how='left') 코드에 columns 속성을 적용하고 전체를 print하는 코드를 작성해

 

에러가 난 코드의 윗 행에 삽입하면 됩니다.

 

그러면 에러 직전의 데이터 프레임이 가지고 있는 열을 확인할 수 있습니다.

 

print(df1.merge(df2, how='left').columns) # 에러 발생 앞부분 코드에 columns 적용하고 print
df1.merge(df2, how='left').sort_values('주가').rename({'보유량': '보유'}, axis=1) # 기존코드

 

 

이는 sort_values 함수를 적용할 때  '주가' 열이 없어서 에러를 발생시켰기 때문에, 

 

sort_values 함수 적용 전에는 과연 '주가' 열이 존재하는지 확인하는 것입니다.

 

 

그러면 이번에도  '주가' 열은 없고 빈칸이 있는 '  주가' 열을 가지고 있기에 발생한 에러라는 것을 확인할 수 있습니다.

 

df1.merge(df2, how='left') 의 결과는 '주가' 열은 없고 빈칸이 있는 '  주가' 열만 가지고 있습니다.

 

 

 

 

이렇게 KeyError는 쉽게 확인할 수 있습니다.

 

 

잊지 마세요!

KeyError = 열이 없다.

믿으세요!

KeyError = 열이 없다.

 

 

 

열이 없다는 것을 받아들이시기만 하면 쉽게 에러를 찾을 수 있습니다.

 

KeyError를 해결 못하는 가장 큰 이유는

열이 없다고 에러 메세지로 알려주지만, 해당 열은 분명히 존재한다고 생각하는 잘못된 믿음입니다.

 

그래서 그 잘못된 믿음을 깨기 위해 print 함수로 육안으로 확인시켜 주는 것입니다.

 

사실 해당 열이 존재하지 않는다는 것을 받아들인 분들은 print 함수로 확인할 필요가 없습니다.

 

잘못된 믿음을 가진 분들이 너무 많기 때문에, 그 분들을 설득하기 위해 print 함수가 필요한 것입니다.

 

 

KeyError는 알기만 하면 쉽게 해결이 가능합니다

 

이제 KeyError에 고통받지 말고 잘 해결하세요!

 

 


 

판다스의 KeyError 시리즈

 

판다스의 KeyError (1) : KeyError 기본편

판다스의 KeyError (2) : 판다스의 코드를 chain method로 사용할 때의 KeyError  이번 포스팅  

 

 

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

 

 

 

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

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