Python에서 데이터를 다룰 때 필수적인 라이브러리인 Pandas를 소개합니다.
이제 막 데이터를 다루기 시작한 분들을 대상으로 작성해봤습니다.
1. Pandas란?
데이터로 일하는 사람들은 데이터를 어떻게 다룰까요? 데이터를 다루는 방법에도 여러가지 방법이 있습니다.
가장 간단하게는 우리가 자주 접하는 엑셀을 통해서 데이터를 편집하기도 하고요, DB에 직접 접근해서 데이터를 가져오는 SQL도 있습니다. 여러가지 방법들 중 이 포스팅에서는 Python이라는 프로그래밍 언어를 통해서 데이터를 다루는(핸들링)하는 방법에 대해서 소개를 하려고 합니다.
먼저 Python에 대해서 잠깐 이야기를 해보면, Python은 원래는 서버단을 다루기 위한 언어로 나왔지만 Python만의 간결하고 배우기 쉬운 특성 덕분에 많은 연구자들과 데이터 사이언티스트들이 파이썬 언어를 배우기 시작했습니다.
그 덕분에 데이터를 핸들링하는 라이브러리가 생태계 내에서 많은 발전을 이루었는데 그 중에서도 Pandas는 꽤나 직관적인 인터페이스를 제공하면서 지금까지도 필수적인 라이브러리로 자리잡게 되었어요. 너무 많이 쓰이기 때문에 아래와 같은 코드 라인을 손쉽게 찾아볼 수 있습니다.
import pandas as pd
너무 많은 사람들이 사용하고 있기 때문에 예약어로 'pd'로 줄여서 쓰는 부분조차 거의 업계(?) 공통이라고 볼 수 있을만큼 당연하게 쓰는 약어가 되어버렸습니다. pandas의 대중성을 엿볼 수 있는 부분인거죠.
[파이썬 공식 홈페이지]
현재는 Pandas 공식 재단에서 지속적인 관리가 이루어지고 있어서 여러가지 DB와의 커넥션, NoSQL 포맷 데이터 핸들링을 위한 여러 기능들, 데이터처리 성능 개선등 많은 지속적인 개선이 이루어지고 있는 파이썬 진영의 대표적인 데이터 핸들링 라이브러리라고 할 수 있습니다.
2. Dataframe이란?
사실 dataframe이란 개념은 파이썬에서 처음 등장한 개념은 아닙니다. 통계 작업에 특화된 R언어 진영에서 헤들리 위컴이라는 사람이 이미 만든 개념을 파이썬의 syntax에 맞게 사용할 수 있도록 옮겨온 것이 Pandas의 시작이었기 때문입니다.
Dataframe은 간단하게 설명하면 기존의 SQL 개념을 그대로 빌려와서 Python언어로 데이터를 조작하고, 확인하고, 변경하는 등의 여러 작업을 수행할 수 있도록 도와주는 Pandas의 기능이라고 말할 수 있습니다.
위의 내용처럼 마치 엑셀, SQL의 관계형 테이블의 자료구조 모양을 한 데이터를 파이썬 내에서 다루도록 여러가지 기존 SQL의 명령어들을 제공해주는 라이브러리인거죠.
기본적인 where 필터기능은 당연히 지원하고 group & aggregate 등의 기능을 groupby, sum, count등의 메서드 조합을 통해서 실행할 수 있도록 해줍니다. index도 기본적으로 포함하고 있어서 reset_index 등의 indexing도 제공합니다.
데이터를 다룰 때 중요한 기능 중 하나는 조인이라고 생각합니다. 데이터는 기본적으로 정규화되어있기 쉬워서 나뉘어져있기 마련인데, 이것들을 합치는 기능이 Join이 핵심이기 때문입니다. 데이터 프레임에서도 조인 기능을 제공하고 있습니다. merge를 통해서 left, right등의 조인 조건을 설정하고 멀티 컬럼 조인도 역시 지원합니다.
이정도만 봐도 SQL 쿼리에서 사용했던 거의 대부분의 기능을 제공한다는 것을 알 수 있습니다. 그렇다면 SQL을 안쓰고 아예 판다스로만 다하면 안되나? 하는 생각이 들 수도 있는데, 모든 상황에 이는 적용되기 어렵습니다. Pandas가 연산을 메모리 위에서 하기 때문에 너무 큰 데이터 용량의 경우 컴퓨터가 힘들어할 수도 있기 때문입니다.
3. 언제 사용하나요? (When to use)
파이썬으로 데이터를 다루고자 하는 사람이라면 모두 사용한다고 생각하지만 특히 더 많이 쓰는 직군은 존재합니다. 위의 도식은 데이터 분야에 존재하는 직업 분류표인데요, 이 중에서도 Data Analyst와 ML/DL Engineer, Data Scientist들에게는 없어서는 안되는 라이브러리입니다. (사실상 Data engineer도 pySpark을 다룬다면 사용하게 될 확률이 높아지기 때문에 거의 다 사용한다고 봐도 무방합니다.)
이 중에서도 ML을 모델링하는 작업을 할 때는, 모델에 들어갈 Train Set을 만들기 위해서 필수적으로 전처리 작업에 사용됩니다. 데이터를 피쳐별로 정제하고 학습하기에 적절한 형식으로 변경하기 위해서 사용을 하는 것이죠.
4. 어떻게 학습하나요?
학습의 순서는 사실 상관없지만, 추천하는 학습 순서는 있습니다. SQL > Pandas로 이어지는 학습 순서가 좋은 것 같습니다. 지금 나와있는 데이터 핸들링 방법론은 대개 SQL을 계승하고 있기 때문이에요.
물론 Syntax와 같은 문법은 매 언어와 라이브러리마다 다소 상이하지만, 결국 그 원리에는 SQL에서 사용되는 데이터 핸들링 원리가 고스란히 자리잡고 있기 때문입니다.
예를 들어보면, Grouping을 하고 Aggregation(Ex: count, sum...) 연산을 하는 방법론만 생각해봐도 그렇습니다. SQL에서도 group by 키워드를 통해 먼저 키별 그룹을 지정하고 해당 그룹별로 연산을 수행하는 식으로 되어있는데 이는 판다스에서도 다르지 않습니다. 다만 파이썬에 존재하는 리스트, 튜플 등의 자료구조를 통해 이를 구현하다보니 문법만 조금씩 달라지게 되는 거죠.
레퍼런스:
https://www.geeksforgeeks.org/python-pandas-dataframe/
https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/data.frame
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ythansome&logNo=221268795989
'기억하고 싶은 것들 > 글또 활동' 카테고리의 다른 글
7[글또]1년차 엔지니어의 한 해 회고 (2) | 2022.01.02 |
---|---|
[글또] 글또 6기를 시작하면서 (2) | 2021.08.01 |