나의개발일지(TIL)

[스파르타 내일배움캠프]4일차 -파이썬 라이브러리

development-1 2024. 10. 4. 21:00
 

인공지능을 위한 파이썬 라이브러리 1-3 [完]

인공지능을 위한 파이썬 라이브러리 2-3 [完]


 

 

 

 

 

판다스 란 ?

판다스는 파이썬에서 데이터를 쉽게 다룰수 있게 해주는 데이터 분석 라이브러리

데이터를 표형식으로 다루기 쉽게 만들어주고 ,  다양한 데이터 조작 기능을 제공한다.

라이브러리 보다 쉽게 이해할수 있는 예시인데 ,판다스는 표준 라이브러리가 아닌 외부라이브러리에 속한다

 

 

 

판다스를 어떻게 활용 할수있을까 ?

  • 데이터 분석
    통계분석, 트렌드파악, 데이터 시각화들 다양한 작업에 사용할수있다.
  • 데이터 전처리
    머신러닝 모델을 만들기 전에 , 데이터를 정리하고 변환하는 과정에서 필수.
    결측값 처리 , 이상치제거 , 데이터 변환등 다양한 작업 지원.
  • 비즈니스 인텔리전스
    고객 데이터 분석 , 판매 데이터 추적등 다양한 분석 작업에 활용
  • 금융데이터 분석
    주식 가격 데이터 , 경제 지표등 분석하는데 사용
  • 연구 및 학술 분석
    연구 데이터의 수집 , 정리 ,분석에 필수적으로 사용 .
    특히 사회과학 ,생명과학등 다양한 분야에서 데이터를 다루는 연구에 활용함.

 

Conda와 가상환경 설정하기

 

가상환경은 독립적으로 파이선 환경을 만드는것.

a를 1가상환경에 설치했다면 a를 제외한 나머지 환경에서는 1이 작동하지 않기 때문에 ,

여러 수업이나 프로젝트를 진행할때 가상환경을 사용하면 환경에대한 충돌없이 진행가능하다.

 

 

이후 강의는 아나콘다로 사용하며 , 홈페이지에서 쉽게 다운로드가능하다.

가상환경을 만들기 위해서는 아나콘다 내에서 제공하는 아나콘다 프롬포트를 실행시켜 설치한다.

 

 

 

프롬포트 창 앞에 (base)는 현재 활성화 되어있는 가상환경이다. 

가상 환경을 만들기 위해서는 conda create --name '가상환경이름' 을 작성후

실행시키면 자동으로 가상환경이  만들어진다

 

하지만 가상환경을 만들기만 하는게 아니라 내가 만든 가상환경을 활성화 시켜야하기에

다음 명령어가 필요한데 , conda activate '가상환경이름'을 작성후 실행시킨다.

 

 

그럼 이후에 앞에 (base)가 내가 활성화한 (myenv)로 바뀐걸 확인 할수있다.

이후 내가 생성한 가상환경 안에 판다스를 설치하기위해 conda install pandas 를 작성하면 쉽게 판다스를 
내 가상환경안에 설치할수있다.

(pip install pandas가 실행 되지 않는 경우가 있는데 콘다로 가상환경을 만들면

버전에따라 최초에는 콘다로 패키지로 설치줘야 그후 pip로 설치되는 경우가있다.

큰문제는 아니므로 , conda로 설치한다.)

이후에는 pip 가 정상 작동하는걸 확인할수있다.

 

이후 가상환경을 비활성화하기위해서는 conda deactivate 를 프롬포트창에서 실행 시키면 되고,

이후엔 다시 (base)로 바뀌어 있는걸 확인 할수있다.

 

가상환경을 쥬피터노트북과 연결하기

 

ipykernel을 설치하여야 하므로 pip install ipkernel을 실행시켜 설치 진행한다

 

python -m ipykernel install --user --name myenv --display-name "My Env"

를 실행시켜 가상환경을 쥬피터노트북에 연결하는데 

마지막 dispaly-name  부분은 쥬피터 내에서 내 가상환경이 어떻게 표시되는지 이름을 적는 곳으로,
이름으로 파악할수있게 쉽게 작성하는 것이 좋다.

 

이후 쥬피터 노트북에서 노트북을 생성하고 나면 내가 만든 가상환경이 연결되어있는걸 확인할수있고 쉽게 변경할수있다.

 

 

conda env list 가 있고 이 명령어를  실행시키면 사용가능한 가상환경을 확인할수있다.

 

 

 

 

이후 쥬피터노트북에서 import(특정 구문을 가지고오는 기능) pandas as(이름 바꾸기) pd로 실행시킨다

 

판다스나 넘파이 같이 별칭이 정해져 있는 것들이 있다 (판다스 = pd 넘파이 =np)

 

 

 

시리즈와 데이터 프레임 개념 잡기

  • 시리즈
    단일 열을 나타내는 1차원 데이터구조, 데이터프레임의 구성 요소 중 하나.
    엑설의 한열이라고 생각하면 쉽고 , 인덱스와 데이터값이 쌍으로 구성된다.

 

시리즈와 데이터 프레임의 예시

 

 

시리즈 객체를 만들기 위해 pandas 안에 있는 Series를 클래스를 가져오는데 ,

기존에 사용하던 VSCode에서는 대소문자를 구분하지 않았지만 쥬피터에서는 대소문자 구분을 하는것 같다.

아무리 실행해도 오류가 나서 대소문자를 바꿔보니 실행이 되었다.

그리고 이번 예시에서는 지속적으로 만들어낸 시리즈 객체를 사용하기위해 sample이란 변수에 저장해준다.

 

 

이후 위의 사진 예시처럼 시리즈는 인덱스와 값으로 이루어져 있기 때문에 ,

앞에는 값 (value), 뒤에는 인덱스(index)값을 리스트로 구성하여 명령어를 실행하면 

다음과 같이 실행되는걸 확인 할수있다.

(시리즈는 리스트 뿐만 아니라 다양한 컬렉션으로도 입력이 가능하다는걸 확인했고,

데이터 타입도 숫자형 뿐만 아니라 문자열이 가능한것도 확인하였다.)

 

 

이후 인덱스를 가지고 쉽게 값에 접근 할수있다.

딕셔너리와 비슷하게 활용 할수있다.

 

  • 데이터프레임 (dataFrame)
    판다스의 핵심 자료 구조, 엑셀처럼 행과 열로 구성된 2차원 데이터 구조.
  • 여러 개의 시리즈가 모여서 만들어 진다.

 

 

 

data라는 변수 안에 딕셔너리 형태의 값을 입력하고 

pd.DataFrame에 넣어준다.

데이터프레임을 만들기위해선 딕셔너리를 전달하는게 첫번째 방법이다.

 

이후 df를 실행하면,

이렇게 테이블 형식으로 만들어져 실행 되는걸 확인 할수있다. 

위 실행값에서 이름,나이,직업은 컬럼 명이고, 컬럼 명으로 검색할수있는데

 

인덱스는 시리즈나 데이터프레임에 각 값을 고유하게 식별해주는 고유 레이블이다.

인덱스는 따로 지정하지 않으면 정수로 표현되며,

 

위 예시처럼 따로 인덱스를 설정하지 않고 set_index를 통해 기존의 컬럼을 인덱스로 설정하는 방법도 가능하다.

여기서 inplace를 넣는 이유는 현재 우리가 접근하고 있는
데이터프레임 객체의 값이 직접 바뀐다.(.sort와 비슷한 개념인듯)

inplace를 넣지 않으면 그때의 반환값만 변경되어 보여진다.

 


Numpy 소개 및 리스트와의 차이점 및 배열(array) 생성

 

numpy는 과학 수학 계산에 강력한 기능을 제공하는 파이썬 라이브러리이다.

데이터 분석 , 머신러닝 ,딥러닝에서 기초가 되는 라이브러리로 판다스와 함게 자주 사용한다.

 

방식은 판다스와 동일 가상환경을 가지고 오고 이후 넘파이를 불러오는데 별칭은 np로 설정.

 

 

기존 컬렉션 리스트를 사용 했을땐 각 값에 10을 더하는데에 있어서 여러가지 방법을 진행했지만,

원하는 값이 반환되지 않거나 , enumerate를 사용해서 어려운 수식을 작성해야 했지만,

넘파이를 사용하면 이렇게 간단한 명령어 작성으로도 내가 원하는값을 도출해 낼수있다.

넘파이의 배열은 벡터화 연산이 가능하여, 반복문 없이 배열 전체에 연산을 적용할수있다.

 

Numpy 의 메서드 , 다양한 배열 및 기초 연사

 

넘파이 내에서 ndim , size, dtype,nbytes,reshape ,ravel,flatten 등의 사용.

dir(list)를 실행하면  ndarray 안의 메서드를 확인 할수있고 이것들을 제대로 사용하지 못한다면 

넘파이를 사용하는 의미가 크지 않기 때문에 중요한 부분.

 

 

 

다양한 배열

 

 

위 예시처럼 0과1,특정한 값,연속적인 값으로 채워지는 배열을 생성할수있다.

 

이 처럼 기본 사칙연산을 쉽게 진행 할수 있으며 , 각 배열간의 연산도 넘파이를 사용하면 쉽게 진행 할수있다.

 

****크기가 다른 배열을 연산하게 되면 오류가 발생한다 ****

 

 

배열의 인덱싱(indexing)과 슬라이싱(slicing)

인덱싱 - 배열의 특정 위치에 접근하는 방법.

슬라이싱- 배열의 일부분을 잘라내는 방법

다음과 같이 인덱싱과 슬라이싱을 진행할수있는데 리스트에서 진행하는 방식과 동일하다.

다차원 배열의 슬라이싱 방법

 

배열 연산 및 브로드캐스팅

기존의 배열 연산 방법으로는 배열의 크기가 다르면 연산이 이루어 지지 않았지만,

브로드캐스팅 기능은 크기가 다른 배열간의 연산도 가능하게 해준다.

하지만 조건이 존재 하는데

두 배열의 차원이 같거나 그렇지 않으면 작은 배열의 차원이 1이어야함

배열의 각 차원의 크기가 동일하거나 한 배열에서 해당차원에서 크기가 1이어야함.

 

다음 그림으로 이해하면 보다 쉽게 이해할수있다.

 

 

 

 

두개의 차이점은 사칙연산연산자는 파이썬의 내장 연산자 인데 

넘파이 함수를 사용하면 좀 더 다양한 추가기능을 지원한다.

따라서 복합적인 코드를 작성할때에는 넘파이의 함수를 통한 연산을 사용하는 것이 좋다.

 

 

기본 수학 함수와 통계 함수

 

 

 

 

오늘의 회고

금일에 팀별 주제를 발표하는 시간을 가졌는데, 다들 예제나 설명하는데 있어서 
나 보다 훨씬 수준들이 뛰어난걸 확인 할수있었다.

기존에 개발 지식이 있었던 분들인지, 아니면 나랑 똑같이 처음 접하지만

과제를 통해 성장한것인지는 모르겠지만

발표시 나오는 예제의 코드들을 확인하기도 벅찼고 사실 내용을 이해하는것도 많이 벅찼다

좀더 많이 노력해야 할거같다.

 

 

 

 

 

차원의 개념..??