공부 기록/Data Analysis

[Data / Python] '이것이 데이터 분석이다 with 파이썬' ch.00

햇살아래 2022. 3. 2. 22:00

Chapter 00 들어가기 전에

02. 데이터 분석을 위한 라이브러리 

 

라이브러리 설치하기 

 라이브러리를 설치하는 방법은 주피터 노트북을 설치하는 법과 동일하다. 'pip install' 옆에 설치하고 싶은 라이브러리 이름을 차례로 입력한다. 'pip install' 옆에 설치하고 싶은 라이브러리 이름을 차례로 입력한다. 

판다스의 설치 및 활용

 판다스는 파이썬에서 가장 널리 사용되는 데이터 분석 라이브러리데이터 프레임(Data Frame)이라는 자료구조를 사용한다. 데이터 프레임은 엑셀의 스프레드시트와 유사한 형태이며 파이썬으로 데이터를 쉽게 처리할 수 있다. 아래 코드는 데이터 분석 라이브러리를 import하는 코드이다. 판다스 라이브러리는 보통 pd라는 이름으로 축약하여 사용한다.

 판다스의 데이터 프레임을 생성해보자. 데이터 프레임에 들어갈 2개의 열 데이터를 입력한 뒤, list()와 zip() 함수로 데이터셋을 생성한다. 그리고 이 데이터셋으로 데이터 프레임 객체를 생성할 수 있다. head() 함수로 생성된 데이터 프레임의 일부분을 살펴볼 수 있다.

 데이터 프레임의 기본 정보를 출력해보자. dtypes, index, columns로 데이터 프레임의 행, 열 정보를 출력할 수 있다. dtypes는 열의 타입 정보, index는 행의 형태 정보를 포함, columns는 데이터 프레임의 열 정보를 조금 더 간략한 형태로 요약한다.

 데이터 프레임의 기본 정보를 출력했으니 이번에는 행과 열 각각의 데이터를 출력해보자. 데이터 프레임의 열 이름을 선택하여 데이터를 출력할 때는 df[Namges']를 실행한다. 그리고 행의 구간에 해당하는 데이터를 출력할 때는 df[0:3]과 같은 방법을 사용한다. 여기에서 0과 3은 데이터 프레임의 행 번호를 의미하며 모든 데이터 프레임의 행 번호는 0부터 시작한다.

  위의 두 결과는 서로 다른 형태를 띄는데, 이는 첫 번째 결과는 시리즈 객체를 출력한 것이고 두 번째 결과는 데이터 프레임을 출력한 것이기 때문이다. 

 마지막으로 데이터 프레임으로 수행할 수 있는 가장 기초적인 두 가지 기능을 알아보겠다. 첫번째는 필터링 기능이다. 아래 코드는 전체 데이터 프레임 내에서 Births 열에 해당하는 데이터가 100보다 큰 경우에만 데이터를 반환해달라는 코드이다.

 두 번째는 평균값을 계산하는 기능이다. 아래 코드는 현재 데이터 프레임의 열 중에서 유일하게 평균값을 구할 수 있는 Births 열의 평균을 mean() 함수로 계산한 것이다. mean() 함수는 각 열들의 데이터 타입을 체크한 뒤, 연산이 가능한 열의 평균값만을 반환한다.

 

넘파이의 설치와 활용

 넘파이(numpy)는 Numerical Python의 줄임말로 수치 계산을 위해 만들어진 파이썬 라이브러리이다. 넘파이의 자료구조는 앞에서 살펴본 판다스 라이브러리, 그리고 다음에 살펴볼 Matplotlib 라이브러리의 기본 데이터 타입으로 사용되기도 한다. 

 넘파이에서는 배열 개념으로 변수를 사용하며 벡터, 행렬 등의 연산을 쉽고 빠르게 수행하도록 지원한다. 파이썬은 기본 자료구조인 리스트, 딕셔너리 등을 갖고 있는 것과 마찬가지로 데이터 분석이라는 언어는 기본 자료구조로 넘파이 배열을 가지고 있다. 

 넘파이는 통상적으로 np라는 약어로 라이브러리를 import 한다. 아래 코드는 1차원 배열이 3개, 2차원 배열이 5개의 값을 가지는 15개의 숫자를 생성하는 코드다. 0부터 14까지 15개의 숫자를 (3,5) 차원으로 생성한다.

 넘파이 배열 데이터의 차원을 학인하는 방법은 shape를 호출하는 것이고, 데이터 타입을 확인하는 방법은 dtype을 호출하는 것이다. 이는 판다스와 동일한 인터페이스로 구성되어 있는 것을 알 수 있다.

  혹은 zeros() 함수로 데이터를 생성할 수 도 있다. zeros() 함수는 0으로 채워진 넘파이 배열을 생성하는 함수다. 1을 채워주는 역할을 하는 함수는 ones()이다.

 마지막으로 넘파이 배열의 존재 이유라고 할 수 있는 데이터 연산 방법을 알아보겠다. 먼도 동일한 shape를 가지는 2개의 데이터를 생성한다. 그리고 이 2개의 데이터에 다음과 같이 +,-,*,/ 기호를 사용하여 사칙연산을 수행할 수 있다.

  이 외에도 넘파이 라이브러리는 dot() 함수를 이용한 행렬 연산 등 데이터 분석에 필요한 많은 기능을 제공하고 있다.

 

Matplotlib

 Matplotlib 라이브러리는 데이터를 시각화해주는 가장 기본적인 라이브러리이다. 주피터 노트북에서 Matplotlib로 시각화된 그래프를 출력하려면 아래와 같은 코드를 미리 실행해야 한다. %Matplotlib inline 코드는 현재 실행 중인 주피터 노트북에서 그래프를 출력 가능하도록 선언하는 명령어이다. 

 첫 번째 그래프로 막대그래프(bar plot)를 살펴보자. Matplotlib  라이브러리를 사용할 때는 우선 그래프 객체라는 것을 생성해야 한다. plt.bar(x, y)를 실행하면 막대 그래프 객체가 생성되고, 이제 객체에 다른 요소를 추가해줄 수 있다. 이어지는 코드 plt.xlabel, plt.ylabel, plt.title은 그래프 객체에 각각 x축 제목, y축 제목, 그래프 전체 제목을 달아주는 코드이다. 그리고 마지막으로 plt.show()를 호출하면 그래프를 출력할 수 있다.

​ 두 번째 그래프는 산점도 그래프(Scatter plot)다. ramdom.seed() 함수는 랜덤 추출 시드를 고정한 것이고 이를 토대로 random.rand() 함수가 넘파이 배열 타입의 난수를 생성한다. 그리고 arrange() 함수는 5의 간격으로 0부터 100까지의 숫자를 생성한 것이다. 지금까지의 데이터를 plt.scatter() 함수로 출력한 결과는 아래와 같다.

 앞의 코드에서 scatter() 함수에 사용된 c, alpha, label 파라미터와 legend() 함수는 그래프를 꾸며주기 위한 파라미터들이다. 

 

출처 : 이것이 데이터 분석이다 with 파이썬