본문 바로가기

파이썬 & 머신러닝과 딥러닝

파이썬 문법 보충, 데이터 분석 라이브러리

파이썬 문법 보충

자료구조

  • list [] : 중복값 허용
  • tuple () : 중복값 허용, 데이터 수정 불가
  • set {} : 중복값 없음(and로 교집합 만들기 가능), 데이터 수정 가능
  • dictionary { 'key1' : 'value1'}

 

함수

list(tuple1) -> 리스트 안에 튜플 넣기 가능

 

 .count()  -> 특정 문자 개수를 세어야하는 경우

 

input()  -> input() 함수는 디폴트로 str 데이터를 타입으로 받아옴

정수형은 int(input())으로 받아올 수 있는데

.split(' ')을 쓰는 경우는 int(input()) 뒤에 쓸 수 없음

 

enumerate -> 인덱스를 생성해주는 함수

: 반복 가능한 객체인 리스트, 튜플, 문자열 등에서 인덱스(배열로 따지면 a[ 여기 ]) 와

해당 위치에 있는 값을 동시에 생성해주는 함수

각 요소에 대한 인덱스를 0부터 시작하여 자동으로 생성해

 

 

zip() : 두 개 이상의 iterable 요소를 순서대로 짝지어 튜플로 생성하고, 튜플의 리스트를 반환

 

 

리스트 컴프리헨션

: 리스트를 생성할 때 조건문으로 생성할 수 있다

[ x for x in range(0, 8) ]

[ x for x in range(1, 11) if x % 2 == 0 ]

[ (x, y) for x in [1, 2, 3] for y in [ 'a', 'b', 'c' ] ]

-> (1, 'a') (1, 'b') (1, 'c') (2, 'a') (2, 'b') (2, 'c') (3, 'a') (3, 'b') (4, 'b')

[ random.randint(0, 5) for _ in range(5) ]

 


데이터 분석 라이브러리

  • numpy : 연속형, 수치형 자료 (과학/수학/통계 연산 수행)
  • pandas : 정형 데이터(excel, csv, sql, rdb..) 를 다룸
  • matplot : 연속형 데이터 시각화 라이브러리
  • seaborn : 정형데이터 통계분석 시각화 라이브러리
  • plotly : 정형데이터 동적 시각화 라이브러리
  • missingno : 결측치 패턴, 수, 시각화 라이브러리
  • scipy : 가설검정, 회귀분석, 시계열(응용통계) 라이브러리
  • scikit-learn : 정형데이터를 이용한 데이터 마이닝 라이브러리
  • tensorflow : 비정형데이터(이미지, 영상, 자연어) 라이브러리
  • keras : tenosrflow 기반 딥러닝 학습 라이브러리
  • pytorch : 비정형 데이터 관련 라이브러리
  • konlpy : 한국 자연어 처리 라이브러리

 

Numpy

정형데이터의 기본이 되는 형태 (현재는 비정형 데이터에 주로 쓰임)

import numpy as np

: Numpy 라이브러리를 'np' 라는 이름으로 불러옴

 

np.array() : 파이썬 리스트를 입력으로 받아 numpy 배열 생성

-> numpy 배열은 벡터화 연산을 지원하므로, 반복문 없이 연산 수헹 가능

 

차원에 따른 배열의 종류

ndim() : numpy 배열의 차원수를 나타냄

 

1. 스칼라 (Scalar) : 0차원 배열

-> 단일 값으로 이루어진 배열

ex) np.array(42).ndim

 

2. 벡터(Vector) : 1차원 배열

-> 일렬로 나열된 값들로 이루어진 배열

ex) np.array( [1, 2, 3] ).ndim

 

3. 행렬 (Matrix) : 2차원 배열

-> 행과 열로 이루어진 값들로 구성된 배열

ex) np.array( [1, 2, 3], [4, 5, 6] ).ndim

 

Numpy 배열의 함수들

.mean() : 평균

.max() : 최대값 .min() : 최소값

np.arange() : 주어진 범위 내에서 일정한 간격의 숫자를 생성하여 1차원 배열로 변환

ex) np.arange( 1, 20, 3 ) : 1부터 20까지 3의 간격으로 벡터 생성

np.linspace() : 주어진 시작점과 끝점 사이를 균등한 간격으로 나눈 순자들을 생성하여 배열로 반환

ex) np.linspace( 1, 10, 7 ): 1부터 10까지를 7개로 쪼개서 반환

 

매트릭스 인덱싱

data5 = np.array([ ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 't'] ])

data5[0] -> array(['a', 'b', 'c']) 첫번째 열 호출

data[ : , 0 ] -> 0번째 열 가져오기 [행, 열]

data5 = np.array(data5, dtype = '<U2') : data5 배열을 유니코드 문자열 데이터 타입으로 변환

-> dtype = '<U2' : numpy 배열의 데이터 타입을 최대 2글자의 유니코드 문자열로 지정

-> 배열의 각 요소를 문자열로 변환하고, 최대 길이를 지정하는데 사용

 

vertical stack

np.vstack() : numpy에서 수직(위 아래)으로 배열을 쌓아 새로운 배열을 만드는 함수

ex) np.vstack( [data7], [1, 2, 3] ) : data7 배열과 [1, 2, 3] 배열을 수직으로 결합

[1, 2, 3] 배열이 data7 배열 하단에 위치하는 것을 알 수 있다

 

horizontal stack

np.hstack() : numpy에서 수평(좌 우)으로 배열을 쌓아 새로운 배열을 만드는 함수

ex) np.hstack( [data7, [[1], [2]] ] ) : data7 배열과 [[1], [2]] 배열을 수평으로 결합

 

np.random.rand(2, 3) -> 2행 3열의 배열의 0과 1사이의 무작위 난수로 구성

np.reshape(3, 2) -> 기존 배열의 데이터를 유지하면서 배열의 형태를 새로운 차원으로 변경

 

매트릭스 값 확인

data11.sum(axis = 0) # 열단위 합

data11.sum(axis = 1) # 단위 합

 


 

Pandas

: 파이썬에서 데이터 조작과 분석을 위한 라이브러리

자료구조로 시리즈(Series), 데이터프레임(DataFrame) 이 있다

 

  • 시리즈(Series) : 인덱스와 값으로 구성된 1차원 배열 형태의 자료구조
  • 데이터프레임(DataFrame) : 행과 열로 구성된 2차원 테이블 형태의 자료구조 (여러개의 시리즈가 모여 구성됨)

시리즈의 특징

  • 인덱싱 : 각 데이터에 인덱스를 지정하여 레이블링된 데이터에 접근
  • 정렬 : 인덱스를 기준을 데이터를 정렬
  • 데이터 연산 : numpy 배열과 유사하게 벡터화 연산 지원
  • 결측치 처리 : 결측치 처리 기능이 내장되어 있음 (isna(), isnull())

 

데이터프레임 특징

  • 데이터 로딩 : 다양한 형식의 데이터 파일(csv, Excel, SQL)을 데이터프레임으로 로드
  • 데이터 정렬 : 특정 열을 기준으로 데이터를 정렬 (df.sort_values(by = 'column_name'))
  • 데이터 필터링 : df[ df[ 'column_name' ] > 10 ]
  • 데이터 분석과 처리 : 그룹화, 피벗 테이블, 결측치 처리
  • 데이터 시각화 : 판다스와 Matplotlib, Seaborn을 사용하여 데이터프레임을 시각
  • 그룹화 : 특정 기준에 따라 데이터를 그룹화 df.groupby('group_column')['value_column']
  • 피벗 테이블(pivot table) : 데이터를 재구조화하여 원하는 형태로 변형하는 과정, 요약 통계량 쉽게 확인 가능
  • 결측치 처리 : isna(), dropna(), fillna() 등을 사용항 결측치를 처리하고 데이터 완결성 유지

 

데이터프레임 DataFrame

세로로 나열된 데이터프레임 확인 가능



df.index : 데이터프레임의 행(row) 인덱스를 반환

df.columns : 데이터프레임의 열(column) 레이블 반환

df.values : 데이터프레임에 저장된 데이터를 2차원 넘파이 배열 형태로 변환

 

 

RangeIndex(start = 0, stop = 4, step = 1) : 인덱스 시작 0, 끝 4, 인덱스 사이의 간격 1

판다스의 Index는 행(row)을 식별하고 구별하는데 사용되는 레이블이나 숫자를 의미

-> 인덱스는 행에 대한 식별자 역할