Python 기초2

UICHEOL_HWANG·2023년 8월 7일

파이썬기초

목록 보기
2/12

Review

데이터 분석을 할 때 웹에서 가져오는 데이터는 기본적으로 문자열 형태가 많음

문자열을 얼마나 잘 다루느냐 == 데이터 전처리 속도를 좌우 함


1. 문자열 사용하기의 기본


' ' 따옴표 안에 문자을 넣는다. 큰따옴표 작은따옴표 모두 가능


자주 쓰는 이스케이프 문자 \n(줄바꿈), \t(탭), \r(캐리지리턴-줄 맨 왼쪽으로 커서이동)

인덱스와 문자열


문자열은 여러개의 문자가 줄을 선 것과 같이 이어진 글자의 모음이므로 왼쪽부터 번호를 매길 수 있음

인덱스를 활용한 문자열 슬라이싱


위의 인덱스를 활용하면 문자열이 일부분만 잘라서 가져오는 슬라이싱이 가능합니다.

2. 문자열 함수


문자열을 조작하는데는 활용되는 여러가지 함수가 있습니다. 이 함수들을 잘 사용해야 데이터 전처리를 효과적으로 할 수 있습니다. 특히 .split(), .join(), .strip() 등의 함수들을 잘 익혀두시기 바랍니다.


1) 문자열 바꾸기


.replace(a,b) a를 찾아 b로 바꿈 단, 원본은 바꾸지 않기 때문에 따로 저장 필요

2) 문자바꾸기

str.maketrans('바꿀문자','새문자', '추가로 없앨문자') 로 변환테이블 생성 후 translate로 문자를 찾아 바꿈


range 함수와 list 형변환을 이용하여 리스트 만들기

  • range(시작번호 , 끝번호 + 1, 증가량)
d = list(range(1,101,3)) # 1부터 100까지 숫자 중 3씩 건너뛰면서 만들어줘 
d
e = list(range(3,101,3))

🧨sep! 옵션

프린트 출력시 구분단위이다

f = 10 
g = 20 
h = 30

print(f,g,h,sep=',')
10,20,30

(,) 콤마로 구분되어 출력이 된다.

또한 end 옵션이 가능하다

🧨end! 옵션

print(f,end='\t')
print(g,end='\t')
print(h,end='\t')
10	20	30

결과들끼리의 간격이 늘어난다 tab~ 같은 느낌


append()

  • list에 자료를 추가하는 함수
  • 자료는 어떤것을 넣든 상관은 없지만 가장 끝에 붙는다
c = [10,20,30]
c
[10, 20, 30]
c.append(50)
c
[10, 20, 30, 50]

insert()

  • list의 특정 index에 자료를 추가
  • insert(넣고싶은 index,무엇을 넣을지?)
c.insert(3,40)
c
[10, 20, 30, 40, 50, 50]
  • 삽입된 자료 뒤의 자료는 인덱스가 뒤로 밀리게 된다.

extend()

  • list뒤에 다른 list의 자료만 추가하는 함수

append와 비교

c = [10,20,30]
d  = [200,300,400,500]
c.append(d) 
[10,20,30,[200,300,400,500]] 

c.extend(d)
[10,20,30,[200,300,400,500],200,300,400,500]] 

append는 리스트를 통째로 추가해주고

extend는 리스트 안의 자료들을 넣어준다


🧤리스트의 삭제

  • 리스트 내부의 자료를 한 개 삭제 할 때
  • 리스트는 항상 인덱스로 접근한다
del 변수명[인덱스]
.pop() # 마지막 인덱스를 출력 후 삭제해줌 

.pop() : 리스트의 가장 마지막 데이터를 출력 후 삭제

.pop(변수의 인덱스 번호) 로도 추출하여 삭제 시킬 수 있다.

remove()

  • .remove(리스트 안의 값)
  • remove는 리스트 내의 중복 자료가 있을 경우 앞 쪽 자료만 삭제된다.

clear()

  • 리스트 내부의 자료를 모두 삭제 시킴
  • 변수 자체는 삭제시키지는 못함

index()

  • list에서 특정 값의 인덱스를 구하기
  • .index(찾을값 , 시작번호, 인덱스 끝번호)

count()

  • list 안에서 원하는 값이 몇 개 있는지 찾아줌

list 정렬하는 방법

  • .sort() : default 가 오름차순 - 작은숫자 -> 큰 숫자
  • .sort(reverse = True) : 내림차순 - 큰 숫자 -> 작은 숫자
  • 실행 하자마자 원본에 재할당 (덮어쓰기가 됨) reverse와 비슷하니 조심

내장함수의 문제점

자동 할당으로 인해 실수 한 번이면 되돌릴 수 없는 부분들이 굉장히 큼

그 부분을 해결


sorted()

  • sorted(변수명)
  • 변수의 재할당(덮어쓰기) 없이 오름차순으로 정렬 된 결과를 보여줌

리스트 튜플, 문자열의 공통점

  • 순서가 있고 연속된 값이 들어있다.
  • 이러한 연속적인 자료형을 시퀀스 자료형이라고 한다. (시퀀스 객체라고도 함)
  • 시퀀스 객체 : list , tuple , string , range() 자료형

1. 특정 값이 스퀀스 객체 내에 있는지 확인하기 .

: in 시퀀스 객체 (list,tuple,string,range())

7 in a
True
s = '우리는 오늘 삼복 더위에서 파이썬을 공부 하고 있습니다.'
'삼복' in s
True 

2. 특정 값이 없는지 확인 하기

값 not in 시퀀스 객체

'삼계탕' not in s 
True

3. 시퀀스 객체 연결하기

  • '+' 연산자로 연결이 가능하다.
  • 단 , range는 불가능 하다.
a = list(range(10))
b = list(range(10,20))
print(a,b)
# a,b를 더하려면 원래는 extend를 써야하지만 
c = a+b
c
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

4. 시퀀스 객체 반복하기 : * 연산자 사용

  • range()는 불가

5. 시퀀스 객체의 길이를 구하는 함수 : len()

6. 시퀀스 자료형에서 자료 추가 삭제는 list만 가능하다

🎈 문자열을 인덱싱이 가능하지만 수정이 불가능하다


dictionary


딕셔너리(JSON) 사용하기

  • key : value 형태로 만들어진 자료형으로 반드시 key를 호출해야 value를 사용한다

2. 딕셔너리 key의 자료형

  • 문자열, 정수, 실수, 불린(True,False)
  • key로 올 수 없는 경우가 있는데 : list, 딕셔너리는 올수가 없음

3. 딕셔너리 값의 자료형

  • 딕셔너리 값에는 모든 자료형이 올 수 있다.
y = {'정수':100,'실수':13.5,'문자열':'문자열문자열','리스트':[1,2,3,4],
     '튜플':(5,6,7,8),'딕셔너리':{'key':'value'},'boolean':True}

4.빈 딕셔너리 만들기

  • d = {}
  • d = dict()

5. dict()로 딕셔너리 만들기

  • dict(key1 = value1 , key2 = value2) 형식으로 만들기
  • 주의할 점 : key 값에 '',""를 쓰면 안 된다.
  • 단점 : key 값에는 문자열로만 통일해서 넣을 수 있다 기존 {} 중괄호 내에서는 상관 없었지만 dict 내에서는 그게 불가능 하다는 것.

🎁부록

2) dict([(key1,value1),(key2,value2)])

  • 리스트 안에 (key,value)의 튜플을 나열해서 만든다
d2 = dict([('정수',100),('실수',13.5)])
d2

3) dict(zip([key1,key2,key3,value1,value2,value3~]))

형식으로 만들기

  • zip 함수를 사용하여 첫 번째 리스트 key로 두 번째 리스트를 value로 값을 매칭해서 합침

dict(zip(['문자열','리스트','튜플','딕셔너리','블린']))

dict(zip(['문자열','리스트','튜플','딕셔너리','블린']))

딕셔너리 key와 value 값을 삭제하기

  • del 변수명[key] : 삭제가능

딕셔너리에 key와 value를 추가

  • 변수명[추가할 Key] = 추가할 Value
profile
개발 취미로 하는 세일즈맨

0개의 댓글