파이썬 기초문법 1

ganadara·2022년 11월 7일
3

복습

목록 보기
42/49

새싹 인공지능 응용sw 개발자 양성 교육 프로그램 나예진 강사님 수업 정리 글입니다. (나예진 강사님 이메일: nayejin11@gmail.com)

목차
1. 숫자형 데이터 numeric data types
2. 연속형데이터 sequence types
2-1. 문자열(string)
2-2. 리스트(list)
2-3. 튜플(tuple)
3. 딕셔너리 dictionary
4. 집합 자료형 set
5. 불 자료형 bool

데이터 분석 플로우

  1. 데이터 수집
  2. 데이터 탐색
  3. 데이터 전처리
  4. 데이터 모델링
  • 데이터마이닝 data mining
    대용량의 데이터로부터 이들 데이터 내에 존재하는 관계, 패턴, 규칙 등을 탐색하고 모형화함으로써 유용한 지식을 추출하는 일련의 과정들

데이터 마이닝의 5단계

  1. sampling 단계(수집) - 전수조사, 표본으로 전체를 대표할 수 있는 자료들만 추출
  2. exploration 단계(탐색) - 데이터의 기본적인 정보 확인
  3. modification 단계(전처리) - 데이터 효율적인 사용을 위해 데이터 변환하는 단계
  4. modeling 단계(모델링) - 분석 모적에 따라 예측모형을 만드는 단계
  5. assessment 단계(검증)
  • row data 정제되지 않은 데이터
    column이 정확하게 정의되지 않은 것들을 비정형 데이터라고 한다. 데이터 분석은 일단 테이블 형식으로 만들고 분석해야 한다.
  1. 데이터의 출처와 주제에 대한 이해 - 어디서 생성되고 어떻게 수집된 것인지
  2. 데이터의 크기파악 - 데이터의 양이나 개수를 알아보는 단계
  3. 데이터의 구성 요소(=피처, column), 요소 = 변수
  • 피처의 속성 탐색 : 피처의 측정 가능한 정량적 속성을 정의
  • 탐색한 데이터의 시각화 : 데이터 시각화는 수치적 자료만 가지고는 파악하기 힘든 패턴이나 인사이틑 발견

파이썬 기초문법

변수

변수는 데이터를 담는 그릇
변수에 데이터를 저장할 때는 =를 사용한다. 이 때 =를 assignment operator라고 부른다.

1. 숫자형 데이터 numeric data typeds

integer(정수형) : 숫자형의 하나로 소수점이 없는 정수
float(실수형) : 숫자형의 하나로 소수점이 있는 실수
complex(복소수) : 실수와 허수의 합인 복소수

출력

s2 = """TO Be Great is
To Be Miunderstood.
-ralph Waldo Cmerson
"""
print(s2) # 변수 저장된 그대로 출력
s2 #₩ = 백슬래시 = 출력 입력하세요

-> 출력
TO Be Great is
To Be Miunderstood.
-ralph Waldo Cmerson

TO Be Great is\nTo Be Miunderstood.\n-ralph Waldo Cmerson\n

2. 연속성 데이터 sequence types

2-1.문자열(string)

문자, 단어 등으로 구성된 문자들의 집합(문자형은 문자를 다룰 수 있는 다양한 추가, 삽입, 수정, 삭제 기능을 제공

문자열 연산하기

#\n = new line
print("hellow\nworld")

-> 출력
hellow	world

#문자열 연산하기
s = "hello"
s1 ="world"

#가운데 빈칸을 넣을 때
s + ' ' + s1 


# 1) print former 사용
apple = "사과" ; count = 4
print("%s는 %d개 있다." %(apple, count)) #%s = string %d= double

# 2) str.format
print("{}는 {}개 있다.".format(apple, count))

# 3) f-string
print(f"{apple}는 {count}개 있다.")

-> 출력
사과는 4개 있다.

문자열 관련 함수들

#(영어) 대소문자 바꾸기 upper(), lower()
s = "hi"
s.upper()

d = "HI"
s.lower()

#문자 공백 지우기 strip()
s = " h i         "
s.strip()

#문자열 삽입 join()
"=".join("adcd")
-> a=d=c=d

#문자열 나누기 split()
s = "Life is too short."
s.split() #token
-> ['life', 'is', 'too', 'short.']

#문자열 바꾸기 replace()
s = "Life is too short."
#life를 this pencil로 바꿔봅시다
s.replace("Life", "THIS pencil")

#s.replace(" ", " ")
-> THIS pencil is too short.

2-2.리스트(list)

리스트를 사용하여 데이터를 묶어서 사용할 수 있으며 불필요하게 각 각의 변수를 생성하여 데이터를 하나씩 담아줘야하는 문제점을 개선함
리스트는 문자형처럼 인덱싱(indexing)과 슬라이싱(slicing)으로 사용 가능하며 수정, 삭제, 추가, 정렬, 뒤집기, 삽입 등 모두 가능

#리스트를 만드는 방법
L = [1, 2, 3]
L
-> [1, 2, 3]

#L의 첫번째 원소
L[0]
-> 1

#L의 마지막 원소 # - = 끝에서 , -1 = 끝에서 첫번 째
L[-1]
->3

#list 수정하기
L[2] = 1
L
->[1, 2, 1]

인덱싱(indexing)

문자열 안의 특정한 값을 뽑아내는 작업


#이중중첩
L2 = [1, [2, 3], 5]
L2
->[1, [2, 3], 5]

L2[1][0]
->2 = 2번째 원소인 리스트의 1번째 원소

슬라이싱(slicing)

a[시작번호 : 끝번호] : 자리번호 시작번호부터 끝번호까지 문자를 뽑아낸다는 뜻이다.

L = [1, 2, 3, 4, 5]
L[1:4]
-> [2, 3, 4]

L[:-1] #시작 index를 생략하면, 문자열의 처음부터 뽑아낸다.
#L[:-1] == L[:len(L)-1] == L[:5-1] == L[:4]
-> [1, 2, 3, 4]

L[-2:] #끝 index를 생햑하면, 문자열의 그 문자열의 끝까지 뽑아낸다.
-> [4, 5]

리스트에 원소 추가하기

#리스트에 원소 추가하기 APPEND()(***)
L = []
L.append(3)
L.append(2)
L.append(1)
L
-> [3, 2, 1]

# 리스트 원소 정렬하기 sort(), 엑셀에서의 필터
#sort()를 이용해 L을 정렬합니다.
L = [4, 3, 16]
L.sort() #ascending order
#L.sort(reverse=true) #descending order
L
-> [3, 4, 16]

#리스트 뒤집기(정렬X) reverse()
L = [1, 2, 3, 4, 5, 6]
L[::-1]
-> [6, 5, 4, 3, 2, 1]

#리스트에서 원소 제거하기 pop()
# L1 =  L.pop()
print(L1)
L2 = L.pop()
print(L2)

2-3.튜플(tuple)

튜플은 2가지 점을 제외하고는 전반적으로 리스트와 유사하며 차이점은 아래와 같은
리스트는 []를 사용하고, 튜플은 ()을 사용한다.
리스트는 생성 후에 변경가능하고(mutable)튜플은 생성 후에 변경이 불가능하다.

튜플안에 리스트 변경 가능
리스트안에 튜블 변경 불가능

t = (1, 2)
t
->(1, 2)

t[0] -> 1
t[-1] -> 2

t2 = ('a', 'b', ('a', 'b'))
t2
->('a', 'b', ('a', 'b'))

t2[:2]
-> ('a', 'b')

t = (1, 2)
t2 = (3, 4)
t + t2
->(1, 2, 3, 4)

t2 * 3
-> (3, 4, 3, 4, 3, 4)

len(t * 3)
-> 6

3. 딕셔너리 dictionary

자바스크립트에서 배열과 유사하기 key와 value를 갖고 있으며, 리스트와 같이 순차적인 index값을 요구하지 않고 key 값을 통해 value를 얻음
-> {key1:value1, key2:value2, key3:value3 ... }

파이썬에서 제공하는 사전 자료형은 key-value방법을 통해 저장한다.

딕셔너리를 만드는 방법

#사전을 만드는 방법
D = {}
type(D)
-> dict

#위에 나온 테이블 예시를 닥셔너리으로 만들어 봅니다.
D = {'John' : '0011' , 'Maria' : '1234'}
D['John']  #앞에 있는 것이 key - john, 뒤에 있는것이 value -0011
-> '0011'

#사전 D에 key가 'a'이고 value가 3인 원소를 추가하자
D['a'] = 4 #assignment를 할 때, key값이 없다면 key-value pair를 추가, 있다면, value를 수정
D
#비교, 리스트의 경우
#L = [1, 2, 3]
#L[0] = 4
#L
-> {'John': '0011', 'Maria': '1234', 'a': 4}


#key값이 이미 존재하는 경우에는 key값을 통한 indexing이 되며, key 값이 존재하지 않을 때는 assignment
D["b"]

딕션너리 관련 함수

사전을 만들 때 KEY는 중복이 있으면 절대 안 된다. 사전에서 KEY가 될 수 있는 DATATYPE은 immutable(불변)이어야 한다

사전 관련 함수 사전에 모든 ket값들 보기 keys()

D = {'name' : 'kim', 'phone' : '01012345678', 'birth' : '1234'}
D.keys()
-> dict_keys(['name', 'phone', 'birth'])

#사전의 모든 value들 보기 values()
D.values()
-> dict_values(['kim', '01012345678', '1234'])

#사전의 모든 key, value쌍 보기 items()
D.items()
->

#사전의 원소 가져오기 get()
#D['name']과 같다.
D.get('phone', 'seoul')
-> 01012345678

4. 집합 자료형 set

집합은 중복을 허용하지 않기 때문에 집합으로 변환시켰을 때 중복된 값은 제거됨
집합은 순서가 없기 때문에 저장된 값을 인덱싱으로 접근 불가
집합에서 인덱싱으로 저장된 값을 저장하기 위해서는 자료형을 리스트나 튜플로 변환 후 제어해야 함
집합은 교집합, 합집합, 차집합을 구하는 데 이용함

집합 형태는 index가 없다.

s = {1, 2, 3}
s, type(s)
-> ({1, 2, 3}, set)

집합의 연산

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}

#s1과 s2의 교집합
s1 & s2
-> {3, 4, 5}

s1. intersection(s2)
-> {3, 4, 5}

#합집합
s1 | s2
-> {1, 2, 3, 4, 5, 6, 7}

#차집합 : 공통된 원소를 빼는 것
s1 - s2
->{1, 2}

s2 - s1
-> {6, 7}

집합의 원소의 uniqueness를 활용하는 경우

L = [1,2, 3, 3, 4, 1, 2, 34, 5, 6, 1, 2]
print(len(set(L)))
set(L)
-> 7
{1, 2, 3, 4, 5, 6, 34}

# 집합 관련 함수 집합에 원소 하나 추가하기 add()
s = {1, 2, 3}
# s.union({4, 5})
s.update({4, 5}) #s. union({4,5}) 출력 결과는 같지만, 의미가 다르다.
s
-> {1, 2, 3}

#집합에서 원소 제거하기 remove()
s.remove(3)
s
->{1, 2, 4, 5}

5. 불 자료형 bool

불 자료형은 참(true)와 거짓(false)로 나타내는 자료형으로, 위 2가지 값만 가질 수 있음### in
사전에 해당 key 값이 존재하는 지 확인하기 in

in 이라는 operator는 사전뿐만 아니라 모든 연속형 데이터 타입에 사용할 수 있다.
사전의 경우에는 key값을 대상으로 하고, 리스트, 튜플, 집합, 문자열에 대해서는 해당 원소가 존재하는 지 찾아서 true/ false를 알려준다.

"phone" in D 
-> true

"major" in D
-> false
profile
DL 공부중

0개의 댓글