꼬꼬마 기획자(를 꿈꾸는)

#3. Google Colab을 이용한 파이썬 독학(반복문, list comprehension, 문자열, import) 본문

언어공부/파이썬

#3. Google Colab을 이용한 파이썬 독학(반복문, list comprehension, 문자열, import)

여그린🌳 2020. 11. 3. 18:59
반응형

 

출처: Google Colab

 

01 반복문

  • 반복해서 해야 할 일이 있을 때 사용함
  • "a = 1" 식의 단일 숫자가 아닌 list, dict, set과 같은 집합일 때 반복문이 사용 가능함
mylist = [1,2,3,4,5,6,7,8,9,10]

# 여기서 mylist에 있는 숫자들을 출력 할 때

print(mylist[0])
print(mylist[1])
...
print(mylist[9])

 

이런 식으로 노가다가 아닌, 반복문을 통해 간단하게 출력할 수 있음

반복문은 for와 in을 사용한다

 

 

| for문 구조

for a in mylist

for 하나씩 가져올 변수 in 리스트

👉 "리스트 안에 있는 변수를 하나씩 가져와 for(반복문)을 돌릴 것이다"

 

 

[for문을 이용해 숫자 출력하기]

mylist = [1,2,3,4,5,6,7,8,9,10]

# 여기서 mylist에 있는 숫자들을 반복문으로 출력 할 때

for a in mylist:
	print(a)
 
 # 결과값 1 2 3 ...10
 # a 안에 1이 들어가서 출력되고, 그다음 2가 들어가서 출력되고...10이 출력된 것

 

 

[for와 if문을 이용해 짝수만 출력하기]

#mylist에서 짝수만 출력하기
mylist = [1,2,3,4,5,6,7,8,9,10]


for i in mylist:
	if i % 2 == 0:
    	print(i)
 
 # 2,4,6,8,10
 # if i % 2 == 0 -> 2로 나눈 나머지가 0일 시

 

1.1 continue

continue구문을 쓰면 continue 밑의 로직은 skip 된다.

for i in mylist:
	if i % 2 == 1:
    	continue
    print(i)
    
 # 결과값 2, 4, 6, 8, 10
 # continue가 홀수 출력을 무시한 것
 # 2로 나눴을 때 나머지가 1이면 continue print(i) --> 2로 나눴을 떄 나머지가 1이면 print 무시해라

 

👉 원래 continue가 없으면 print(i)를 통해 나머지 1인 홀수들 출력해야 하는데, continue가 밑의 로직인 print(i)를 skip 해서 홀수들이 출력되지 않은 것.

 

 

1.2 break

말 그대로 break!🖐

반복문이 돌다가 stop 해 반복문을 종료하고 빠져나옴

# i가 7이상이면 break하기
mylist = [1,2,3,4,5,6,7,8,9,10]

for i in mylist:
	if i >=7:
    	break
    print(i)
 
 # 결과값 1,2,3,4,5,6
 # 7이상인 수에서 7을 만난 순간 바로 break걸림, 1~6까지의 숫자만 출력됨

 

**continue는 continue의 밑의 부분만 실행을 안 하게 되고, 나머지 것은 돌지만 break은 바로 종료됨

 

 

02 List Comprehension

  • List를 사용
  • for in 구조를 기본적으로 갖고 있음

 

[mylist에서 짝수의 수만 출력 후 짝수들로 list 만들고 싶을 때]

# mylist에서 짝수들만 추출 후 이를 다른 list로 만들고 싶을 때
mylist = [1,2,3,4,5,6,7,8,9,10]
even = []

for i in mylist:
	if i % 2 ==0:
    	even.append(i)
    print(even)
 
 # 결과값 [2,4,6,8,10]
 # even이라는 새로운 빈 list를 만들어 준다
 # 그리고 mylist 2로 나눴을 때 나머지가 0인 수들만 even이라는 list에 append한다(붙인다).

 

"list comprehension 조건 필터는,위의 긴 조건식을 한 줄에 해결해준다!"

# list comprehension을 이용해 짝수만 존재하는 list 만들기
mylist = [1,2,3,4,5,6,7,8,9,10]
even = [i for i in mylist if i % 2 ==0]
even

#결과값 [2,4,6,8,10]

 

| list comprehension 구조

even = [ i for i in mylist if i % 2 ==0 ]

(변수 / 반복문 / 조건문)

 

  • i : 새로 만드는 리스트에 담기는 변수(조건을 만들어줬을 때 변수) -> 변수
  • for i in mylist : mylist 하나하나 돌면서 그것을 i라는 변수에 넣어줘 -> 반복문
  • if i % 2 ==0 : 만일 i를 2로 나눠 나머지가 0이라면 -> 조건문

 

👉 mylist에 있는 변수(i)들을 하나하나 보고, 그것이 만약 짝수라면 새로 만드는 even 리스트에 i를 넣어줘

 

 

| list comprehension 만들기

[STEP 1] for문이 포함된 리스트 만들기

even = [for i in mylist]

 

[STEP 2] for문 앞에 i 쓰기

even = [i for i in mylist]

(for i in mylist에서 반복문이 돌면서 i 값이 return 되고, 이 변수를 다시 even 리스트에 넣어주는 원리)

 

[STEP 3] 조건 필터 걸기

even = [i for i in mylist if i % 2 ==0]

 


[응용 STEP] even 리스트의 모든 값에 2씩 더해주기+

mylist = [1,2,3,4,5,6,7,8,9,10]
even = [i+2 for i in mylist]
even

#결과값 [3,4,5,6,7,8,9,10,11,12]

 

1부터 10까지의 수로 이루어져 있는 mylist에 mylist 안에 있는 모든 수에 2씩 더한 것을 even이라는 리스트에 넣겠다.

mylist안에 있는 값들을(i) 가져오고 그것들에 2씩 더해 even에 넣겠다

 

 

03 문자열 다루기

텍스트 분석을 할 때도, 엑셀 파일을 다룰 때도 문자열은 잘 다룰 줄 알아야 함

문자열을 자유자재로 다룰 수 있을 때 데이터 분석이 편해진다

 

1.1 len() 문자의 길이 알기

a = 'banana'
len(a)

#결과값 6

a = 'banana cake'
len(a)

#결과값 11

a = '한글'
len(a)

#결과값 2

공백도 하나의 문자로 인식한다

 

 

 

1.2 split() 문장 쪼개기 

 

문장의 특정 규칙에 따라 쪼갤 때 사용함

split('어떤 기준으로 쪼갤지') 따옴표 사이에 기준을 넣어준다

ex) 고객 생년월일에서 생년만 자르기

#공백 기준으로 자르기
a = 'This is a pen'
a.split()

#결과값 ['This', 'is', 'a', 'pen']
#split()라고 치면 디폴트 값으로 공백기준 쪼개준다


# -(dash) 기준으로 자르기
a = 'This-is-a-pen'
a.split('-')
#결과값 ['This', 'is', 'a', 'pen']


#애초에 쪼개준 값을 다른 리스트에 넣어줘도 됨
aa = a.split('-')
aa
#결과값 ['This', 'is', 'a', 'pen']

 

 

 

1.3 upper(), lower() 대소문/소문자로 만들기 

 

ex) 회원가입 시, 고객들이 적은 대소문자 섞인 ID를 모두 소문자로 바꿔주기

#대문자로 만들기
a = 'My name is Richy'
a.upper()

#결과값 MY NAME IS RICHY


#소문자로 만들기
a = 'My name is Richy'
a.lower()

#결과값 my name is richy

 

 

 

1.4 startswith/endswith ~로 시작하는, ~로 끝나는

 

특히 이름은 같고 확장자만 다른 파일 가져올 때 확장자 확인에 많이 쓰임

ex) jpg확장자로 끝나는 파일 확인할 때

a = '01-sample.png'
b = '02-sample.jpg'
c = '03-sample.pdf'


#~로 시작하는지, ~로 끝나는지 True/False 형태로 알 수 있다
a.startswith('01')
#결과값 True

a.endswith('.jpg')
False

#jpg로 끝나는 파일 가져오기
for file in mylist:
	if file.endswith('jpg'):
    	print(file)
#결과값 02-sample.jpg

 

 

 

1.5 replace() 바꾸기

 

replace('바꿀 대상', '바꿔야 할 값') 

ex) 파일 이름 중에 png 확장자를 jpg로 바꿔주고 싶을 때

a = '01-sample.png'
a.replace('.png', '.jpg')

#결과값 '01-sample.jpg'


#그러나 이렇게 해도 a를 다시 출력하면 .png로 다시 나옴
#replace()를 써도 a의 원래 값은 그대로 나옴
a
#결과값 '01-sample.png'


#따라서 새로운 변수에 담아준다
new_a = a.replace('.png', '.jpg')
new_a

#결과값 '01-sample.jpg'

 

 

 

1.6 strip() 앞뒤 공백 제거하기

a = '  01-sample.png'
b = '01-sample.png'

a == b
#결과값 False
#컴퓨터는 공백도 count하기 때문에 a와 b를 다르다고 인식한다


a.strip()
#결과값 '01-sample.png'

a == b
#결과값 True
#a의 앞뒤 공백을 제거 후 b와 다시 비교하니 같다고 나옴

 

 

04 패키지와 import

모듈 : 함수들이 뭉쳐져 하나의 .py 파일 안에 이루어진 것(. py로 된 파일을 모듈이라 함)

패키지 : 여러 개의 모듈이 그룹화된 것, 모듈의 그룹 (=라이브러리)

 

ex) 내가 폴더를 하나 만들었고, 그 폴더 안에 비슷한 내용의 파일들을 모아둠 (마케팅, 인사, 재무 폴더 등...)

     마케팅 기법 파일들이 모아진 폴더 하나 -> 폴더는 모듈

     회사는 마케팅 파일, 인사 파일 등 모두 갖고 있음 -> 회사는 패키지

 

[형식] from 어딘가에서 import 어떤 패키지

 

출처: pythonstudy.xyz

 

 

왜 import를 하지?🧐

이미 다른 사람이 만들어 놓은 모듈을 쉽게 가져다가 쓰기 위해

 

 

import 하는 방법

ex) import pandas -> "pandas라는 모듈을 불러오겠다"

 

 

패키지 import 하는 방법

ex) from pandas import DataFrame -> "pandas라는 패키지로부터 DataFrame이라는 모듈을 불러오겠다."

     pandas.DataFrame -> "pandas에 있는 DataFrame을 사용하겠다." 

 

 

alias(별칭) 지어주기

패키지의 이름이 길기 때문에 보통 약어로 줄여 쓴다

이 같은 별칭은 global standard가 있고 코드를 다른 사람과 공유하는 경우가 많기 때문에 보편적인 별칭을 사용한다

 

ex) import pandas as pd

     pandas를 pd라고 부를 것이다, 이를 불러와라

 

 

[자주 사용하는 패키지]

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

numpy : 과학 계산을 위한 패키지

pandas : 데이터 분석을 할 때 가장 많이 쓰이는 패키지

matplotlib : 시각화를 위한 패키지

seaborn : 시각화를 위한 패키지(matplotlib을 더 쉽게 사용할 수 있도록 도와줌) 

 

 

 

반응형
Comments