우리 서비스의 아파트 관련 정보 데이터들을 더 확실하게 정제하기위해 pandas를 공부했다.
Pandas란
Python을 기반으로 구축된 빠르고 강력하며 유연하고 사용하기 쉬운 오픈 소스 데이터 분석 및 조작도구
라고 판다스 공식홈페이지에서 자신들을 홍보하고 있었다.
역사
2008년에 AQR Capital Management에서 시작되었으며 2009년 말에 오픈소스가 되었고 오픈소스 기여자들을 통해 발전하고 있었다.
타임라인
- 2008년 : 판다 개발 시작
- 2009년 : 팬더 가 오픈 소스가 됨
- 2012 : 데이터 분석을 위한 Python 초판 발행
- 2015 : 팬더 가 NumFOCUS 후원 프로젝트가 됨
- 2018년 : 첫 번째 대면 핵심 개발자 스프린트
판다스에서 소개하는 자신들의 강점
- 통합 인덱싱으로 데이터 조작을 위한 빠르고 효율적인 DataFrame 개체입니다.
- 인메모리 데이터 구조와 다양한 형식 간의 데이터 읽기 및 쓰기 도구 : CSV 및 텍스트 파일, Microsoft Excel, SQL 데이터베이스, 고속 HDF5 형식
- 지능적인 데이터 정렬 및 누락된 데이터 의 통합 처리 : 계산에서 자동 레이블 기반 정렬을 얻고 지저분한 데이터를 정돈된 형태로 쉽게 조작합니다.
- 데이터 세트의 유연한 재구성 및 피벗
- 지능형 레이블 기반 슬라이싱 , 멋진 인덱싱 및 대규모 데이터 세트의 하위 집합
- 크기 가변성 을 위해 데이터 구조에서 열을 삽입 및 삭제할 수 있습니다 .
- 데이터 세트에 대한 분할-적용-결합 작업을 허용하는 엔진 별 강력한 그룹으로 데이터를 집계하거나 변환 합니다.
- 데이터 세트의 고성능 병합 및 결합
- 계층적 축 인덱싱 은 저차원 데이터 구조에서 고차원 데이터로 작업하는 직관적인 방법을 제공합니다.
- 시계열 기능: 날짜 범위 생성 및 빈도 변환, 창 통계 이동, 날짜 이동 및 지연. 도메인별 시간 오프셋을 생성하고 데이터 손실 없이 시계열을 결합할 수도 있습니다.
- Cython 또는 C 로 작성된 중요한 코드 경로로 성능에 대해 고도로 최적화되었습니다 .
- Python with pandas 는 금융, 신경 과학, 경제학, 통계, 광고, 웹 분석 등을 포함한 다양한 학문 및 상업 영역에서 사용됩니다.
모르는 용어나 단어들이 많아서 일단 강조표시 된 부분들에 대해 먼저 알아봐야겠다고 생각했다.
판다스는 데이터프레임 개체를 사용한다고 한다.
그렇다면 데이터프레임이란게 무엇인가?
판다스에서 소개하는 데이터프레임이다.
row와 column으로 구성되어있으며 스프레드시트와 유사한 형식이다. 2차원 데이터 구조로 되어있으며 우리가 아는 엑셀, SQL테이블 등과 매우 유사하다.
row와 column중 column 데이터프레임을 series라고 부른다.
그래서 단일 열 (ex) 나이, 성별, 과목) 에 대한 정보들을 정제하고싶다면 Series 데이터 정제에 대해 알아보면 될 것 같다.
사진에서 보이듯이 판다스의 dataframe은 여러가지 파일 형식들을 가져와서 변환할 수 있는 장점이 있다.
보통 데이터는 xls나 json, csv, sql 등의 테이블 형식으로 되어있는 경우가 많은데 그럴 때 데이터를 정제하고, 다시 저장하는데 유용할 것 같다.
통합 인덱싱
통합 인덱싱으로 데이터 조작을 빠르고 효율적이게 가능하다고 하는데 통합 인덱싱이란 뭘까?
먼저 인덱스에 대해 알아봤다.
사전적인 정의로는 색인, 지표, 지수 등을 뜻하는 영단어이다.
색인은 책 속에 낱말이나 구절, 또 이에 관련한 지시자를 찾아보기 쉽도록 일정한 순서로 나열한 목록을 가리킨다.
책같은걸 보면 맨 뒷장에 있는 어떤 단어가 몇페이지에 나오는지 등에 대한 정보들인 것 같다.
출처 : 위키백과
데이터베이스 관련 index의 정의는 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조를 일컫는다고 한다.
또한 인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다. 고속의 검색 동작뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다 고 되어있다.
이해한대로 정리하자면, index를 정의하면 엄청나게 많은 데이터 속에서도 그 모든 데이터를 확인하지 않고, 내가 원하는 데이터를 확인 및 가져올 수 있다는 뜻인것 같다.
pandas 인덱스의 종류에는 여러가지가 있다. (int64index, Rangeindex, intervalindex 등)
따라서 pandas는 여러가지 인덱스를 통해 데이터들을 조작하는데 빠르고 효율적으로 하는데 장점이 있는 python 라이브러리 이라고 볼 수 있겠다.
인메모리 데이터 구조
인메모리 데이터구조란?
컴퓨터의 처리속도 먼저 볼 필요가 있다.
판다스는 메모리에 데이터를 가지고 있는다. 사진에 보이듯이 아래로 갈수록 용량은 많아지지만, 처리속도는 느려진다.
우리가 아는 Mysql 같은 영속성이 있는 데이터들은 Flash, Traditional, Remote Secondary storage 등에 저장되어있다.
기본적으로 RAM은 휘발성이다. 컴퓨터의 전원이 꺼진다던가 하는 이슈가 있을 때 메모리에 저장되어 있던 데이터는 사라진다.
영속성은 없지만 데이터를 가지고 어떤 작업을 할 때 메모리에 잠시 저장해놓고 작업을 한다면, 디스크에 있는 데이터들을 다루는 것 보다 훨씬 빠른 속도를 가진다.
pandas는 이렇게 메모리안에서 작업을 진행하기때문에 속도가 엄청 빠르다.
장점 : 속도가 빠르다
단점 : 예기치 못한 에러가 생겼을 때 작업하던 데이터가 사라질 수 있다.
메모리에 올라가는 데이터보다 큰 데이터를 다루고, 작업해야한다면 다른 툴을 사용하는게 낫다.
나머지 기능들을 보면 데이터를 자르고, 붙이고, 엮는 부분에 있어서 강하다. 라고 볼 수 있다.
간단하게 판다스가 어떤 것인지 알아봤고, 다음엔 어떻게 사용하는지에 대해 알아볼 예정이다.
'Python' 카테고리의 다른 글
Pycharm - Github 연동 (0) | 2022.10.20 |
---|---|
Fastapi - RESTful API 설계 공부 (0) | 2022.05.09 |
Anaconda 설치 후 python 사용 (0) | 2022.02.21 |
댓글