SQL vs. Pandas
jupyter notebook 상에서 EDA와 비슷한 작업을 하는 경우, pandas와 sql 둘 중에 어떤 것을 사용해서 데이터를 처리하고 분석하는 것이 더 효율적인지 궁금합니다.
제 개인적인 생각으로는, 실제 업무에서는 방대한 양의 데이터가 들어있는 데이터베이스에 접근하여 뽑아내야하기 때문에 sql이 더 효율적일 것이라 생각됩니다. kaggle 같이 dataset 사이즈가 한번에 로딩이 가능할 경우에는 sql과 pandas 둘 다 써도 될 것 같다고 생각이 듭니다.
어떤 상황에서 sql과 pandas를 조화롭게 쓸 수 있을까요?
또 어떤 상황에서는 sql 혹은 pandas를 쓰는게 더 좋을까요?
좋은 강의 감사드립니다 :)
답변 1
6
안녕하십니까,
일단 Pandas는 메모리를 넘는 데이터는 담을 수 없다는 제약사항은 제외하고,
SQL 이 편한 사항을 개인적으로 말씀 드리면
1. 많은 테이블을 조인할 경우
- 판다스 Join이 직관적이진 않습니다.
2. 여러 컬럼과 다양한 Aggregation을 적용한 Group by 를 많이 수행할 경우
- 판다스 Group by 가 편하진 않습니다.
3. 복잡한 where 조건으로 filtering 해야 할 경우
- 판다스의 boolean indexing이 있지만, 거의 지저분한(?) 수준까지 탈탈 털어낼수 있는 필터링은 SQL 이 더 편함.
4. 집합의 레벨을 변경하기가 상대적으로 더 수월.
- Groupby나 Groupby case when, distinct가 더 쉽습니다.
5. 복잡한 데이터 가공일 경우 SQL이 더 직관적으로 코드 작성이 가능합니다.
- 판다스의 경우 API를 나열하면서 여러 로직을 사용하면서 가공해야 하므로 절차적인 프로그래밍과 유사하게 코드를 이해해야 합니다 반면에 SQL은 직관적으로 하나의 SQL상에서 데이터 가공을 수행할 수 있으므로 좀 더 이해가 쉽습니다( 해당 부분은 개인적인 성향에 따라 의견이 다를 수 있습니다)
그리고 판다스가 편한 사항을 말씀 드리면
1. 특정 컬럼값을 가공해서 새로운 컬럼값으로 만들거나, 기존 컬럼값을 새롭게 update하거나, 기존 컬럼값의 타입을 변경하는 경우가 빈번하게 많을 경우
- SQL은 create table이나 update를 컬럼별로 변경/추가 사항이 있을 때만 빈번하게 수행하기는 어렵습니다.
2. 분산, 표준편차, z-score 변환 등 다양한 통계 기반의 가공이 필요할 경우
- 판다스는 자체적으로 가지고 있는 통계 함수외에도 기존 파이썬의 과학/통계용 scify나 numpy 그리고 사이킷런의 함수와도 잘 호환되기 때문에 SQL Analytic으로도 커버할 수 없는 다양한 통계 기반의 가공이 가능함
3. 머신러닝/시각화 패키지와 바로 호환됨.
사이킷런이나 시본에서 바로 사용 가능함.
4. 빠릅니다.
- 덕분에 여러가지 데이터 가공을 다양하게 수행해 볼 수 있습니다.
5. 프로그램적으로 For loop 를 돌려서 컬럼별 데이터를 확인하거나 가공할 수 있습니다(개인 성향에 따라 이부분의 의견이 갈릴수도 있습니다.)
절차적인 스타일링 프로그램으로 데이터 가공 처리를 원하는 분에게는 적합 할 수 있습니다.
감사합니다.
"주문별 고객별 연관 상품 추출 SQL로 구하기-02" 수업 질문
0
52
2
쿼리 질문있습니다!!
0
49
2
없는강의요청해도됩니까,,
0
90
2
아래와 동일한 질문에 대한 추가질문입니다
0
70
2
cnt/max로 구한 결과의 차이
0
100
2
쿼리에 대한 질문이 있습니다.
0
116
2
퍼널 질문드립니다.
0
112
1
ADSP자격증
0
282
2
특정 스키마에서 생성한 편집기의 쿼리를 판다스에 삽입하는 방법
0
161
1
백업파일 테이블 생성 오류
0
235
1
"사용자별 특정 상품 주문시 함께 가장 많이 주문된 다른 상품 추출하기"에서 조건관련..
0
161
1
Plotly을 이용해 treemap시각화시 공유사항
0
277
2
월단위 카테고리별 매출액과 주문건수 및 전체매출액 대비 비율 sql로 구하기 수업 중 질문이 있습니다.
0
248
1
with 절 질문
0
240
1
데이터 분석 SQL Fundamentals 강의 할인 문의
0
215
1
리텐션 구하는 방법 문의
0
215
1
캐글데이터 Postgresql 사용
0
355
2
mau 구할때 group by 사용안해도 count 집계함수가 왜 가능한지 모르겠습니다.
0
262
1
매출분석 1에서 partition by와 group by의 차이
0
355
1
postgres 설치 오류
0
318
1
맥 계정에서 postgres 접속 시 비밀번호 입력 실패현상
1
542
2
pandas 연계시 오류.....
0
1242
3
시각화 그래프가 안보여요
0
299
1
ntile 정규분포에 관하여 ... 향후 일을 하게 될 시
0
358
1





