궁금증 연구소

코딩을 하다 보면 각종 연산자들 때문에 머리가 아프다.

언어를 하나만 다루면 그나마 좀 다행인데,

언어를 몇개를 하다 보면 언어마다 연산자를

미세하게 다르게 쓰기 때문에 헷갈릴 때마다 찾아보게 된다.

 

파이썬에서도 연산자가 있는데,

오늘 판다스 관련 예제를 풀다가 의문이 생겼다.

데이터는 아래와 같았다.

데이터

문제는 아래 링크 27번 문제였다. 그냥 간단하게 판다스 개념이나 API들을 점검하기 좋은 기본문제가 있다.

관심 있는 분들은 풀어보면 기본을 익히는데 도움이 될 듯하다.

https://www.datamanim.com/dataset/99_pandas/pandasMain.html

 

판다스 연습 튜토리얼 — DataManim

Question 43 df의 데이터 중 new_price값이 lst에 해당하는 경우의 데이터 프레임을 구하고 그 갯수를 출력하라 lst =[1.69, 2.39, 3.39, 4.45, 9.25, 10.98, 11.75, 16.98]

www.datamanim.com

 

아무튼, 본론으로 돌아와서 문제는 그냥

문제 27 : new_price값이 9 이하이고 item_name 값이 Chicken Salad Bowl 인 데이터 프레임을 추출하라

라는 간단한 index 문제인데, 처음에는

df[df.new_price <=9 and df.item_name == 'Chicken Salad Bowl'
 
 
라고 썼다가 에러를 뚜드려 맞았다... 😥
문제는 조건식을 갈호로 나누어 주어야 한다. 왜냐하면 다른 <= ,  == 연산자와의 순서를 정해주어야 하기 때문
 
 
df[(df.new_price <=9) and (df.item_name == 'Chicken Salad Bowl')]
 
 
갈호를 넣고 다시 시도....
또.. 에러를 뚜드려 맞았다... 😪 에러는 무섭다..
 
이번엔 오늘의 주제인 연산자 문제였다. and가 아니라 &를 쓰니 적용이 된다.
 
and 에러
& 오케이

그럼 and와 &는 머가 다를까..

인터넷에는 정리가 잘 된 글들이 많다.

 

http://pythonstudy.xyz/python/article/8-%EC%97% B0% EC%82% B0% EC% 9E%90

 

예제로 배우는 파이썬 프로그래밍 - 연산자

연산자 파이썬은 산술연산자, 비교연산자, 할당연산자, 논리연산자, Bitwise 연산자, 멤버쉽연산자, Identity연산자를 지원한다. 1. 산술연산자 산술연산자에는 (1) 사칙연산자 +, -, *, / 와 (2) 제곱을

pythonstudy.xyz

흠.. 이 글을 참조해서 추측해 볼 때, 

파이썬의 데이터프레임에서 쓰는 조건식에는 비트연산을 하는 것으로 보인다.

비트연산은 쉽게 말하면 컴퓨터의 숫자인 0과 1을 가지고 연산을 하는 것인데,

두 조건을 동시에 만족한다고 생각해서 논리연산자 and를 썼던 게, 에러폭력의 원인이었다.

 

판다스나 넘파이 같은 데이터를 다루는 파이썬의 프레임워크들은 C를 기반으로 만들어져 있다고 하는데,

그래서 조건식에도 비트연산자를 이용해서 조금 더 성능을 높인 것이 아닐까??

-_-; 어디까지나 나의 뇌피셜이다.. 혹시 더 정확한 이유를 아시는 분은 댓을 부탁드립니다.

 

그만 20000~ 😋😋

 

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading