Numpy, Pandas 정리
우선 접해본 적은 많다. 하지만 둘의 정확한 차이나 뭐 하튼 개념적인게 부족했다. 이 기회에 정리해보자!
Numpy는 Scalar, Vector로 표현되고 Metrix형태로 나타난다.
Pandas는 Series로 표현되며 DataFrame 형태로 나타난다.
참 이해하기 힘들다 그치?
공식홈페이지 https://numpy.org를 참고하여 글을 쓰려 한다.
Numpy 기본 개념
Numpy는 다차원배열을 제공하는 것을 메인으로 한다. masked arrays(관련 설명을 찾아보았으나 잘 모르겠어서 나중에 공부해봐야겠다)나 Metrix형태 등 단순 다차원배열이 아닌 형태도 제공한다.
핵심은 ndarray object !
그렇다면 기존 파이썬의 array 와 다른 점은 무엇일까?
Numpy의 array | 기존 Python의 array |
list의 크기 고정 | list의 크기가 동적으로 변할 수 있음 |
모두 같은 data type이어야함 | 각각 달라도 상관 없음 |
많은 양의 데이터에 대해서 더욱 심화된 수학적 계산이 가능 | 가능은 하지만 시간과 메모리 측면에서 효율이 떨어짐 |
아주 이해가 빠르게 되는 예시가 있다.
왼쪽은 기존 파이썬 코드 a,b의 크기가 커진다면 효율성이 떨어지는 것은 안봐도 비디오(요즘말로는 안봐도 유튜브)
하지만 numpy로는 저렇게 간단하게 가능하다!
하지만 내부적으로는 똑같이 힘겹지 않을까? 의심이 된다. 그렇다면 왜 numpy는 빠른 것일까!
Numpy가 빠른 이유
바로 "벡터"화 되어있기 때문
벡터는 n차원 공간에서 방향과 크기를 갖는 단위를 말하쥬?
벡터화된 코드는 많은 이점이 있다.
간결하고 읽기 쉬우며 코드를 줄이기 용이하다!
또한 코드가 표준 수학적 표기법과 더 유사하다고 하다. 수학적 구문을 더 쉽게 코딩할 수 있다네?
마지막으로 위의 예시처럼 for문을 훠얼씬 덜 쓸 수 있다는 아주 큰 장점이 있다.
이제 넘파이를 왜 쓰는지 정확히 어떤 기능을 제공하는 모듈인지 제대로 알게 되었으니 Pandas로 넘어가보자
판다스는 https://pandas.pydata.org참조
Pandas 기본 개념
relational 또는 labeled data 를 쉽고 직관적으로 사용하기 위해 "표"로 정리되어 있는 데이터를 말한다.
series라고 부르는 열들로 이루어진 표이고 이를 DataFrame 이라고 한다.
그러니까 Series는 1차원 데이터고 DataFrame은 2차원 데이터인거지.
"DataFrame is a container for Series, and Series is a container for scalars."
홈페이지에 있는 문장 그대로 가져왔다. (https://pandas.pydata.org/docs/getting_started/overview.html)
직관적으로 이해가 되지 않나?
어떤 데이터를 DataFrame으로 나타낼 수 있나?
열이 여러 종류인 경우(sql의 테이블이나 엑셀의 스프레드시트같은)
time series 데이터 정렬이 되든 말든 상관없구
통계적 데이터들도 전부 라벨링 되어있을 필요는 없다. 알아서 처리할 수 있는 함수들이 있으니까 걱정 노노!
Pandas로 할 수 있는게 뭔데?
(((글의 말투가 점점 편해지는거 같은건 오해입니다 ㅎㅎ)))
참 많은걸 해준다 고마운 판다스 이름은 왜 판다스일까
1. missing data 를 다루기 쉽다. 뭐 평균으로 채우든, null값을 넣든.
2. 열을 아주 쉽게 삽입하고 지울 수 있다.
3. 자동적 및 명시적인 데이터 정렬 (좀 있어보이는 번역이다)
label로 인해 명시적으로 정렬되고 우리가 데이터를 사용할 땐 라벨 없이 데이터만 쓱 가져와서 쓸 수 있다. 짱이지 정말.
4. fancy indexing 이란 말 넘 귀엽고 ㄹㅇ이다.
5. 시계열 데이터에서 자주 사용한다고 하는데 이게 참 편한가보다.
The goal, then, is to reduce the amount of mental effort required to code up data transformations in downstream functions.
이 문장도 그대로 가져왔다 reduce mental effortㅋㅋㅋㅋㅋㅋㅋㅋ감사해요 판다스
정리하자면
넘파이는 벡터형 다차원 행렬들, 판다스는 표로 이루어진 dataframe.
판다스로 데이터를 불러들여서 넘파이로 많은 연산을 하는 걸로 알고 있다.
이 부분은 틀린 내용 일 수 있으니 나중에 더 공부하고 수정하러 오겠다!