반응형

**파이썬의 자료형

1.Data 의 분류 방법

1)수정 가능 여부

=>변경 가능(mutable) - 변수

=>변경 불가능(immutable) - 상수

=>Literal: 사용자가 직접 입력한 데이터

정수: 10

실수: 10.3

bool: True, False

복소수: 정수 +(-) 정수j

 

문자열: '문자열', "문자열", '''문자열''', """문자열"""

list: [데이터 나열]

tuple:(데이터 나열)

set: {데이터 나열}

dict:{key:data, key:data...}

 

데이터 없음:None

 

=>변수의 생성 및 수정 과 삭제

이름 = Literal, 연산식, 함수 등

영역 내에서 이름이 처음 등장하면 생성

영역 내에서 이름이 처음이 아니면 수정

영역은 동일한 들여쓰기이면 같은 영역

 

변수는 영역이 종료되면 소멸됩니다.

del(변수)를 이용해서 강제로 종료하는 것도 가능

 

2)데이터가 가리키고 있는 개수에 따른 분류

=>scala data: 1개의 데이터 - 분석의 대상이 아닙니다.

=>vector data: 0개 이상의 데이터 - 분석의 대상

=>scala data는 정수, 실수, 복소수, bool, 문자열(scala data가 되기도 하고 vector data),날짜

=>vector data는 문자열, list(array 라고도 합니다.), tuple, set, dict

 

3)형태에 따른 분류

=>정형 데이터: 테이블로 바로 변환이 가능한 데이터 - 관계형 데이터베이스에 존재 - 기술통계

=>비정형 데이터: 테이블로 바로 변환이 되지 않는 문자열이나 이미지 및 음성 데이터 같은 것들로

머신런닝을 적용할 때는 숫자로 변환해서 사용(이러한 작업을 인코딩 이라고 합니다.) - 거리

=>반정형 데이터: 초기 상태는 비정형 데이터처럼 보이지만 가공을 하면 정형 데이터로 변환할 수 있는 데이터로 json 이나 xml 데이터 등 - web 이나 기기로부터 직접 가져온 데이터

 

2.bool

=>True False 1개만 저장하는 자료형

=>0이 아닌 숫자나 None 이 아닌 집단 자료형의 데이터들도 True로 간주하고 0이나 None인 집단 자료형의 데이터는 False로 간주

=>bool을 숫자와 산술연산을 하면 True 1로 간주하고 False 0으로 간주해서 연산

=>강제로 bool로 만들고자 하는 경우에는 bool(데이터)

 

 

#bool 덧셈
b = True
result = b + 2 #b 1로 간주해서 1+2 = 3
print(result)

 

 

3.int

=>정수 자료형

=>다른 자료형을 정수로 변환하고자 할 때는 int(데이터)

정수로 된 문자열이면 정수로 변환되고 실수로 만들어진 문자열이면 에러가 발생

실수를 대입하면 소수 버림

 

f = '10.7'

x = float(f)

n = int(x) # n 10

 

4.float

=>실수 자료형

=>실수는 표현 못하는 숫자가 있습니다.

부정확합니다.

=>실수로 변경하고자 할 때는 float(데이터)

=>데이터를 읽었을 때 문자열로 읽어진 경우 숫자로 변환해야 하는 경우가 많기 때문에 변환방법을 숙지

 

5.sequential type(데이터를 순서대로 저장하는 자료형)

=>str, bytes, list, tuple

1)인덱싱

데이터[인덱싱]: 인덱싱 번째 데이터가 리턴, 음수를 사용하면 뒤에서부터

 

2)슬라이싱

=>데이터[시작위치:종료다음위치:간격] : 시작위치부터 종료다음위치 앞까지 간격단위로 리턴

=>종료위치를 생략하면

=>끝까지 간격을 생략하면 1

 

3)연결하기: 동일한 자료형끼리 +를 하면 연결

 

4)반복하기: 정수와 *

 

5)데이터 개수: len(데이터)

 

6)존재 여부 확인: in 연산자

 

6.str(문자열)

=>한 줄 문자열은 작은 따옴표 나 큰 따옴표로 묶으면 됨

=>여러 줄 문자열은 작은 따옴표나 큰 따옴표 3번으로 묶으면 됨

=>문자열은 수정할 수 없습니다.

문자열은 인덱싱이나 슬라이싱으로 데이터를 읽는 것만 가능하지 대입하는 것은 안됩니다.

 

1)제어문자 : \다음에 하나의 문자를 입력해서 특수한 기능 부여

\n : 줄바꿈

\t :

\', \"

\\: \

      파이썬에서는 윈도우더라도 디렉토리 기호는 / 사용이 가능

 

2)format 메소드

=>데이터에 서식을 지정해서 문자열을 생성하는 메소드

=>서식은 "{데이터의 인덱스:서식}".format(데이터) 로 지정

=>데이터의 개수는 제한이 없습니다.

 

7.bytes

=>바이트 배열

=>네트워크 나 파일의 내용을 읽거나 전송할 때 사용

원래 네트워크나 파일의 전송단위는 byte

이 기종 간에 데이터를 주고받을 때는 byte 단위로 데이터를 전송한 후 복원합니다.

=>문자열을 bytes 로 만들 때는 b'문자열'

=>bytes를 문자열로 만들 때는 decode(byte 배열)

 

8.list

=>데이터를 순서대로 저장한 자료구조

=>내부 데이터를 읽고 쓰는 것이 가능

1)생성

=>[데이터 나열]

=>list(__iter__가 구현된 객체): list로 변환

 

2)list 에 연산을 수행해서 새로운 list 만들기

[연산식 for 임시변수 in list] : list의 데이터를 임시변수에 대입한 후 연산을 수행해서 새로운 list 생성

 

3)조건식을 적용해서 새로운 list 만들기

[연산식 for 임시변수 in list if 조건]

 

4)함수에 대입할 때는 [ ]를 붙이지 않습니다.

 

#list에 연산을 해서 새로운 list 만들기

li = [10, 4, 9, 23, 26]

#데이터를 순차적으로 접근

for imsi in li:

    print(imsi, end='\t')

print()

#li의 요소들을 k에 하나씩 대입해서 3을 곱해서 새로운 list 생성

print([k*3 for k in li])

#필터링 - 짝수만 골라내기 - 텍스트 마이닝에서 많이 사용하는 문법

print([k for k in li if k % 2 == 0])

#함수에 사용할 때는 []를 생략

print(sum(k for k in li if k % 2 == 0))

 

li = ['겨울', '', '']

print([k for k in li if len(k) > 1])

 

 

li = [10,20,30,40,50]

t = li[0:3:1] #슬라이싱 - 복제가 됩니다.

#슬라이싱 데이터와 원본 데이터는 다른 데이터

print(t)

t[0] = 1000 #복제된 데이터를 수정해도 원본 데이터에는 아무런 영향이 없음

print(li)

 

5)append, insert, delete, reverse, sort, count - 매개변수로 대입된 데이터의 개수를 구해주는 메소드

등을 소유

 

6)list 안에 list 생성 가능

=>2차원 list - 이미지나 문자열 데이터를 읽어서 변형하면 이 구조

 

[[데이터], [데이터]....]

 

=>이미지는 바로 numpy ndarray로 바로 변환해서 사용하기 때문에 2차원  list로 만드는 경우는 드물지만 알아는 두어야 합니다.

머신러닝은 순수한 데이터만 가지고 작업을 수행합니다.

 

국어 영어

10   20

30   70

 

=> 저 데이터를 아래처럼 변경해야만 머신러닝에서 사용 가능

10   20

30   70

 

안녕하세요 반갑습니다.

어서오세요 환영합니다.

=>위와 같은 문장을 단어 별로 분해를 해주세요..

 

[[안녕하세요, 반갑습니다.], [어서오세요, 환영하세요]]

 

#2차원 list 인 경우 접근

li = [[100, 300], [400, 200]]

 

#행단위 접근

for imsi in li:

    for temp in imsi:

        print(temp, end='\t')

    print()

print()

 

#열단위 접근 - numpy pandas에는 T 라는 속성을 이용해서 행과 열을 switch

for i in range(0, len(li), 1):

    for j in range(0, len(li[i]), 1):

        print(li[j][i])

 

7.tuple

=>내부 데이터를 수정할 수 없도록 하고 순서대로 배치하는 데이터의 모임

1)생성

(데이터 나열)

1개일 때는 (데이터,)

 

2)각가의 데이터는 인덱싱을 이용해서 접근

 

3)tuple의 데이터는 분할해서 변수에 저장 가능

변수1, 변수2... = 튜플

=>튜플의 값들을 순서대로 변수1, 변수2 에 대입

 

4)함수가 여러 개의 데이터를 리턴해야 할 때 각각의 데이터가 서로 다른 의미를 갖고 모여서 하나를 이루어야 하는 경우 파이썬은 class tuple을 이용

tuple의 데이터를 각각의 의미를 갖는 변수에 대입해서 사용하는 경우가 많습니다.

 

#회귀분석을 하게되면 결과로 기울기와 절편의 값을 리턴합니다.

result = (4, 7) #이 상태면 result[0] 이 기울기, result[1]이 절편

 

slope, intercept = result #0번 데이터가 slope 1번 데이터가 intercept에 대입

print('기울기:', slope)

print('절편:', intercept)

8.dict

=>key value를 같이 저장

1)생성

{key:data, key:data....}

=>data scala 데이터면 하나의 행(Serise)을 만드는 것입니다.

=>data list 이면 테이블(DataFrame)을 만드는 것입니다.

 

2)데이터 접근

dict[key] 를 이용해서 하나 하나의 데이터에 접근

없는 key를 사용하면 에러가 납니다.

파이썬의 매개변수를 만들 때 **args 이런 형태로 만들면 내부적으로 dict 가 됩니다.

우리가 대입할 때는 이름=, 이름=...

실수로 필수 입력 내용을 주지 않으면 에러가 발생합니다.

 

#Key Error : 없는 key를 사용

dictionary = {'name':'park', 'num':1}

print(dictionary['num'])

print(dictionary['age'])

 

3)2개의 list를 가지고 생성

zip(key list, data list)

 

 

 

반응형

'Study > Python' 카테고리의 다른 글

python-13  (0) 2020.10.26
python-12  (0) 2020.10.26
python-11  (0) 2020.10.26
python-10  (0) 2020.10.26
Python-9  (0) 2020.09.12

+ Recent posts