본문 바로가기

STUDY

패스트캠퍼스 데이터분석 부트캠프 학습일지5

https://fastcampus.co.kr/

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

5주차: 파이썬

 

파이썬 프로그래밍

IO: Input과 Output의 약자. 컴퓨터가 데이터를 입력받고 출력하는 모든 작업

- 프로그램 입장에서 들어오는 모든 데이터는 Input, 나가는 모든 데이터는 Output

- 사용자로부터 (키보드로)입력받는 것을 stdin, 사용자에게 결과를 (모니터로)보여주는 것을 stdout이라 함.

- 메인 메모리 입장에서 들어오고 나가는 모든 데이터를 I/O처리라 함(CPU와의 소통 제외)

- 프로그램은 메인 메모리 상에 존재: 스토리지로부터 파일을 불러오는 게 input, 프로그램 결과를 스토리지에 저장하는 게 output: 스토리지와 프로그램 사이의 I/O를 file I/O라 함

 

OOP: Object-Oriented Programming, 객체지향 프로그래밍

실제 세상에 존재하는 것들을 프로그램으로 옮겨 구현하기 위한 컨셉의 프로그래밍 패러다임: 개념의 추상화

- 객체: 실제 사물 하나하나. 이들이 공유하는 속성을 정의한 것을 클래스라 함.

- 기존엔 데이터(변수)와 데이터 처리 기능(함수)이 독립적이었으나, OOP는 하나의 개념(Class)으로 묶어 생각하기 때문에 객체가 처리되는 기능을 자연스럽게 정의할 수 있음

- 추상적인 개념인 Class를 실제로 사용하려면 객체로 만들어야 함: 개념의 구체화

- OOP의 장점

    1) 클래스 구조를 잘 설계하면 라이브러리 형태로 재사용이 쉬움: 생산성 향상

    2) 실생활에 존재하는 개념을 프로그램으로 구현 가능: 자연적인 모델링

    3) 클래스 상속개념 덕에 프로그래밍 자체의 재사용성 극대화: 재사용성 증가

    4) 타 기능을 수정하더라도 각 클래스가 다르게 구현되어 타 클래스에 미치는 영향력이 적음: 유지보수 용이성 증가

- OOP의 특징

    1. 상속(Inheritance): 클래스는 개념의 추상화. 해당 개념을 계승하는 하위 개념을 만들 수 있음. 이 때 상위 개념 클래스를 superclass, 하위 개념 클래스를 subclass라 함. 상속 시에는 모든 개념을 이어받기 때문에 class variable(정보를 나타내는 변수), class method(특징을 나타내는 기능)도 받음

    2. 다형성(Polymorphism): 여러 하위 클래스가 같은 class method를 상속받은 경우, 같은 기능도 다르게 구현될 수 있음. 하나의 기능을 나타내는 개념이 실제 구현에서 다양한 형태로 표현 가능한 것을 Polymorphism, 이를 구현하게 해주는 기능을 Method Overriding이라 함.

    3. 추상화(Abstraction): Class 내부의 기능, 변수들을 직접 보지 않아도 개념상 사용할 수 있다는 것.

    4. 은닉화(Encapsulation): class variable과 class method가 단일 개념으로 구성되어 사용자가 개념 구현 시 혼선이 없고 심플하게 사용할 수 있다는 것. 은닉화가 잘 된 경우 class 내부 구현 코드를 보지 않아도 데이터와 기능을 사용하는 데에 문제가 없어짐. 리스트 등의 내부 구현 코드를 보지 않아도 개념적으로 이해, 사용할 수 있는 이유.

 

Class: OOP에서 구현하려는 개념을 추상화한 코드 탬플릿. 이를 통해 구현하려는 개념을 객체형태로 만들 수 있음

- 구현 대상의 특성을 class variable, 대상이 수행할 일을 class method로 구현

- 생성자(Constructor)로 객체를 찍어낼 틀을 정의할 수 있음:: class 내에서 __init__() 함수로 구현

- 구현된 객체는 self라는 자체 변수를 가지는데, 이는 객체 자기 자신을 지칭함. 모든 객체는 self를 통해 자기 자신을 구분. class method또한 self로 객체를 구분하며, self 또한 class variable로 하나의 class 내에서 통용됨

- class는 재사용성을 고려해 디자인되어야 함

- class 구현 시 제일 중요한 포인트는 어떤 특성과 기능을 구현할 것인가

 

데이터 분석 라이브러리

Numpy: NUMerical PYthon.

- 최적화된 C code로 구현되어 있고, 수치연산의 안정성이 보장되어 있으며(numerical stable), N차원 실수값(N개 실수로 이루어진 벡터) 연산에 최적화되어있음

데이터는 벡터로 표현되며 데이터 분석 또한 벡터 연산: 빠른 벡터 연산에 최적화되어 있기 때문에 사용

- (native)파이썬은 수치 연산에 매우 약해 실수값 연산에 오류가 생길 수 있음-> ML 성능 저하

- numpy array: numpy에서 사용되는 기본 자료구조. C언어의 array 구조와 동일.

    - 특징: array 선언 이후 크기 변경 불가, 모든 원소의 데이터 타입이 동일해야 함, indexing으로 원소 접근 가능, 생성 후 assignment operator로 원소 update 가능

    - 원소 크기 조절이 가능하며, 크기에 따라 표현 가능한 수치 범위가 정해짐(np.int8이라면 수치 표현에 8비트를 사용한다는 뜻으로, 2⁸개의 숫자 표현 가능: -128부터 127까지 256개의 숫자)

 

Pandas

- 정형 데이터를 DataFrame형태로 표현, 데이터 조작(indexing, filtering, concatenating...)이 가능하도록 함

- 내부 구조 디폴트가 numpy array: 벡터 연산에 최적화되어있음

- 테이블 형태의 데이터 분석에 최적화된 라이브러리로, 다양한 정형 데이터를 통합해 관리할 수 있고(json, csv, sql 등을 모두 df로 표현 가능) 엑셀의 연산기능이 거의 다 제공되기 때문에 사용

- pandas DataFrame: 판다스가 사용하는 기본 자료구조. 2차원 테이블 형태(Series는 1차원으로, 하나의 로우나 컬럼)

    - 특징: 인덱스, 컬럼, 값이라는 객체변수를 가짐. 한 컬럼을 기준으로 모든 원소의 dtype이 동일해야 함. numpy array의 상위호환 개념이므로 universal function 사용 가능(가령, df + 3하면 모든 (수치)밸류 값에 3이 더해져 나오는 식임)

 

Matplotlib

- 파이썬 오픈소스 라이브러리 중 가장 널리 사용되는 시각화 라이브러리. matlab의 기능들을 파이썬에서 가져오는 것에서 시작.

- figure라는 도화지에 component들을 얹어 그래프를 완성하는 식으로 구현함

- 크게 pyplot으로 구현하는 방법과 OOP-style로 구현하는 방법 두 가지가 있으며, pyplot은 간략하고 빠르게 OOP-style은 디테일하게 그래프를 그릴 수 있음.

 

Seaborn

- numpy와 pandas같은 파이썬 라이브러리들을 편하게 시각화하는 것을 중점으로 디자인 된 라이브러리. DataFrame을 직접적으로 지원하기 때문에 훨씬 편리한 데이터 시각화가 가능함.

- matplotlib기반으로 만들어져 matplotlib의 개념들을 확장해 사용할 수 있으며, 기본 plot이 다양해 EDA에 유용함 

'STUDY' 카테고리의 다른 글

Newzoo PC & Console 게이밍 리포트 2023  (0) 2023.03.28
취준로그 ver1.0  (3) 2023.03.24
취준로그 ver0.9  (1) 2023.03.17
패스트캠퍼스 데이터분석 부트캠프 학습일지4  (1) 2023.03.17
취준로그 ver0.8  (3) 2023.03.10