brunch

You can make anything
by writing

C.S.Lewis

by 박경아 Mar 31. 2021

13. 통계를 위한 파이썬 라이브러리, 넘파이 (1)

파이썬으로 데이터 분석하기

지금까지 파이썬 기초 문법을 공부했다면 이제 데이터 분석을 위한 본격적인 공부를 시작할 때다. 바로 데이터 분석을 위한 파이썬의 라이브러리 4종 세트 - 넘파이(Numpy), 판다스(Pandas), 맷플롯립(Matplotlib), 그리고 사이킷런(sklearn)을 공부하는 것이다.


데이터 분석에 있어 선형대수학, 통계 분석을 다루기 위한 것이 넘파이이고, 데이터 테이블 상에서 데이터를 찢고 붙이고 등 조작하고 분석하는 것이 판다스, 이를 시각화하는 것이 맷플롯립, 그리고 데이터에 머신러닝 알고리즘을 적용할 수 있는 것이 사이킷런 라이브러리다.


그 가운데서 먼저 통계 분석을 위한 파이썬 라이브러리인 넘파이에 대해 배워보자.



넘파이란 무엇인가?


넘파이는 Numerical Python의 줄임말로 말 그대로 수치 데이터를 다루기 위한 파이썬의 라이브러리다. 기억나는가? 파이썬의 수와 수 데이터는 바로 사칙연산이 가능하지만, 여러 개의 값이 들어간 리스트의 경우 요소의 값을 바꾸거나 연산을 하기 위해서는 리스트의 이해를 사용해야 했다.


넘파이를 사용하면 요소의 직접적인 연산은 물론 행열로 이뤄진 다차원 수 데이터의 수학적 작업을 쉽게 처리할 수 있다. 즉, 파이썬의 기본 문법과 데이터 유형만으로는 많은 양의 수 데이터의 다양한 수학적 작업을 효율적으로 처리하는 데 한계가 있어 만들어 진 것이 넘파이 라이브러리이다. 


데이터 분석에서 여러 개의 값을 가진 변수를 '벡터'라고 하는데 넘파이에서는 이러한 벡터를 '어레이(Array)'라고 하고, 판다스에서는 시리즈(Series)라고 한다. 파이썬의 기본 데이터형인 리스트와 달리 어레이나 시리즈는 요소에 대한 혹은 요소 간 직접적인 연산이 가능하다. 또한, 이들 라이브러리는 파이썬에서 벡터를 다루기 위해 제공하는 sum, max, min, all, any과 같은 기본적인 함수 외에 통계, 함수 최적화와 같은 데이터 분석에 필요한 다양한 함수를 제공한다.


나중에 배우겠지만 데이터에 다양한 머신러닝 알고리즘을 적용하는 사이킷런 라이브러리 역시 이 넘파이를 기반으로 한다. 향후 사이킷런을 공부함에 있어 단순히 머신러닝 알고리즘을 적용해 보는 것을 지나 알고리즘을 제대로 이해하고 또한 알고리즘을 원하는 방향으로 수정하기 위해서는 선형대수학, 통계와 같은 수학적 지식과 함께 다차원 수배열에서 선형대수를 처리하는 넘파이의 고급 기능을 공부해야 할 것이다.


우선은 넘파이가 무엇이고 어떻게 다룰 수 있는 지, 그리고 넘파이의 기초 통계함수 등 기초적인 내용을 배워보자.



넘파이 어레이 vs. 리스트


여러 개의 값을 가진 변수, 즉 벡터를 넘파이에서는 어레이(array)라고 한다고 했다. 어레이는 여러 개의 값을 가진 리스트나 튜플을 이용해 만들 수 있다.

리스트의 변수를 입력해 어레이 생성 (1)


직접 리스트를 넣어 어레이 생성 (2)


어레이를 생성했다면 리스트와 어레이를 비교해 보자. 먼저 리스트는 아이템을 자유롭게 늘리거나 삭제할 수 있지만 어레이는 처음 생성시 그 길이(아이템 수)가 정해진다. 아이템을 삭제하거나 추가해도 원래 어레이를 생성 시 입력한 아이템 수에 변화는 없다. 즉, 어레이의 길이를 변경하는 것은 새로운 변수를 할당해야 함을 의미한다.

아이템을 삭제하거나 추가해도 원래 어레이 생성 시 입력한 아이템 수에 변화는 없다


일단 리스트를 어레이로 변경하게 되면 아이템의 사칙연산이 자유로워진다. 리스트의 경우 아이템 변경이나 계산 등을 위해서는 리스트의 이해라는 방법을 사용했지만, 어레이는 아이템에 바로 숫자를 더하거나 빼거나 하는 등 간단한 연산에서부터 사인, 코사인 등 고급 수학도 요소 값에서 바로 계산할 수 있다.

어레이 사칙연산&사인값 계산


또한, 불린형 연산자를 사용해 바로 데이터의 참과 거짓을 판별하거나 조건에 맞는 요소들만 바로 추출하는 것도 리스트의 이해를 사용할 것 없이 바로 가능하다.

리스트의 크기 비교 vs. 어레이의 크기 비교



넘파이 어레이의 속성 탐구


어레이를 생성해 리스트와 비교해 봤다면 이제 리스트 안에 리스트를 넣어 행과 열로 이뤄진 2차원 어레이를 생성해보자. 어레이의 속성을 확인하는 .ndime 함수를 사용해보면 2(차원)이라고 나온다. 또한, 어레이의 모양을 확인하는 shape 함수를 사용해 보면 튜플형 데이터로 (2, 3)이라고 나온다. 즉, 2행 3열의 모양이라는 뜻이다.

어레이 속성 함수


마찬가지로 리스트에 리스트의 리스트(list of lists of lists)를 넣으면 3차원 어레이 데이터를 생성해 나갈 수 있다. 이렇게 리스트를 이용해 다차원의 수배열 데이터를 만들고 아이템의 연산은 물론 기본적으로 같은 위치에 있는 아이템 간 연산, 행렬곱 등 다양한 연산과 수학적 계산이 가능한 것이 넘파이이다.



3차원 데이터의 요소간의 사칙연산, 행렬곱 등은 아래 캐글 노트북에서 연습할 수 있다.



넘파이 어레이 연습하러 가기

https://www.kaggle.com/kyungapark/python-basic-what-is-numpy




* 참고자료

What is Numpy?

https://numpy.org/doc/stable/user/whatisnumpy.html

Numpy quickstart

https://numpy.org/doc/stable/user/quickstart.html

넘파이 사용법 알아보기

https://laboputer.github.io/machine-learning/2020/04/25/numpy-quickstart/

핵심만 간단히, Hello World! 파이썬 3 - 데이터 분석을 위한 3종 패키지(numpy, pandas, matplotlib)

https://wikidocs.net/21047

매거진의 이전글 12. 파일 읽고 쓰기
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari