[Q&A] SQL VS Pandas

2024. 2. 1. 02:34전처리/SQL

 

SQL vs. Pandas - 인프런 (inflearn.com)

 

SQL vs. Pandas - 인프런

jupyter notebook 상에서 EDA와 비슷한 작업을 하는 경우, pandas와 sql 둘 중에 어떤 것을 사용해서 데이터를 처리하고 분석하는 것이 더 효율적인지 궁금합니다.제 개인적인 생각으로는, 실제 업무에서

www.inflearn.com

 

출처입니다.

 

✏️일단 Pandas는 메모리를 넘는 데이터는 담을 수 없다는 제약 사항은 제외하고, 

 

01 SQL 이 편한 이유

 

1. 많은 테이블을 조인할 경우

- Pandas Join이 직관적이진 않다.

 

2. 여러 컬럼과 다양한 Aggregation을 적용한 Group by 를 많이 수행할 경우

- Pandas Group by 가 편하진 않다.

 

3. 복잡한 where 조건으로 filtering 해야 할 경우

- Pandas의 boolean indexing이 있지만, 거의 지저분한(?) 수준까지 탈탈 털어낼수 있는 필터링은 SQL 이 더 편하다.

 

4.  집합의 레벨을 변경하기가 상대적으로 더 수월.

- Groupby나 Groupby case when, distinct가  더 쉽다. 

 

5. 복잡한 데이터 가공일 경우 SQL이 더 직관적으로 코드 작성이 가능합니다. 

- Pandas의 경우 API를 나열하면서 여러 로직을 사용하면서 가공해야 하므로 절차적인 프로그래밍과 유사하게 코드를 이해해야 한다. 반면에 SQL은 직관적으로 하나의 SQL상에서 데이터 가공을 수행할 수 있으므로 좀 더 이해가 쉽다(개인 성향에 따라 의견이 다를 수 있음)

 

02 Pandas 가 편한 이유

 

1. 특정 컬럼값을 가공해서 새로운 컬럼값으로 만들거나, 기존 컬럼값을 새롭게 update하거나, 기존 컬럼값의 타입을 변경하는 경우가 빈번하게 많을 경우

- SQL은 create table이나 update를 컬럼별로 변경/추가 사항이 있을 때만 빈번하게 수행하기는 어렵다.

 

2. 분산, 표준편차, z-score 변환 등 다양한 통계 기반의 가공이 필요할 경우

- Pandas는 자체적으로 가지고 있는 통계 함수외에도 기존 파이썬의 과학/통계용 scify나 numpy 그리고 사이킷런의 함수와도 잘 호환되기 때문에 SQL Analytic으로도 커버할 수 없는 다양한 통계 기반의 가공이 가능하다.

 

3. 머신러닝/시각화 패키지와 바로 호환된다.

- 사이킷런이나 시본에서 바로 사용 가능하다.

 

4. 빠르다.

- 덕분에 여러가지 데이터 가공을 다양하게 수행해 볼 수 있다.

 

5. 프로그램적으로 For loop 를 돌려서 컬럼별 데이터를 확인하거나 가공할 수 있다.(개인 성향에 따라 의견이 다를 수 있음)

- 절차적인 스타일링 프로그램으로 데이터 가공 처리를 원하는 분에게는 적합 할 수 있습니다.