Blair  - Soul Eater Part.3_Chapter.02_데이터 분석 라이브러리

• 패스트캠퍼스 데이터분석 부트캠프 12기/Python

Part.3_Chapter.02_데이터 분석 라이브러리

oujin 2024. 1. 4. 16:38
728x90

배우는 것 : numpy, pandas, seaborn, eda 프로젝트 


 

▶ numpy 란?

1. Nymerical computing with python : 수치연산 및 벡터 연산에 최적화 된 라이브러리

2. 2005년에 만들어 졌으며 100% 오픈소스이다

3. 최적화된 C code로 구현되어 있어 매우 좋은 성능

4. 파이썬과 다르게 수치연산의안정성이 보장되어 있다 (numerical stable)

5. N차원 실수값 연산에 최적화 되어 있다 == N개의 실수로 이루어진 벡터 연산에 최적화 되어 있다

 

▶ Numpy룰 사용해야 하는 이유

1. 데이터는 벡터로 표현됨, 데이터 분석이란 벡터 연산이다. 그러므로 벡터 연산을 잘해야 데이터 분석을 잘 할 수 있다

2. 파이썬은 수치 연산에 매우 약하다. 실수값 연산에 오류가 생기면 (numerical error) 원하는 결과를 얻지 못할 수 있다. 많은 실수 연산이 요구되는 머신러닝에 성능 저하로 이어질 수 있다.

3. Numpy 는 벡터 연산을 빠르게 처리하는 것에 최적화 되어 있다. 파이썬 리스트로 구현했을때보다 월씬더 빠른 속도임

 

▶ 조사 해보기

1. C언어로 코드를 구현하면 파이썬으로 구현했을때와 어떤차이가 있는지 (CPython)

2. 수치적 안정성(numerical stable)이 없으면 왜 성능 저하를 가져오는지

3. Numpy는 어떻게 벡터 연산을 빠르게 처리하는지 서술하시오 

 

▶ arrray

1. numpy array는 C언어의 array 구조와 동일한 개념 (C array)

2. numpy array 는 파이썬 리스트와 비슷한 구조이나 세부적인 특징이 많이 다름

 

리스트와 다른점

1. 선언한 이후에 크기 변경이 불가능

2. 모든 원소의 데이터 타입이 동일해야함 (homogeneous array)

데이터 타입이 같으면 연산이 고정됨, 원소가 무슨데이터 일지 고려하지 않아도됨, 연산이 더 빨라짐

 

리스트와 같은점

1. 인덱싱으로 원소에 접근가능

2. 생성후 asssignment operator를 이용해 원소의 update가 가능

 

넘파이가 제공하는 데이터 타입

1. 수치와 관련된 데이터 타입이 대부분이다

2. 원소의 크기(memory size)를 조절가능하고 크기에 따라 표현할 수 있는 수치범위가 정해짐

np.int8 -> 수치표현에 8 bits를 사용한다 : 00000000~11111111 -> 2^8(256개) : -128~127

uint = 음수가 없음 -> 0~255 

np.float32 -> 실수 표현에 32 bits를 사용한다 -> eaponent, mantissa, sign -> 2.813 * 10^23 -> sign precision

표현범위: 크거나 자세히 설명하거나

i : integer (정수)
b : boolean (참거짓)
u : unsigned integer (부호없는 정수)
f : float (소수)
c : complex (복소수)
m : timedelta (타임델타)
M : datetime (날짜시간)
O : object (객체)
S : string (문자열)
U : unicode string (유니코드 문자열)
V : void (다른 타입에 대한 고정된 메모리묶음) 

 

▶ 실습  

 

 


 

▶ pandas 란?

1. Python Data Analysis Library. 정형데이터 분석에 최적화된 라이브러리

2. 2008년에 만들어 졌으며 2009년에 100% 오픈소스가 됨

3. 다양한 데이터 조작 기능제공 (indexing, search, filtering, reshaping, concat, reding, writing, ...)

4. 정형 데이터를 효율적으로 표현할 수 있는 DataFrame 형태로 모든 데이터를 표현함 

5. 벡터연산에 최적화 되어 있음( Numpy와 연관성 있다)

 

판다스를 사용해야 하는 이유

1. 대부분의 정제된 데이터들은 테이블 형태로 표현된다. 테이블 형태 분석에 최적임

2. numpy처럼 정형화된 데이터 연산에 최적화됨

3. 다양한 정형 데이터를 통합 관리 가능함(json, html, csv, xlsx,sql,,,모두 dataframe으로 통일해서 표현가능)

4. 엑셀에서 제공하는 연산 기능을 거의 다 제공 (편의성이 좋다)

 

▶ 조사해보기

1. 정형데이터 타입들에 대해서 조사하기

2. 정형 데이터 분석과 벡텨 연산이 어떤 관계가 있을까요

 

▶DataFrame

1. DataFrame은 2차원 테이블 구조이다

2. 1차원 구조인 Series 도 있다 (가로나 세로 (행이나 열) 한줄을 가져오는 경우) (=하나의 row, 하나의 column)

3. row, column으로 모든 원소를 구분한다 (indexing)

4. index, columns, values라는 객체 변수를 가지고 있음

5. relation DB와 완전히 호환됨

6. 하나의 column을 기준으로 모든 원소의 data type이 동일 (모두 numpy array가 가지는 data type과 동일)

7. DataFrame은 numpy array를 상위호환하는 개념으로 univasal function이 사용가능함 (내부 구현제로 numpy array를 사용하기 때문)

 

▶ 실습:

 

 


▶ Matplotlib 이란?

1.Statistical Data Visualization library on matplotlib

2. 파이썬 오픈소스 라이브러리 중에 가장 널리 사용되는 시각화 라이브러리 이다.

3. 2002년부터 만들어졌으며, MATLAB의 기능들을 파이썬으로 가져오는 컨셉으로 시작

4. 각종 논문에서 figure를 그릴때 사용될 만큼 깔끔하게 그래프를 그려주는 것으로 유명

5. figure라는 도화지에 여러가지 component를 얹어서 그래프를 완성하는 컨셉

6. 크게 pyplot을 이용하여 구현하는 방법과 OOP-style 을 이용하여 구현하는 두가지 방법이 있다

7. 빠르게 적당한 퀄리티의 그래프는 pyplot 디테일하게 표현한다면 OOP-style로 구현하는걸 추천

 

▶Seaborn 이란?

1. 2012년에 만들어 졌으며 matplotlib을 더 편하게 사용 할 수 있도록 만든 라이브러리

2. matplotlib이 MATLAB을 표방하여 디자인된 것과 달리 seaborn은 numpy, pandas 와 같은 파이썬 라이브러리들을 편하게 시각화 하는 것을 중점으로 디자인된 라이브러리 이다.

3. 특히, DataFrame을 직접적으로 지원하기 때문에 훨씬 편리하게 데이터를 시각화 할 수 있다.

4. 그리고 matplotlib 위에 만들어져서 , matplotlib 에 있는 개념들을 확장해서 사용 할 수 있다.

5. 다양한 기본 plot들이 있어서 빠르게 통계분석을 하기에 편리합니다 -> EDA편리

 

▶ 조사해보기

1. seaborn Gallery page에 올라온 예시 페이지들을 모두 살펴보고, 예시 코드의 특징을 파악해서 정리

2. matplotlib을 pyplot으로 사용할때와 OOP-style로 사용할 때의 구현상 차이를 확인하고 정리

 

▶ 실습

 

728x90