brunch

You can make anything
by writing

C.S.Lewis

by 유윤식 Jun 16. 2024

Python: DuckDB(4)

#DB_API #맘대로SQL #쓰던대로SQL

DB 처럼 사용하기.


이번엔 WITH 도 사용해보고

MONTH, COUNT, ARRAY_AGG, STRFTIME, RANK OVER PARTITION, GROUP BY ALL

등등을 SQL 문장에서 이용해본다.


자세한 설명은 DuckDB Blog 에서 확인할 수 있다.


예제는 Rail Service 관련 open dataset 을 활용하고 있는데

2023년 데이터를 통으로 주는 듯 하다.


먼저 데이터를 내려 받음과 동시에 테이블을 생성하고,

데이터가 몇 개 인지?

데이터 컬럼 구조가 어떤지?

를 확인해 본다.


이러면 일단 테이블이 만들어 졌고 railway_tbl 을 이용해서 컬럼과 데이터 갯수를 확인 할 수 있다.


con.execute() 를 사용해도 좋고

con.sql() 을 이용해도 좋은데




데이터가 꽤 많은 것으로 보이지만 컬럼 갯수는 크지 않기 때문에 메모리 용량에 큰 문제는 없었다.


이 데이터에서 확인해 보려는 사항은

'각 월별로 가장 많이 이용되는 STATION을 TOP3로 보여주기' 이다.


이걸 SQL 로 옮겨놓은 것을 확인해보니

재미있는 콘텐츠를 직접 실습해보고 소개할 수 있어서 기쁘다.


SQL 이 더 익숙한 사람들에게는 Relational API 보다 매력이 있는 부분이 존재한다.

참고로 이걸 Pandas 에서 읽어들이려고 하면 메모리가 감당을 못하고 쥬피터 커널이 계속 죽는 현상이 관찰된다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari