inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

다양한 사례로 익히는 SQL 데이터 분석

작년 대비 동월 매출 비교 SQL로 구하기

SQL vs. Pandas

해결된 질문

2606

oleole

작성한 질문수 17

1

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

제 개인적인 생각으로는, 실제 업무에서는 방대한 양의 데이터가 들어있는 데이터베이스에 접근하여 뽑아내야하기 때문에 sql이 더 효율적일 것이라 생각됩니다. kaggle 같이 dataset 사이즈가 한번에 로딩이 가능할 경우에는 sql과 pandas 둘 다 써도 될 것 같다고 생각이 듭니다.

어떤 상황에서 sql과 pandas를 조화롭게 쓸 수 있을까요?

또 어떤 상황에서는 sql 혹은 pandas를 쓰는게 더 좋을까요?

좋은 강의 감사드립니다 :)

postgresql sql DBMS/RDBMS 데이터 엔지니어링 퍼포먼스 마케팅

답변 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