[PYTHON] for 데이터 전처리

유가연·2022년 1월 30일
0

Python for Data Analysis

목록 보기
1/1
post-thumbnail

파일 다루기

파일 열기 : open()

open()의 기본 구조

open('파일명.확장자')

파일 닫기 : close()

close()의 기본 구조

파일명.close()

파일을 열었다면 닫아주는 것도 꼭! 필요하다

open과 close를 함께 사용한다면?

file = open('file.csv')
content = file.read()
file.close()

파일을 자동으로 닫는 방법

with open('file.csv') as file :
  content = file.read()

파일 줄 단위로 읽기

contents = []
with open('file.csv') as file :
  for line in file :
    contents.append(line)

파일의 모드

파일을 열 때 별도의 지정을 하지 않는 다면 읽기모드로 열림.

쓰기 모드

with open('file.csv', 'w') as file :
  file.write('Hello')

문자열 함수

문자열 첫 글자 : startswith()

startswith()의 기본구조

문자열.startswith('문자')

값은 True, False로 반환. 문자 한 개가 아닌 문자 여러개도 사용 가능함.

문자열 나누기 : split()

split()의 기본구조

문자열.split('문자')

문자열을 쪼개주는 함수. 공백을 넣을 경우 띄어쓰기 기준으로 분리. 분리된 문자열은 리스트의 원소로 저장됨.

공백이 있는 문자열을 그냥 나눴을 때와 공백으로 나눴을 때는 어떻게 다를까?

numbers = "  1 2 3  "

print(numbers.split())
>>> ['1', '2', '3']

print(numbers.split(' '))
>>> ['', '', '1', '', '2', '', '3', '', '']

대표적인 공백 문자

(1) ' ' : 빈칸(스페이스바)
(2) '\t' : Tab(Tab키)
(3) '\n' : Newline(엔터키)
(4) : 모든 공백 문자

리스트 값 추가 : append()

새로운 값을 추가할 때. 사실 리스트함수이지만 문자열에서 함께 살펴보자.

append()의 기본구조

리스트.append(원소)

가장 자주 쓰이는 방식

* 조건에 맞는 값들만 새로 리스트로 반환하고 싶을 때

numbers = [1, 2, 10, 17]
small_numbers = []

for num in numbers :
  if num < 10 :
    small_numbers.append(num)

대문자, 소문자 변경 : lower(), upper()

대소문자를 변환해주는 함수. lower는 소문자로, upper는 대문자로 변환. 원래의 문자열을 직접 수정하지는 않고 실행했을 때 그 값을 변환해서 보여줌. 따라서 바뀐 값을 활용하기 위해서는 값에 넣어줘야 함.

lower의 기본구조

문자열.lower()
문자열.upper()

문자 바꾸기 : replace()

문자의 값을 바꿔주는 함수.

replace()의 기본구조

문자열.replace('바꾸고 싶은 문자', '바꿀 문자')

특정 문자를 찾아서 없애버리는 것도 가능한데 이 때는 문자열.replace('없애고 싶은 문자', '') 로 사용하면 됨.

문자열 함수는 값을 바꿔주는 것이 아니라 새로운 값을 보여줄 뿐이어서 실제 활용하기 위해서는 꼭 변수에 값을 다시 넣어주는 과정이 필요하다는 것을 명심해야함!

데이터 구조 : 리스트

for 반복문

for, in을 사용하여 리스트의 원소를 하나씩 가져온다.

for문의 기본 구조

for 변수 in 리스트(또는 튜플, 문자열) :
  수행할 문장1
  수행할 문장2
  ...

✔ 함께 알아두면 좋은 함수 : range

숫자 리스트를 자동으로 만들어주는 함수. range(n)의 경우 0부터 n-1까지, range(n,m)의 경우 n부터 m-1까지의 숫자를 갖는다.

for num in range(10) :
  print(num)
fruits = ["사과", "바나나", "키위"]

for i in range(len(fruits)) :
  print("과일" + str(i+1) + ":" + fruits[i])

인덱싱

리스트, 문자열에서 사용되며 순서가 있는 자료구조에서 해당 원소가 몇 번째인지를 나타낸다.

인덱싱의 기본 구조

a = "Life is too short, You need Python"

a[n]
a[-m]

마이너스 기호를 사용할 경우 뒤에서 부터 위치를 읽기 시작한다. 즉, -m은 뒤에서부터 세어 m 번째가 되는 문자를 의미한다.

슬라이싱

리스트, 문자열에서 사용되며 순서가 있는 자료구조에서 원소들을 순서로 잘라낼 때 사용한다.

슬라이싱의 기본 구조

a = "Life is too short, You need Python"
a[n:m]

a 문자열에서 자리 번호 n번부터 m까지의 문자를 뽑아낸다. 이 때 주의해야 할 점은 m, 끝번호에 해당하는 문자열은 뽑아내지 않는다. 해당 슬라이싱 식을 수식으로 나타내면 n <= a < m 이다.

정렬 : sorted

sorted의 기본구조

sorted(정렬하고자 하는 리스트, key = 함수(정렬 기준), reverse = True|False)

아무것도 넣지 않는 경우 기본 정렬 함수, 숫자의 경우는 작은 것부터 순서대로 정렬. 어떤 이터러블 객체도 받을 수 있음. 영어의 경우 알파벳 순서로 정렬. key에는 abs(절댓값 기준 정렬) 및 len(길이 기준 정렬), 사용자 정의 함수가 들어올 수 있음. sorted(리스트, reverse = True) 를 사용하면 내림차순으로 정렬.

sort와 sorted의 차이점은?
sort는 원본 자체를 변경하며 리스트.sort()로 사용한다. sorted는 원본은 유지하고 정렬의 새로운 리스트를 반환.

리스트로 리스트 만들기 : list comprehension

코딩은 기본적으로 작성할 때 보기 쉽게 작성하는 것이 좋기 때문에 기존 여러줄로 작성하는 것이 훨씬 편하다면 굳이 이 방식을 사용할 필요는 없음.

list comprehension의 기본구조

[표현식 for 항목 in 반복 가능 객체]

실제로 비교해보기

* for문 사용
a = [1, 2, 3, 4]
result = []
for num in a :
  result.append(num*3)
  
* list comprehension 사용
a = [1, 2, 3, 4]
result = [num*3 for num in a]

list comprehension에 조건을 추가한 경우의 기본구조

[표현식 for 항목 in 반복 가능 객체 if 조건]

하지만 이런 경우에는 원래보다 보기 어려워지는 경우가 많아서 잘 사용하지는 않는 것 같음.

데이터 구조 : 튜플

리스트와 비슷하게 순서가 있는 원소들의 집합. 하지만 리스트와 달리 각 원소의 값을 수정할 수 없고 개수또한 바꿀 수 없음.

튜플의 기본구조

love = ('가연', '상현')

따라서 리스트처럼 love[0] love.append('옹성우') 같은 방법은 불가능함.

--
upload : 2022.01.30
1st update : 2022.02.14 🍫


profile
유가연

0개의 댓글

관련 채용 정보